ArcPyを使用してArcGIS for Desktopでフィーチャを回転しますか?[閉まっている]


10

回転させたい一連のポリゴンがあります。

各ポリゴンには、フィールド値として保存された回転角度とアンカーポイント(xy座標)があります。

たまたま、すべてのアンカーポイントはポリゴンの頂点にあります。

ArcGIS for DesktopとArcPyを使用してこれを行う最良の方法は何ですか?

編集モードのときに回転できることはわかっていますが、すべてが異なるため、すべて手動で実行する必要はありません。

私はそれを自動化して私のワークフローに組み込むことができるように、Pythonの回答を好みます。


これは私が行ったことではありませんが、gis.stackexchange.com
questions /

これは、ArcObjectsで実行できます。プログラムによるソリューションは受け入れられますか?
Jakub Sisak GeoGraphics 2012

フィーチャは地理座標または投影座標にありますか?
blah238

Jakub-はい、プログラムによるソリューションが推奨されます。Blah238-投影座標(NAD 83 UTMゾーン10)
2013年

1
Pythonスクリプトでは、回転したY座標の計算には、マイナス記号(減算)ではなくプラス記号(加算)が必要です。y_transprime = Sin(t)* x_trans + Cos(t)* y_trans

回答:


10

投影座標系を使用していると仮定します...(そうでない場合は、さらに複雑になります)

回転点(X、Y)と回転角tを指定すると、ポリゴンの各点を順番に回転させる必要があります。ポリゴンが、set = [(x0、y0)、(x1、y1)、(x2、y2)...]

セット内の各ポイントを順番に回転させて、set '= [(x0'、y0 ')、(x1'、y1 ')、(x2'、y2 ')...]を形成する必要があります

回転するには、まず、回転点を(0,0)に移動して、座標系を原点に変換する必要があります。(x、y)は回転する点です。

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

これは、Pythonスクリプトに変換するのがかなり簡単なはずです。



間違った記号に注意してくれて@ user23492に感謝します。変更(2年後)
blord-castillo

1

ここにあなたのための解決策であるかもしれないEsriフォーラムからの議論があります。Esriの応答を探します。これには、ポリゴンのラスターへの変換、ラスター回転ツールの使用、およびポリゴンへの変換が含まれます。ただし、ラスター/ベクター間で前後に変換する際に、ポリゴンの境界がめちゃくちゃになることに懸念がある場合があります。

良いニュースは、ArcObjectsを呼び出さなくてもすべてPythonで実行できることです。また、SearchCursorを使用して、属性テーブルから回転角度とアンカーポイントを取得できるはずです。

とにかく、ただ可能な選択肢です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.