Memutar Fitur di ArcGIS untuk Desktop menggunakan ArcPy? [Tutup]

10

Saya memiliki serangkaian poligon yang ingin saya putar.

Setiap poligon memiliki sudut putar dan titik jangkar (koordinat xy) yang disimpan sebagai nilai bidang.

Seperti yang terjadi, semua titik jangkar berada di puncak poligon.

Apa cara terbaik untuk melakukan ini menggunakan ArcGIS untuk Desktop dan ArcPy?

Saya tahu kita dapat memutarnya ketika dalam mode pengeditan, tetapi saya tidak ingin melakukan semuanya secara manual karena semuanya berbeda.

Saya lebih suka jawaban Python sehingga saya bisa mengotomatisasi dan membangunnya ke dalam alur kerja saya.

dklassen
sumber
Ini bukan sesuatu yang telah saya lakukan tetapi Anda tampaknya menghadapi masalah yang serupa dengan yang dibahas di gis.stackexchange.com/questions/13383/…
PolyGeo
Anda dapat melakukan ini dengan ArcObjects. Apakah solusi terprogram diterima?
Jakub Sisak GeoGraphics
Apakah fitur Anda dalam koordinat geografis atau proyeksi?
blah238
Jakub - ya, solusi terprogram lebih disukai. Blah238 - koordinat yang diproyeksikan (NAD 83 UTM Zone 10)
dklassen
1
Dalam skrip Python perhitungan koordinat Y yang diputar memerlukan tanda tambah (tambahan) dan bukan tanda minus (pengurangan): y_transprime = Dosa (t) * x_trans + Cos (t) * y_trans

Jawaban:

10

Dengan asumsi Anda menggunakan sistem koordinat yang diproyeksikan ... (menjadi jauh lebih rumit jika tidak)

Titik rotasi yang diberikan (X, Y) dan sudut rotasi t, Anda perlu memutar setiap titik dalam poligon secara berurutan. Dengan asumsi poligon dibangun dari titik-titik dalam set sedemikian sehingga set = [(x0, y0), (x1, y1), (x2, y2) ...]

Anda perlu memutar setiap titik di set, secara berurutan, untuk membentuk set '= [(x0', y0 '), (x1', y1 '), (x2', y2 ') ...]

Untuk memutar, pertama Anda harus mengubah sistem koordinat ke asal dengan memindahkan titik rotasi ke (0,0). (x, y) adalah titik yang akan diputar.

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

Ini harus cukup mudah untuk diterjemahkan menjadi skrip python.

tuan-castillo
sumber
Untuk gagasan lebih lanjut tentang cara melakukan ini ada T&J lain yang mungkin membantu disebut Bagaimana cara memutar poligon tentang titik jangkar menggunakan skrip python? .
PolyGeo
Terima kasih @ user23492 untuk mencatat tanda yang salah. Perubahan dilakukan (dua tahun kemudian)
blord-castillo
1

Berikut adalah diskusi dari Forum Esri yang mungkin menjadi solusi untuk Anda. Cari respons Esri. Ini melibatkan konversi poligon menjadi raster, menggunakan alat Rotate raster, dan mengkonversi kembali ke poligon. Namun, mungkin ada beberapa kekhawatiran tentang batas-batas poligon yang kacau ketika Anda mengkonversi bolak-balik antara raster / vektor.

Berita baiknya adalah semuanya dapat dilakukan dengan Python tanpa memanggil ArcObjects. Dan Anda harus dapat menggunakan SearchCursor untuk mengambil sudut rotasi dan titik jangkar dari tabel atribut.

Pokoknya, hanya alternatif yang mungkin.

Baltok
sumber