Tengo un marco de datos GeoPandas simple:
Me gustaría subir este GeoDataframe a una tabla PostGIS. Ya tengo una configuración de base de datos con la extensión PostGIS pero parece que no puedo agregar este Dataframe como una tabla.
He probado lo siguiente:
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'))
Respuestas:
Usando el método to_sql de Panda y SQLAlchemy puede almacenar un marco de datos en Postgres. Y como está almacenando un Geodataframe, GeoAlchemy se encargará de la columna de geom por usted. Aquí hay una muestra de código:
Vale la pena señalar que el parámetro 'if_exists' le permite manejar la forma en que se agregará el marco de datos a su tabla de postgres:
fuente
También he tenido la misma pregunta que me has hecho y he pasado muchos, muchos días en ella (más de lo que me gustaría admitir) buscando una solución. Suponiendo la siguiente tabla postgreSQL con la extensión postGIS,
Esto es lo que finalmente conseguí trabajar:
No puedo decir si la lógica de conexión de mi base de datos es la mejor, ya que básicamente copié eso de otro enlace y me alegré de haber podido automatizar (o reflejar) con éxito mi tabla existente con la definición de geometría reconocida. He estado escribiendo código espacial de Python a SQL durante solo unos meses, así que sé que hay mucho que aprender.
fuente