Я хотел бы экспортировать данные из геопанда в таблицу postgis / postgre.
Мой код для этого:
from sqlalchemy import create_engine
from geoalchemy2 import Geometry, WKTElement
engine = create_engine('postgresql://username:password@host:port/database')
baonotnull_test2['geometry'] = baonotnull_test2['geom2'].apply(lambda x: WKTElement(x.wkt, srid=2154))
#baonotnull_test2.drop('geom2', axis = 1, inplace = True) #axis : drop labels from the columns
baonotnull_test2.to_sql('bat_prediction_rf', engine, if_exists='replace', index=False,
dtype={'geometry': Geometry('MULTIPOLYGON', srid= 2154)})
У меня следующая ошибка;
ProgrammingError: (psycopg2.ProgrammingError) can't adapt type 'MultiPolygon'
Действительно, geom2 представляется типом POLYGON вместо типа MULTIPOLYGON.
В самом начале своего кода я импортировал таблицу из postgis:
baobat = gpd.read_postgis("SELECT * FROM p_baobat.bati_indifferencie_discrimination_sup WHERE (indiv_coll = 'individuel' OR (indiv_coll_arbitraire = 'individuel' AND indiv_coll != 'garages_autres'))", con = dbcon, geom_col = 'geom2')
geom2 - это мультиполигон в таблице p_baobat.bati_indifferencie_discrimination_sup, но он становится многоугольником при импорте в Python.
Что я могу сделать?
Спасибо за вашу помощь.