Вставка и неверная геометрия PostGIS - PullRequest
0 голосов
/ 01 апреля 2019

Я создал функцию, которая выполняет некоторые проверки достоверности таблиц / представлений в postgres / postgis.Postgres 9.6.11 и PostGIS 2.3.Теперь мне нужно протестировать эту функцию, поэтому мне нужно создать таблицу с неверной геометрией.Предпочтительнее тот, который можно исправить с помощью ST_MakeValid, и тот, который не будет исправлен этим, поэтому я могу протестировать все варианты использования.Как вставить неверную геометрию в таблицу postgis.

1 Ответ

1 голос
/ 02 апреля 2019

Это не простая задача, и она очень зависит от версии.

Вы можете попытаться заблокировать допустимую геометрию, или вы можете попытаться вставить неверную геометрию.

Например,эта линия создает недопустимую линию (2 точки, начало = конечная точка)

SELECT st_setsrid(st_geomfromtext('LINESTRING(480 270,480 270)'),3857);

ST_MakeValid преобразует ее в точку.

или создает самопересекающийся многоугольник

SELECT st_isValid('polygon((0 0, 1 0, 0 1, 1 1, 0 0))'::geometry);
NOTICE:  Self-intersection at or near point 0.5 0.5
 st_isvalid
------------
 f

ST_MakeValid преобразует его в мультиполигон

Вы также можете найти другие примеры здесь

...