İki gün önce, ESRI şekil dosyalarında çokgenin köşeleri için iç depolama sırası hakkında bir soru sordum. Bu soru cevaplandı ( Çokgenler saat biçiminde mi yoksa saat yönünün tersinde bir şekil dosyasında mı saklanıyor? ) Ve eski bir gönderide de yanıtlandı ( Çokgen oluşturma (Saat yönünde dönüş veya değil) )
Ama şimdi benim sorum daha genel ve benzersiz bir cevabı var mı bilmiyorum. Saat yönünde sadece ESRI şekil dosyaları için mi yoksa genel GIS formatlarında mı? Peki ya bir CBS yazılımı için dahili temsil? Örneğin, QGIS kullanırsam ve * .shp içeren çokgenler okursam, dış sınırın iç gösteriminin orijinal şekil dosyasındaki gibi saat yönünde olduğunu varsayalım, peki ya QGIS tarafından desteklenen tüm dosya formatları için? Ve ArcGIS için? Ve eğer bu dosyalar QGIS, ArcGIS, vb. İçine yüklenirse, saat yönünün tersine depolanan çokgenli bir dosya formatı varsa, yönler dahili olarak değiştirilir, bu nedenle PyQGIS kullanarak verileri okursam, örneğin, çokgenler saat yönündedir. sipariş?
Amacım QGIS için bir eklenti yazmak, ancak veri kaynağı ESRI şekil dosyaları veya diğer biçimler olabilir. Poligonların ardışık yanları arasındaki açıları azimutlarını kullanarak kontrol etmem gerektiğinden, sıranın saat yönünde olup olmadığını bilmem gerekiyor. Bir çözüm, her çokgenin alanını hesaplamakta ve doğru hatırlıyorsam, eğer pozitifse sipariş saat yönünde ve negatifse sipariş saat yönünün tersinedir.
Alan hesaplaması yoğun bir iş değildir, bu yüzden eklentimi o kadar yavaşlatmaz. Ancak QGIS'in özel durumunda, orijinal kaynağın sırasına bakmaksızın çokgenleri saat yönünde veya saat yönünün tersine saklayıp saklamadığını bilen var mı? Artık ESRI şekil dosyaları ile çalışıyorum ve layer.getFeatures (). Geometry (). AsPolygon () içindeki koordinatlar dış kenarlık için saat yönünde ve delikler için saat yönünün tersinde, örneğin orijinal * .shp içinde saklanır.
Polygons are oriented correctly. (Exterior ring boundaries must be oriented counterclockwise, and interior ring boundaries must be oriented clockwise.)
bu da Oracle'ın saatin tersi yönünde olduğu anlamına gelir.