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
Формат - смотрите здесь. Похоже, это достаточно объясняет проблему / недопустимое преобразование.