Ich habe einen einfachen GeoPandas-Datenrahmen:
Ich möchte diesen GeoDataFrame in eine PostGIS-Tabelle hochladen. Ich habe bereits ein Datenbank-Setup mit der PostGIS-Erweiterung, kann diesen DataFrame jedoch nicht als Tabelle hinzufügen.
Ich habe Folgendes versucht:
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'))
Antworten:
Mit der to_sql- Methode von Panda und SQLAlchemy können Sie einen Datenrahmen in Postgres speichern. Und da Sie einen Geodatenrahmen speichern, übernimmt GeoAlchemy die Geom-Spalte für Sie. Hier ist ein Codebeispiel:
Beachten Sie, dass Sie mit dem Parameter 'if_exists' festlegen können, wie der Datenrahmen zu Ihrer postgres-Tabelle hinzugefügt wird:
quelle
Ich hatte auch die gleiche Frage, die Sie gestellt haben, und habe viele, viele Tage damit verbracht (mehr als ich zugeben möchte), nach einer Lösung zu suchen. Angenommen die folgende postgreSQL-Tabelle mit der postGIS-Erweiterung,
Das ist es, woran ich endlich arbeiten konnte:
Ich kann nicht sagen, ob meine Datenbankverbindungslogik die beste ist, da ich sie im Grunde genommen von einem anderen Link kopiert habe und einfach froh war, dass ich meine vorhandene Tabelle mit der erkannten Geometriedefinition erfolgreich automatisieren (oder widerspiegeln) konnte. Ich habe nur ein paar Monate lang Python in SQL-Raumcode geschrieben, daher weiß ich, dass es viel zu lernen gibt.
quelle