Saya memiliki GeoPandas Dataframe sederhana:
Saya ingin mengunggah GeoDataframe ini ke tabel PostGIS. Saya sudah memiliki pengaturan Database dengan ekstensi PostGIS tetapi sepertinya tidak bisa menambahkan Dataframe ini sebagai tabel.
Saya sudah mencoba yang berikut ini:
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'))
Jawaban:
Menggunakan metode to_sql Panda dan SQLAlchemy Anda dapat menyimpan dataframe di Postgres. Dan karena Anda menyimpan Geodataframe, GeoAlchemy akan menangani kolom geom untuk Anda. Berikut ini contoh kode:
Patut dicatat bahwa parameter 'if_exists' memungkinkan Anda untuk menangani cara bingkai data akan ditambahkan ke tabel postgres Anda:
sumber
Saya juga memiliki pertanyaan yang sama dengan yang Anda tanyakan dan telah menghabiskan banyak hari untuk itu (lebih dari yang saya akui) mencari solusi. Dengan asumsi tabel postgreSQL berikut dengan ekstensi postGIS,
inilah yang akhirnya saya kerjakan:
Saya tidak bisa mengatakan apakah logika koneksi basis data saya adalah yang terbaik karena pada dasarnya saya menyalinnya dari tautan lain dan hanya senang bahwa saya berhasil mengotomatiskan (atau mencerminkan) tabel saya yang ada dengan definisi geometri yang dikenali. Saya telah menulis kode spasial python ke sql hanya beberapa bulan, jadi saya tahu ada banyak yang harus dipelajari.
sumber