打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
等高线加密

在用高程点插值生成grid,或先用高程点构建tin,再转为grid的过程中,需要等高线作拦截,避免插值结果的穿透。在arcgis中,由高程点生成grid时是可以选择barrier line的,但发现选了这个选项,运算时间非常的长,我做过一个全省的数据,5天都没有算完,后来想了一个变通的方法。

就是把等高线打散成点,然后把这些点添加到高程点数据中,直接用点数据生成grid。但如果等高线的点不够密,穿透情况非常明显,所以要对等高线的点进行加密,下面是加密代码(VBA),基于的原理就是等高线是由多个IPath构成,不存在弧的问题,可以做均匀线性插值

'等高线加密

Public Sub PolylineInsert()

    Dim pMxDoc As IMxDocument

    Set pMxDoc = ThisDocument

   

    Dim pMap As IMap

    Set pMap = pMxDoc.FocusMap

   

    Dim pLayer1 As IFeatureLayer

    Set pLayer1 = pMap.Layer(0)

    Dim pFC1 As IFeatureClass

    Set pFC1 = pLayer1.FeatureClass

   

    Dim pF1 As IFeature, pF2 As IFeature

    Dim pFeatCursor1 As IFeatureCursor

    Set pFeatCursor1 = pFC1.Search(Nothing, False)

    Set pF1 = pFeatCursor1.NextFeature

   

    Dim pPointcol As IPointCollection

    Dim pPointcol1 As IPointCollection

    Dim pP As IPoint

    Dim i As Long, j As Long, k As Integer

    Dim pP1 As IPoint, pP2 As IPoint

    Dim dx As Double, dy As Double

   

    Do Until pF1 Is Nothing

        Set pPointcol1 = New Polyline

        Set pPointcol = pF1.Shape

        For i = 0 To pPointcol.PointCount - 2

            Set pP1 = pPointcol.Point(i)

            Set pP2 = pPointcol.Point(i + 1)

            pPointcol1.AddPoint pP1

            dx = (pP1.X - pP2.X) / 20

            dy = (pP1.Y - pP2.Y) / 20

            For k = 1 To 19

                Set pP = New Point

                pP.PutCoords pP1.X - k * dx, pP1.Y - k * dy

                pPointcol1.AddPoint pP

                Set pP = Nothing

            Next k

        Next i

        pPointcol1.AddPoint pP2

        Set pF1.Shape = pPointcol1

        pF1.Store

        Set pF1 = pFeatCursor1.NextFeature

    Loop

    MsgBox "ok"

End Sub

这个代码中,我是在等高线每两个角点插入19个点,大家可以把这个数值参数化

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Excel?VBA的封装,加密
(2)vb 读取 XML 文件 内容
ArcObject代码集锦
asp版 vbscript RSA公钥加密 / 私钥解密 / 私钥签名 / 公钥验签(支持中文)分段加密解密
[已解决]VBA筛选某列包含的数据复制到另一个表中去?
VBA编程问答(第2辑)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服