Понимаете разницу между Polygon и Multipolygon для шейп-файлов в QGIS?

30

Создание слоя Scratch дает мне выбор между Polygon и Multipolygon, поэтому я задумался, как их использовать.

Новый временный слой Scratch

Читая новую книгу «Освоение QGIS» (через этот ответ Джозефа на « Что означает буфер в диалоге QGIS Voronoi?» ), Авторский комментарий был"ESRI shapefiles store geospatial data in multi- type geometry, so using multi- type geometry is a good practice if you plan on converting between formats."

Как выбрать один из них (полигон или мультиполигон) при создании нового слоя полигона? (Я перепутал multi-polygon с multipart-polygon, поэтому я выбирал Polygon.)

Одна из недавних ситуаций, в которых я решил выбрать Polygon / Multipolygon, - « Изменение длины параллельной линии для разделения полигона в QGIS? в котором я рисую фиктивный многоугольник в качестве фонового слоя. Работая в основном с шейп-файлами, казалось, я должен был выбрать Multipolygon, хотя мне нужен был только один полигон. В этом случае мне нужна была простая геометрия многоугольника без каких-либо атрибутов (не уверен, что в этом примере есть какое-либо различие.)

Казухито
источник
Вы не предоставили достаточно информации, чтобы помочь вам выбрать. Пожалуйста, измените вопрос, чтобы указать, что должен содержать царапающий слой. Обратите внимание, что книга вводит в заблуждение, поскольку шейп-файлы не хранят многотипные геометрии; вместо этого они просто не делают различий между одно- и многочастными линиями или полигонами.
Винс
@ Винс Спасибо. Я добавил недавний опыт, в котором мне нужно было выбрать один из них. Не уверен, что этот упрощенный пример имеет какой-либо смысл.
Казухито
@ Vince Что касается последней части вашего комментария, то мне не нужно беспокоиться об одно- или много-, поскольку я собираюсь сохранить слой как шейп-файл на диск?
Казухито

Ответы:

36

С более формальной точки зрения я сообщаю об определении как многоугольника, так и многоугольника (следующий текст и изображения взяты из этого документа стандартов OGC® , все ссылки на цитируемый источник).


многоугольник

Полигон - это плоская поверхность, определяемая 1 внешней границей и 0 или более внутренними границами. Каждая внутренняя граница определяет отверстие в многоугольнике.

Внешняя граница LinearRing определяет «вершину» поверхности, которая является стороной поверхности, с которой внешняя граница пересекает границу в направлении против часовой стрелки. Внутренние LinearRings будут иметь противоположную ориентацию и выглядеть как по часовой стрелке, если смотреть сверху.

Утверждения для Полигонов (правила, которые определяют допустимые Полигоны) следующие:

  1. Полигоны топологически замкнуты;
  2. Граница многоугольника состоит из набора линейных колец, которые составляют его внешние и внутренние границы;
  3. Никакие два Кольца в пересечении границы и Кольца в границе многоугольника не могут пересекаться в Точке, но только как касательная;
  4. У многоугольника не должно быть линий разрезов, шипов или проколов;
  5. Внутренняя часть каждого многоугольника представляет собой набор связанных точек;
  6. Внешность многоугольника с одним или несколькими отверстиями не связана. Каждое отверстие определяет связанный компонент экстерьера.

Ниже приведены несколько примеров полигонов:

введите описание изображения здесь


MultiPolygon

MultiPolygon - это MultiSurface, элементами которого являются Polygons.

Утверждения для мультиполигонов следующие:

  1. Интерьеры двух полигонов, которые являются элементами мультиполигона, могут не пересекаться;
  2. Границы любых 2-х многоугольников, которые являются элементами многогранника, могут не «пересекаться» и могут касаться только конечного числа точек;
  3. Мультиполигон определяется как топологически замкнутый;
  4. MultiPolygon может не иметь линий разрезов, шипов или проколов, MultiPolygon - это обычный набор замкнутых точек;
  5. Внутренняя часть MultiPolygon с более чем 1 Polygon не связана; количество связанных компонентов внутренней части мультиполигона равно числу полигонов в мультиполигоне

Граница MultiPolygon представляет собой набор замкнутых кривых (LineStrings), соответствующих границам его элемента Polygons. Каждая кривая на границе MultiPolygon находится на границе ровно одного элемента Polygon, а каждая кривая на границе элемента Polygon находится на границе MultiPolygon.

Ниже приведены несколько примеров мультиполигонов:

введите описание изображения здесь

МГРИ
источник
+1 Спасибо большое! Это так полезно. Должно быть, потребовалось много времени, чтобы обобщить их в таком лаконичном стиле, я не представляю, как я мог бы это сделать ... Так что, похоже, это Набор из Полигонов, Набор Поверхностей, и поддерживается довольно свободным руководством в Условия топологии (просто мое первое впечатление). Я буду читать и перечитывать связанные материалы, это очень интересно!
Казухито
Я думаю, что вы должны думать о мультиполигоне с геометрической точки зрения. Наиболее очевидное различие, которое я вижу, состоит в том, что, начиная с любого места на поверхности многоугольника, вы можете достичь любого другого местоположения на нем, в то время как для мультиполигона это не всегда так (см. Для справки последние примеры для обеих категорий на прилагаемых изображениях выше). ).
Мгри
Понял, спасибо. Да, единственная смежная геометрия или нет, это имеет большое значение. Единственный оставшийся вопрос, с которым я борюсь, это то, как мы рассматриваем многокомпонентный объект с точки зрения этого различия.
Казухито
1
Что делает первый пример MultiPolygon там?
Стейн
1
@ Первый пример - мультиполигон, потому что в некоторых случаях две точки в нем могут быть соединены линией, которая не полностью содержится внутри самого многоугольника. Такое поведение недопустимо для многоугольника, поэтому он является многоугольником.
МГРИТЕ
13

Шейп-файловые многоугольники строятся из одного или нескольких замкнутых колец. Если форма имеет несколько колец, они могут быть внешними и внутренними (например, формировать пончик) или множественными внешними (например, цепочка островков). введите описание изображения здесь

Конечно, наличие нескольких экстерьеров не мешает иметь одно или несколько внутренних колец на каждой фигуре. Спецификация шейп-файла утверждает, что:

  1. Наружные кольца должны быть по часовой стрелке, в то время как внутренние кольца должны быть против часовой стрелки (это правило известно как правило правой руки, так как форма всегда будет с правой стороны при прохождении по периметру; к сожалению, это также можно назвать Правило левой руки , потому что внешние кольца следуют направлению скрученной левой руки, большой палец которой направлен вверх от верхней части рисунка)
  2. Внутренние кольца должны всегда следовать за внешним кольцом, которое они разделяют
  3. Внешние или внутренние кольца не могут перекрывать или разделять общую границу (такие элементы могут быть заполнены, но они недопустимы и могут вызывать странные сбои геообработки).

Шейп-файлы не делают различий между этими объектами - все они являются полигонами (и каждая геометрия связана с одной записью dBase).

Тем не менее, некоторые инструменты делают делают различие, QGIS является одним из них. Если все, что вам когда-либо понадобится в шейп-файле, это простые формы с одним кольцом , тогда вы можете смело выбирать Polygon. Если фигуры могут содержать «дыры», также можно выбрать полигон. Однако, если некоторые фигуры могут содержать несколько внешних колец, вам нужно выбрать Multipolygon.

Винс
источник
1
Это отличный всесторонний обзор шейп-файла. Большое вам спасибо! Теперь я понимаю, что большая часть моего прошлого опыта относится к использованию Polygon. В будущем я буду использовать Multipolygon, когда мне нужно оцифровать дыры, что-то вроде озер. Еще раз спасибо!
Казухито
1
Спасибо за добавление фигуры, так что справа находится многократное наружное кольцо, для которого мне нужно выбрать Multipolygon ... а не то, что в центре с отверстием!
Казухито
3
Я должен вернуться и пометить их, но да, зеленый многоугольник - единственный мультиполигон
Винс
1
В случае двух колец (Multipolygon), будут ли эти два кольца иметь одну и ту же запись, если мы увидим таблицу атрибутов? (т.е. шейп-файл имеет только одну запись)?
Казухито
1
Да, это одна геометрия в одной записи
Винс