Chuyển đổi hình học sang WKT bằng ArcPy?


13

Tôi muốn có thể chuyển đổi một tính năng (hoặc có khả năng nhiều tính năng) trong lớp ArcGIS sang định dạng Văn bản được biết đến (WKT) trong hoạt động xử lý địa lý bằng Python và ArcPy (không có mô-đun không phải ArcPy). Mục đích là sau đó chuyển WKT sang SQL Server Spatial và xử lý bổ sung bên ngoài bộ công cụ ArcGIS GP. Có phương pháp nào để chuyển đổi các tính năng hình học ArcGIS sang WKT thông qua ArcPy không?

Tôi đã đọc những điều sau đây, mà không tìm thấy những gì tôi đang theo sau:

Rõ ràng đã từng có một công cụ gọi là " Viết các tính năng vào tệp văn bản " (dường như là một tập lệnh Python) có trong hộp công cụ Samples, nhưng hộp công cụ đó không được dùng ở phiên bản 10 và tôi không thể tìm thấy bản sao của Hộp công cụ mẫu ( Tôi có v10.0) trên máy của mình. Nếu không có giải pháp hiện tại, nếu ai đó có thể chỉ cho tôi một bản sao của mẫu, tôi cũng sẽ hoàn toàn ổn khi sử dụng công cụ đó.

Câu trả lời:


25

Một da.searchcthon sẽ làm việc cho bạn.

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

ĐIỂM Z (-119.53753379999995 49.854383300000052 303.14500000000407)

tài liệu ở đây: http://resource.arcgis.com/en/help/main/10.1/index.html#//002z0000001t000000

Lưu ý : Mã thông báo SHAPE @ JSON, SHAPE @ WKB và SHAPE @ WKT đã được cung cấp tại ArcGIS 10.1 Gói dịch vụ 1.

Hoặc, nếu bạn đang theo hộp công cụ mẫu như bạn đã đề cập - nó ở đó, chỉ là không dùng nữa. Bạn có thể gọi nó với các kịch bản vẫn còn. Nếu bạn cần hộp công cụ thực tế bạn có thể sử dụng, nó ở đây trên Thư viện mẫu và tập lệnh

EDIT (ví dụ thêm) ... Bởi vì bạn đã hỏi rất hay: :)

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

Nó giống như kiểu truy vấn / biểu thức "chọn theo thuộc tính". Tôi có một trường gọi là "LOẠI" và giá trị 'a'.


+1 Để bao gồm ví dụ --- nó sẽ yêu cầu quá nhiều cho lần thứ hai cho biết cách where_clausethực hiện? :)
elrobis

Mặc dù tôi không may không có quyền truy cập 10.1 nhưng cuối cùng tôi đã có thể cập nhật tập lệnh Python mà bạn đã liên kết đến. Cảm ơn!
RyanKDalton

+1 cho "POINT Z" có vẻ như "POINT" không hỗ trợ 3D trong Arcpy.
geogeek

5

Tôi không được trang bị để xác nhận điều này, nhưng trang này ghi lại tài liệu SearchCursor (arcpy.da), thảo luận về field_namestham số, lưu ý những điều sau:

TỪ ArcGIS Trợ giúp 10.1 - SearchCoder (arcpy.da)

Thông tin bổ sung có thể được truy cập bằng cách sử dụng mã thông báo (chẳng hạn như OID @) thay cho tên trường:

SHAPE @ WKT Hiện đại diện văn bản (WKT) nổi tiếng cho hình học OGC. Nó cung cấp một biểu diễn di động của một giá trị hình học dưới dạng một chuỗi văn bản

Lưu ý: Mã thông báo SHAPE @ JSON, SHAPE @ WKB và SHAPE @ WKT đã được cung cấp tại ArcGIS 10.1 Gói dịch vụ 1 .

Bạn nghĩ sao?


1
+1 Ngoài ra, tôi nghĩ rằng @RyanDalton có thể tìm thấy Tính năng ghi vào tệp văn bản tại đây .
PolyGeo

4

Chỉ cần thêm điều này trong trường hợp nó hữu ích cho ai đó ...

# 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

Có thể tìm thấy công cụ Write Feature to Text File tại đây .

Có một ý tưởng ArcGIS liên quan ở đây đã thu hút, theo tôi, chỉ có vài phiếu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.