PostGIS: преобразование шестнадцатеричного текста WKT/WKB/WKB в многоугольник

Я импортирую многоугольники в базу данных PostGIS, используя Python (GeoPandas, SQLAlchemy, GeoAlchemy2). Я следовал инструкциям, упомянутым здесь.

У меня есть база данных с таблицей с именем maps_region с колонкой / полем называется geom,

Я могу получить поле Polygon (названный geom) для импорта в таблицу базы данных PostGIS в текстовом формате (WKT, WKB и WKB Hex), но я не могу успешно преобразовать этот текстовый столбец в правильный формат Polygon в базе данных.

Я пытался импортировать с geom поле в нескольких различных форматах - в формате общеизвестного текста (WKT), формате WKB и шестнадцатеричном формате WKB - но не удалось преобразовать в Polygon из любого из трех форматов.

Например, я импортировал формы в geom поле в формате WKT, а затем преобразуется в шестнадцатеричный формат WKB с помощью следующей команды, которая работала нормально:

database=> UPDATE maps_region SET geom = ST_GeomFromText(geom, 4326);
UPDATE 28

Однако, когда я тогда пытаюсь преобразовать geom поле из text отформатировать в Polygon типа, я получаю следующие ошибки:

database=> ALTER TABLE maps_region ALTER COLUMN geom TYPE Geometry(POLYGON, 4326);
ERROR:  Geometry type (MultiPolygon) does not match column type (Polygon)
database=> ALTER TABLE maps_region ALTER COLUMN geom TYPE Geometry(MULTIPOLYGON, 4326);
ERROR:  Geometry type (Polygon) does not match column type (MultiPolygon)

Я попробовал оба способа: преобразование в Polygon и преобразование в MultiPolygon- и ни один из них не сработал. Вместо этого сообщения об ошибках были просто изменены!

Любая помощь будет с благодарностью.

Заранее спасибо!

1 ответ

Я понял, что формы были зарегистрированы в смешанном формате: все, кроме одного были в Polygon формат, в то время как один был в MultiPolygon Формат - смотрите здесь. Похоже, это достаточно объясняет проблему / недопустимое преобразование.

Другие вопросы по тегам