ArcGIS中,实现两点间连线

转载:ArcGIS中,一个点集里的点两两连线,比如有4个点,就连3+2+1=6条线

一、目标

  一个点集里的点两两连线,比如有4个点,则连3+2+1=6条线;有38个点,则连37+36+35+···+3+2+1=703条线,其原始坐标数据及最终样式类似于以下这种: 

→↓

二、总体思路

  使用arcgis中的XY To Line工具,如下图所

  其中,Start X Field、Start Y Field、End X Field、End Y Field分别为起点和终点的坐标值,Line Type为要构建的大地测量线的类型,包括GEODESIC(默认)、GREAT_CIRCLE、RHUMB_LINE、NORMAL_SECTION这四种构造方法,ID为输入表中的字段,此字段和坐标值包含在输出中,可用于将输出要素与输入表中的记录相连接。Spatial_Reference为空间参考。

  可以看到,要准备的数据是包含起点和终点坐标值、ID的一张表。

三、表数据准备

  (一)坐标值数据准备

  首先,是要将Start X、Start Y合并,为了便于区分,将StationName也合并到一个单元格。即在XYOld列中,即D2单元格输入“=A2&","&B2&","&C2”,并下拉至列尾;

  其次,将D列复制到E列(XYOldCopy);

  

  (二)坐标值排列组合

  对D列和E列进行排列组合。右键左下方sheet1名称(本例为PointstoTest)→查看代码→在弹出的对话框中粘贴如下代码:


  
  
  1. Sub 两列组合()
  2. 'EXCEL880.COM产品,2017-7-12
  3. Dim n1, n2, arr, brr, i, j, k
  4. n1 = [D65536]. End(xlUp).Row
  5. n2 = [E65536]. End(xlUp).Row
  6. arr = Range( "D2:D" & n1)
  7. brr = Range( "E2:E" & n2)
  8. ReDim crr( 1 To n1 * n2, 0)
  9. Dim dic
  10. Set dic = CreateObject( "scripting.dictionary")
  11. For i = 1 To UBound(arr)
  12. For j = i + 1 To UBound(brr)
  13. Key = arr(i, 1) & "," & brr(j, 1)
  14. 'If Not dic.Exists(Key) And Not dic.Exists(brr(i, 1) & "," & arr(j, 1)) Then
  15. '字典检测是否双向重复
  16. dic.Add Key, ""
  17. k = k + 1
  18. crr(k, 0) = Key
  19. 'End If
  20. Next
  21. Next
  22. [F2:F65536].Clear
  23. [F2].Resize(k) = crr
  24. End Sub

  点击弹出框上方的“运行”→“运行子过程/用户窗体”。截图如下

  对F列以","逗号为分隔符进行分列并将最终结果粘贴至新的表格,添加OIDMINE列用于XY To Line工具的ID输入字段,结果如下图所示:

  

四、在arcgis中使用XY To Line工具运行即可。

  在arcgis中,ArcToolbox→Data Management Tools→Features→XY To Line,并输入相应参数即可。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值