Tính năng xoay trong ArcGIS cho máy tính để bàn bằng ArcPy? [đóng cửa]


10

Tôi có một loạt các đa giác mà tôi muốn xoay.

Mỗi đa giác có một góc xoay và điểm neo (tọa độ xy) được lưu trữ dưới dạng giá trị trường.

Khi nó xảy ra, tất cả các điểm neo nằm trên một đỉnh của đa giác.

Cách tốt nhất để làm điều này bằng ArcGIS cho Desktop và ArcPy là gì?

Tôi biết chúng ta có thể xoay chúng khi ở chế độ chỉnh sửa, nhưng tôi không muốn thực hiện tất cả bằng tay vì chúng đều khác nhau.

Tôi thích một câu trả lời của Python để tôi có thể tự động hóa nó và xây dựng nó thành luồng công việc của mình.


Đây không phải là điều mà tôi đã làm nhưng dường như bạn đang phải đối mặt với một vấn đề tương tự như đã thảo luận tại gis.stackexchange.com/questions/13383/ Lỗi
PolyGeo

Bạn có thể làm điều này với ArcObjects. Giải pháp lập trình sẽ được chấp nhận?
Jakub Sisak GeoGraphics

Là các tính năng của bạn trong tọa độ địa lý hoặc dự kiến?
blah238

Jakub - có, một giải pháp lập trình sẽ được ưa thích. Blah238 - tọa độ dự kiến ​​(NAD 83 UTM Vùng 10)
dklassen

1
Trong tập lệnh Python, phép tính tọa độ Y được xoay cần một dấu cộng (cộng) thay vì dấu trừ (trừ): y_transprime = Sin (t) * x_trans + Cos (t) * y_trans

Câu trả lời:


10

Giả sử bạn đang sử dụng một hệ tọa độ dự kiến ​​... (sẽ phức tạp hơn nếu bạn không)

Cho điểm xoay (X, Y) và góc xoay t, bạn cần xoay từng điểm trong đa giác theo thứ tự. Giả sử đa giác được xây dựng các điểm trong tập hợp sao cho set = [(x0, y0), (x1, y1), (x2, y2) ...]

Bạn cần xoay từng điểm trong tập hợp, theo trình tự, để tạo tập hợp '= [(x0', y0 '), (x1', y1 '), (x2', y2 ') ...]

Để xoay, trước tiên, bạn phải chuyển đổi hệ tọa độ thành gốc bằng cách di chuyển điểm xoay sang (0,0). (x, y) là điểm cần quay.

x_trans = x - X
y_trans = y - Y
x_transprime = Cos(t) * x_trans - Sin(t) * y_trans
y_transprime = Sin(t) * x_trans + Cos(t) * y_trans
x_prime = x_transprime + X
y_prime = y_transprime + Y

Điều này sẽ khá đơn giản để dịch thành một kịch bản python.


Để biết thêm ý tưởng về cách thực hiện việc này, có một câu hỏi và trả lời khác có thể hữu ích được gọi là Làm thế nào để tôi xoay đa giác về một điểm neo bằng cách sử dụng tập lệnh python? .
PolyGeo

Cảm ơn @ user23492 vì đã lưu ý dấu hiệu không chính xác. Thay đổi được thực hiện (hai năm sau)
blord-castillo

1

Dưới đây là một cuộc thảo luận từ Diễn đàn Esri có thể là một giải pháp cho bạn. Hãy tìm phản hồi của Esri. Nó liên quan đến việc chuyển đổi đa giác thành raster, sử dụng công cụ raster Rotate và chuyển đổi trở lại thành đa giác. Tuy nhiên, có thể có một số lo ngại về ranh giới đa giác bị rối khi bạn chuyển đổi qua lại giữa raster / vector.

Tin tốt là tất cả đều có thể được thực hiện bằng Python mà không cần gọi ArcObjects. Và bạn sẽ có thể sử dụng SearchCthon để lấy các góc quay và các điểm neo của bạn từ bảng thuộc tính.

Dù sao, chỉ là một sự thay thế có thể.

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.