使用ArcPy旋转ArcGIS for Desktop中的要素吗?[关闭]


10

我有一系列要旋转的多边形。

每个多边形都有一个旋转角度和一个作为字段值存储的锚点(xy坐标)。

碰巧,所有锚点都位于多边形的顶点上。

使用ArcGIS for Desktop和ArcPy的最佳方法是什么?

我知道我们可以在编辑模式下旋转它们,但是我不想手动将它们全部旋转,因为它们都不同。

我希望有一个Python答案,这样我可以使其自动化并将其构建到我的工作流程中。


这不是我要做的事情,但是您似乎面临着与gis.stackexchange.com/questions/13383/…
PolyGeo

您可以使用ArcObjects进行此操作。程序化解决方案是否可以接受?
Jakub Sisak GeoGraphics '04年

您的要素是地理坐标还是投影坐标?
blah238

Jakub-是的,将首选程序化解决方案。Blah238-预计坐标(NAD 83 UTM Zone 10)
dklassen

1
在Python脚本中,旋转Y坐标的计算需要号(号)而不是减号减号):y_transprime = Sin(t)* x_trans + Cos(t)* y_trans

Answers:


10

假设您使用的是投影坐标系...(如果不使用,则会变得更加复杂)

给定旋转点(X,Y)和旋转角度t,您需要按顺序旋转多边形中的每个点。假设多边形是由set中的点构成的,则set = [(x0,y0),(x1,y1),(x2,y2)...]

您需要按顺序旋转集合中的每个点以形成集合'= [(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脚本应该非常简单。


有关如何执行此操作的更多想法,还有另一个问题解答可能对您有所帮助,即如何使用python脚本围绕锚点旋转多边形?
PolyGeo

感谢@ user23492注意错误的符号。进行了更改(两年后)
blord-castillo

1

这里是一个讨论从ESRI的论坛,可能是你的解决方案。寻找Esri回应。它涉及使用“旋转栅格”工具将面转换为栅格,然后转换回面。但是,在栅格/矢量之间来回转换时,可能会担心多边形边界会混乱。

好消息是,无需调用ArcObjects就可以用Python完成所有操作。而且您应该能够使用SearchCursor从属性表中获取旋转角度和锚点。

无论如何,这只是一个可能的选择。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.