检索ArcGIS Desktop或QGIS中线形文件中每条线的起点和终点?


15

我有一个向量(折线)shapefile,我需要检索每条线的起点和终点(节点)并使用这些点创建一个shapefile。然后,我需要将基于点ID的每条线的起点和终点添加到折线的属性表中。

如何在ArcGIS Desktop或QGIS中以简单的方式做到这一点?


2
在ArcGIS中,如果您具有“高级”许可证,则可以将“数据管理工具箱”->“功能工具集”->“特征点到点”工具与“两端”选项一起使用。该行的所有属性都将保留。但是,您必须在原始线要素类中添加一个字段,并计算线上的要素ID,以将这些值保留在点中。如果行上还有另一个唯一值字段,则可以在运行该工具后加入并计算FID。最终选项将涉及使用“一对多”选项进行空间连接并删除具有不良属性的副本。
理查德·费尔赫斯特

这回答了你的问题了吗?“如何使用Python / arcpy检索起点和终点坐标?” gis.stackexchange.com/q/31684/8104
亚伦

我尝试了类似的方法,但是一路迷路了。我会尝试重做。最好的办法是创建一个宏来完成所有这些工作,以便以后任何人都可以执行相同的过程。干杯!
user51651 2015年

@RichardFairhurst方法,也可能建议将其作为答案。这就是我过去的做法
-bwp8nt

Answers:


8

这是GDAL的单线。此命令从具有选定属性的起始节点创建一个shapefile:

ogr2ogr -f "ESRI Shapefile" -dialect sqlite output.shp -sql "select ST_StartPoint(geometry), attribute_1, attribute_2, attribute_3 from input" input.shp

将ST_EndPoint用于端点。


非常感谢您!这也许可以完成工作,但是我正在寻找更简单的东西(可视化的东西),以便其他没有编程技能的人可以执行任务。
user51651 2015年

您在哪里编写该命令?
blue_chip

到命令行。在Linux上,使用普通外壳。在Windows上,请使用命令窗口,但请确保您的环境具有正确的路径。Osgeo4w Shell自动执行此操作。
user30184 '17


6

QGIS解决方案:只需使用字段计算器中的xat和yat,分别使用索引0(开始)和-1(结束),就可以提取线向量文件的开始和结束节点(坐标)。

xat(0)    
yat(0)
xat(-1)
yat(-1)

5

对于ArcGIS解决方案,我制作了一个地理处理工具来创建在线点。

您可以下载它,并在此处查看代码:在线上创建点

对于类型,您将要选择开始/结束点。这将创建一个新的点要素类,其中包含每个折线的起点和终点。

输出点要素类还将具有一个称为LineOID的字段,该字段记录从其创建的折线的OID。这样,您可以将属性数据重新加入。

这是您如何设置参数的屏幕截图:

在此处输入图片说明


这太棒了,伊恩!我将下载并测试它,并尽快给您反馈。我认为该工具将很方便地满足我的需求,并且将有助于更好地实现流程自动化!谢谢!
user51651 2015年

嗨,伊恩,Idk为什么但我无法让您的工具在ArcGIS 10.0或10.1中工作...我将其添加到工具箱中,但没有午餐... = /
user51651 2015年

@ user51651您是否收到错误消息?它不适用于10.0,但应适用于10.1及更高版本。如果进入“地理处理”菜单,然后进入“结果”。那里有消息吗?
ianbroad

3

要使用ArcGIS在属性表中添加端点的坐标,可以使用字段计算器(无需创建几何)。单击字段名称,字段计算器,然后在下面的单行中使用Python语法(带有X坐标的示例):

!shape.firstPoint.X!

!shape.lastPoint.X!

请注意,一切都在!!里面


这是一个很好的答案,我没有意识到这是可能的。在Field Calculator中对其进行快照可能会帮助不熟悉该任务的人。我认为您也可以使用M值来做到这一点?
bwp8nt

2

在QGIS中,使用“ 提取特定顶点”工具。将“ 顶点索引”设置为0以获取起点,将-1设置为终止点,或者将0,-1设置为两者。

QGIS提取特定顶点

注意说明:

第一个顶点对应的索引为0,第二个顶点的索引为1,依此类推。负索引可用于查找几何体末端的顶点,例如,索引-1对应于最后一个顶点,- 2对应倒数第二个顶点,依此类推。


1

在ArcGIS中,如果您具有“高级”许可证,则可以将“数据管理工具箱”->“功能工具集”->“特征点到点”工具与“两端”选项一起使用。该行的所有属性都将保留。但是,您必须在原始线要素类中添加一个字段,并计算线上的要素ID,以将这些值保留在点中。如果行上还有另一个唯一值字段,则可以在运行该工具后加入并计算FID。最终选项将涉及使用“一对多”选项进行空间连接并删除具有不良属性的副本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.