两天前,我问了一个关于ESRI shapefile中多边形顶点的内部存储顺序的问题。回答了该问题(将多边形按顺时针还是逆时针存储在shapefile中?),并且在旧帖子中也回答了该问题(创建多边形(是否顺时针旋转))
但是现在我的问题更笼统了,我不知道它是否有唯一的答案。顺时针顺序仅适用于ESRI shapefile还是通用GIS格式?GIS软件的内部表示又如何呢?例如,如果我使用QGIS,并且读取了一个包含多边形的* .shp,我认为外边界的内部表示形式是与原始shapefile中一样的顺时针方向,但是QGIS支持的所有文件格式又如何呢?对于ArcGIS?并且如果存在一种文件格式,该文件格式具有以逆时针方向存储的多边形,则如果这些文件加载到QGIS,ArcGIS等中,则内部会改变方向,因此,例如,如果我使用PyQGIS读取数据,则多边形是顺时针的下令?
我的目的是为QGIS编写插件,但数据源可以是ESRI shapefile或其他格式。由于需要使用多边形的方位角检查多边形的连续边之间的角度,因此需要知道顺序是否为顺时针。一种解决方案是计算每个多边形的面积,如果我没记错的话,如果它为正,则顺序为顺时针,如果为负,则顺序为逆时针。
区域计算不是一项繁重的任务,因此不会使我的插件变慢。但是在QGIS的特殊情况下,有人知道它是否按顺时针或逆时针方向存储多边形,而不管原始源中的顺序如何?到目前为止,我正在使用ESRI shapefile,并且layer.getFeatures()。geometry()。asPolygon()中的坐标按顺时针方向存储为外部边界,按逆时针方向存储为孔,即与原始的* .shp相同。
Polygons are oriented correctly. (Exterior ring boundaries must be oriented counterclockwise, and interior ring boundaries must be oriented clockwise.)
这表示Oracle是逆时针的。