使用ArcPy将几何转换为WKT吗?


13

我希望能够在使用Python和ArcPy(无非ArcPy模块)的地理处理操作期间,将ArcGIS图层中的单个要素(或可能包含许多要素)转换为众所周知的文本(WKT)格式。目的是将WKT传递到SQL Server Spatial,并在ArcGIS GP工具集之外进行其他处理。是否有通过ArcPy将ArcGIS几何要素转换为WKT的方法?

我已经阅读了以下内容,但没有找到我想要的内容:

显然在Samples工具箱中曾经有一个名为“ 将功能写入文本文件 ”的工具(似乎是Python脚本),但是该工具箱在版本10弃用,我无法找到Samples工具箱的副本(我的机器上有v10.0)。如果没有当前的解决方案,如果有人可以将我指向样本的副本,那么使用该工具也可以。

Answers:


25

da.searchcursor应该为您工作。

for row in arcpy.da.SearchCursor("path2data", ["SHAPE@WKT"]):
  print row[0]

点Z(-119.53753379999995 49.854383300000052 303.14500000000407)

此处的文档:http : //resources.arcgis.com/en/help/main/10.1/index.html#//002z0000001t000000

注意:在ArcGIS 10.1 Service Pack 1中提供了SHAPE @ JSON,SHAPE @ WKB和SHAPE @ WKT令牌。

或者,如果您喜欢前面提到的示例工具箱,则不推荐使用。您仍然可以使用脚本调用它。如果需要实际的工具箱,可以在旧的“ 模型和脚本库”中找到

编辑(额外的例子)...因为你问得很好::)

for row in arcpy.da.SearchCursor("GPX_Layer", ["SHAPE@WKT"],where_clause="TYPE = 'a'"):
    print row[0]

它与查询/表达式的“按属性选择”类型相同。我有一个名为“ TYPE”的字段和一个值“ a”。


+1对于包括示例在内的问题,是否会要求太多来说明第二个示例将如何where_clause实施?:)
elrobis

不幸的是,尽管我还没有访问10.1的权限,但是我最终能够更新您链接到的Python脚本。谢谢!
RyanKDalton

对于“ POINT Z” +1,看来“ POINT”在arcpy中不支持3D。
geogeek

5

我没有能力确认这一点,但是此页面记录SearchCursor (arcpy.da)了该field_names参数,并讨论了以下内容:

从ArcGIS Help 10.1-SearchCursor(arcpy.da)

可以使用令牌(例如OID @)代替字段名来访问其他信息:

SHAPE @ WKT — OGC几何图形的众所周知的文本(WKT)表示形式。它以文本字符串的形式提供几何值的可移植表示形式

注意:在ArcGIS 10.1 Service Pack 1中提供了 SHAPE @ JSON,SHAPE @ WKB和SHAPE @ WKT令牌。

你怎么看?


1
+1另外,我认为@RyanDalton也许可以在此处找到将功能写入文本文件的功能。
PolyGeo

4

只是添加它以防对某人有用...

# Convert to WKT by field name (Shape)
file_path = 'C:\shapefile.shp'
query= arcpy.SearchCursor(file_path)
for row in query:
  the_geom=row.getValue('Shape') # Get Geometry field
  wkt = the_geom.WKT # Convert to WKT, can also use WKB, JSON etc

3

可以在此处找到“ 将功能写入文本文件”工具。

在我看来,这里有一个相关的ArcGIS Idea 吸引了很少的选票。

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.