#postgresql #postgis
#postgresql #postgis
Вопрос:
Я создал функцию, которая выполняет некоторые проверки достоверности таблиц / представлений в postgres / postgis. Postgres 9.6.11 и PostGIS 2.3. Теперь мне нужно протестировать эту функцию, поэтому мне нужно создать таблицу с недопустимой геометрией в ней. Предпочтительнее тот, который можно исправить с помощью ST_MakeValid
, и тот, который не будет исправлен этим, чтобы я мог протестировать все варианты использования. Как вставить недопустимую геометрию в таблицу postgis.
Ответ №1:
Это непростая задача, и она сильно зависит от версии.
Вы можете попытаться заблокировать допустимую геометрию, или вы можете попытаться вставить недопустимую.
Например, эта строка создает недопустимую линию (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
преобразует его в мультиполигон
Вы также можете найти больше примеров здесь
Комментарии:
1. Это сработало отлично. Ошибка с галстуком-бабочкой (потому что в столбце разрешены только полигоны) и скрученный полигон также сработали, поскольку
ST_MakeValid
результатом был полигон. Спасибо!