Eu tenho um Dataframe simples do GeoPandas:
Gostaria de fazer upload deste GeoDataframe para uma tabela PostGIS. Já tenho uma configuração de banco de dados com a extensão PostGIS, mas não consigo adicionar esse Dataframe como uma tabela.
Eu tentei o seguinte:
engine = <>
meta = MetaData(engine)
eld_test = Table('eld_test', meta, Column('id', Integer, primary_key=True), Column('key_comb_drvr', Text),
Column('geometry', Geometry('Point', srid=4326)))
eld_test.create(engine)
conn = engine.connect()
conn.execute(eld_test.insert(), df.to_dict('records'))
Respostas:
Usando o método to_sql do Panda e o SQLAlchemy, você pode armazenar um quadro de dados no Postgres. E como você está armazenando um Geodataframe, o GeoAlchemy manipulará a coluna geom para você. Aqui está um exemplo de código:
Vale ressaltar que o parâmetro 'if_exists' permite que você lide com a maneira como o dataframe será adicionado à sua tabela do postgres:
fonte
Também tive a mesma pergunta que você fez e passou muitos e muitos dias nela (mais do que gostaria de admitir) procurando uma solução. Assumindo a seguinte tabela postgreSQL com a extensão postGIS,
isto é o que eu finalmente comecei a trabalhar:
Não sei dizer se minha lógica de conexão com o banco de dados é a melhor, pois basicamente copiei isso de outro link e fiquei feliz por poder automatizar (ou refletir) com êxito minha tabela existente com a definição de geometria reconhecida. Eu tenho escrito python em código espacial sql por apenas alguns meses, então eu sei que há muito a aprender.
fonte