การแปลงรูปทรงเรขาคณิตเป็น WKT โดยใช้ ArcPy?


13

ฉันต้องการที่จะแปลงคุณสมบัติเดียว (หรือคุณสมบัติที่อาจเกิดขึ้นมากมาย) ในเลเยอร์ ArcGIS ในรูปแบบWell Known Text (WKT) ในระหว่างการดำเนินการประมวลผลทางภูมิศาสตร์โดยใช้ Python และ ArcPy (ไม่มีโมดูลที่ไม่ใช่ ArcPy) จุดประสงค์คือส่ง WKT ไปยัง SQL Server Spatial และทำการประมวลผลเพิ่มเติมนอกชุดเครื่องมือ ArcGIS GP มีวิธีการแปลงคุณสมบัติเรขาคณิตของ ArcGIS เป็น WKT ผ่าน ArcPy หรือไม่?

ฉันได้อ่านสิ่งต่อไปนี้โดยไม่พบสิ่งที่ฉันเป็นหลังจาก:

เห็นได้ชัดว่าเคยเป็นเครื่องมือที่เรียกว่า " คุณสมบัติการเขียนไปยังไฟล์ข้อความ " (ซึ่งดูเหมือนจะเป็นสคริปต์ Python) ที่อยู่ในกล่องเครื่องมือตัวอย่าง แต่กล่องเครื่องมือนั้นเลิกใช้งานในรุ่น 10และฉันไม่พบสำเนากล่องเครื่องมือตัวอย่าง ( ฉันมี v10.0) ในเครื่องของฉัน หากไม่มีวิธีแก้ปัญหาในปัจจุบันหากใครบางคนสามารถชี้ให้ฉันดูตัวอย่างได้ฉันก็คงจะใช้เครื่องมือนี้ได้อย่างสมบูรณ์

คำตอบ:


25

da.searchcursor ควรใช้งานได้สำหรับคุณ

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

POINT Z (-119.53753379999995 49.854383300000052 303.14500000000407)

เอกสารที่นี่: http://resources.arcgis.com/th/help/main/10.1/index.html#//002z0000001t000000

หมายเหตุ : SHAPE @ JSON, SHAPE @ WKB และโทเค็น SHAPE @ WKT นั้นมีให้ที่ ArcGIS 10.1 Service Pack 1

หรือถ้าคุณอยู่หลังกล่องเครื่องมือตัวอย่างอย่างที่คุณพูดถึงมันมีอยู่แล้วเลิกใช้แล้ว คุณสามารถโทรหามันโดยที่ยังคงสคริปต์ หากคุณต้องการกล่องเครื่องมือจริงที่คุณสามารถใช้ได้ที่นี่ในModel และ Script Galleryเก่า

แก้ไข (ตัวอย่างเพิ่มเติม) ... เพราะคุณถามอย่างดี: :)

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

+1 สำหรับ "POINT Z" ดูเหมือนว่า "POINT" ไม่รองรับ 3D ใน arcpy
geogeek

5

ฉันไม่ได้พร้อมที่จะยืนยันสิ่งนี้ แต่หน้าเอกสารSearchCursor (arcpy.da)นี้พูดคุยเกี่ยวกับfield_namesพารามิเตอร์บันทึกต่อไปนี้:

จากวิธีใช้ ArcGIS 10.1 - SearchCursor (arcpy.da)

ข้อมูลเพิ่มเติมสามารถเข้าถึงได้โดยใช้โทเค็น (เช่น OID @) แทนชื่อเขตข้อมูล:

SHAPE @ WKT— การนำเสนอข้อความ (WKT) ที่รู้จักกันดีสำหรับ OGC geometry มันมีการแสดงแบบพกพาของค่ารูปทรงเรขาคณิตเป็นสตริงข้อความ

หมายเหตุ: SHAPE @ JSON, SHAPE @ WKB และรูปร่าง @ WKTราชสกุลถูกทำใช้ได้ใน ArcGIS 10.1 Service Pack 1

คุณคิดอย่างไร?


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 ที่เกี่ยวข้องที่นี่ที่ดึงดูดความสนใจของฉันในความคิดของฉันโหวตน้อยงงงวย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.