Два дні тому я задав питання про внутрішній порядок зберігання вершин багатокутника у ESRI shapefiles. На це запитання було відповідено ( Чи зберігаються багатокутники за годинниковою стрілкою або проти годинникової стрілки у формі файла? ), А також відповідь у старому дописі ( Створення полігона (обертання годинникової стрілки чи ні) )
Але зараз моє запитання більш загальне, і я не знаю, чи є на нього однозначна відповідь. Чи є порядок за годинниковою стрілкою лише для форматів ESRI або для загальних форматів GIS? А як щодо внутрішнього представлення програмного забезпечення GIS? Наприклад, якщо я використовую QGIS і читаю * .shp, що містить багатокутники, я припускаю, що внутрішнє представлення зовнішньої межі знаходиться за годинниковою стрілкою, як у вихідному файлі форм, а як щодо всіх форматів файлів, підтримуваних QGIS? А для ArcGIS? І якщо існує формат файлів з полігонами, які зберігаються проти годинникової стрілки, якщо ці файли завантажуються в QGIS, ArcGIS тощо, чи зміниться орієнтація внутрішньо, тому, якщо я читаю дані, використовуючи PyQGIS, наприклад, полігони знаходяться за годинниковою стрілкою замовили?
Моя мета - написати плагін для QGIS, але джерелом даних можуть бути файли форм ESRI або інші формати. Оскільки мені потрібно перевірити кути між послідовними сторонами багатокутників за допомогою їх азимутів, мені потрібно знати, чи порядок знаходиться за годинниковою стрілкою. Одне рішення - обчислення площі кожного багатокутника, і якщо я правильно пам'ятаю, якщо він позитивний, порядок знаходиться за годинниковою стрілкою, а якщо негативним - порядок проти годинникової стрілки.
Обчислення площі не є інтенсивним завданням, тому це не сповільнить мій плагін настільки сильно. Але у спеціальному випадку QGIS хтось знає, чи зберігає він багатокутники за годинниковою або проти годинникової стрілки, незалежно від порядку в оригінальному джерелі? На сьогоднішній день я працюю з формулами ESRI і координатами в layer.getFeatures (). Геометрія (). AsPolygon () зберігаються за годинниковою стрілкою для зовнішньої межі та проти годинникової стрілки для отворів, тобто як в оригіналі * .shp.
Polygons are oriented correctly. (Exterior ring boundaries must be oriented counterclockwise, and interior ring boundaries must be oriented clockwise.)
що означає, що Oracle є проти годинникової стрілки.