Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I would like to be able to convert a single feature (or potentially many features) in an ArcGIS layer into Well Known Text (WKT) format during a geoprocessing operation using Python and ArcPy (no non-ArcPy modules). The purpose is to then pass the WKT on to SQL Server Spatial and do additional processing outside of the ArcGIS GP toolset. Is there a method for converting a ArcGIS geometry features to WKT via ArcPy?

I have already read the following, without finding what I am after:

There apparently used to be a tool called "Write Features To Text File" (which appears to be a Python script) that was in the Samples toolbox, but that toolbox was deprecated at version 10 and I cannot find a copy of the Samples Toolbox (I have v10.0) on my machine. If there are no current solutions, if someone could just point me to a copy of the sample, I would be totally fine with using that tool, too.

share|improve this question
add comment

4 Answers

up vote 13 down vote accepted

A da.searchcursor should work for you.

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

POINT Z (-119.53753379999995 49.854383300000052 303.14500000000407)

doc here: http://resources.arcgis.com/en/help/main/10.1/index.html#//002z0000001t000000

Note: SHAPE@JSON, SHAPE@WKB, and SHAPE@WKT tokens were made available at ArcGIS 10.1 Service Pack 1.

Or, if you're after the samples toolbox like you mentioned - its there, just deprecated. You can call into it with scripts still. If you need the actual toolbox you can use, its here on the old Model and Script Gallery

EDIT (extra example)...Because you asked so nicely: :)

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

It's just the same as a "select by attributes" type of query/expression. I have a field called "TYPE" and and a value 'a'.

share|improve this answer
    
+1 For including the example---would it be asking too much for a second one showing how the where_clause would be implemented? :) –  elrobis Apr 17 '13 at 22:00
    
While I unfortunately do not have access to 10.1 yet, I was ultimately able to update the Python script that you linked to. Thanks! –  RyanDalton Apr 18 '13 at 19:29
    
+1 for "POINT Z " it seems that the "POINT" do not support 3D in arcpy. –  geogeek Oct 10 '13 at 9:41
add comment

I'm not equipped to confirm this, but this page documenting SearchCursor (arcpy.da), discussing the field_names parameter, notes the following:

FROM ArcGIS Help 10.1 - SearchCursor (arcpy.da)

Additional information can be accessed using tokens (such as OID@) in place of field names:

SHAPE@WKT —The well-known text (WKT) representation for OGC geometry. It provides a portable representation of a geometry value as a text string

Note: SHAPE@JSON, SHAPE@WKB, and SHAPE@WKT tokens were made available at ArcGIS 10.1 Service Pack 1.

What do you think?

share|improve this answer
1  
+1 Also, I think @RyanDalton may be able to find Write Features to Text File here. –  PolyGeo Apr 17 '13 at 21:55
add comment

The Write Features to Text File tool can be found here.

There is a related ArcGIS Idea here that has attracted, in my opinion, perplexingly few votes.

share|improve this answer
add comment

Just adding this in case it's useful for someone...

# 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
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.