В чем разница между st_isvalid и st_issimple? - PullRequest
1 голос
/ 28 октября 2019

В Postgis есть две очень похожие функции. Один - st_isValid , другой - st_isSimple . Я хотел бы понять разницу между обоими для полигонов. Для st_isValid у нас есть:

Некоторые правила правильности многоугольника кажутся очевидными, а другие - произвольными (и фактически произвольными).

  • Кольца многоугольника должныclose.
  • Кольца, определяющие отверстия, должны быть внутри колец, определяющих внешние границы.
  • Кольца не могут самопересекающимися (они не могут касаться друг друга или пересекаться).
  • Кольца не могут касаться других колец, кроме как в точке.

Для st_isSimple у нас есть:

Возвращает true, если у этой геометрии нет аномальной геометрическойточки, такие как самопересечение или касание себя. Для получения дополнительной информации об определении простоты и правильности определения OGC геометрии см. «Обеспечение совместимости геометрии с OpenGIS»

Означает ли это, что любой действительный многоугольник автоматически прост?

1 Ответ

2 голосов
/ 28 октября 2019

Обе функции проверяют на сходство соответствия определения геометрии OGC, но определено для разных геометрий (по размеру);

По определению OGC

  • a [Multi]LineString может ( должен ) быть простым

  • a [Multi]Polygon может ( должен ) быть действительным

Это означает, что

  • a simple [Multi]LineString всегда считается действительным

  • a действительный [Multi]Polygon всегда считается простым (т. Е. Он должен иметь хотя бы одно простое замкнутое LineString кольцо)

таким образом ответ - да .


Строго говоря, использование встроенных проверок определенной функциональности OGC для «неправильного» типа геометрии бесполезно.

PostGIS, однако, свободно расширяет функциональность ST_IsValid, чтобы использовать правильные проверки для всех типов геометрии .

...