Spero che la mia domanda non sia ridicola dato che, sorprendentemente, questa domanda non è apparentemente ancora stata realmente posta (per quanto a mia conoscenza) sui siti web popolari.Scrivi GeoDataFrame nel database SQL
La situazione è che ho diversi file CSV contenenti più di 1 milione di osservazioni in totale. Ogni osservazione contiene, tra gli altri, un indirizzo postale. Sto pianificando di leggere tutti i file in un singolo GeoDataFrame, geocodificare gli indirizzi, eseguire un join spaziale dato uno shapefile e salvare alcune informazioni dal poligono per ogni riga. Abbastanza standard, suppongo. Questa è una parte di un processo di pulizia dei dati una tantum.
Il mio obiettivo è impostare un database con questo dataset finale. Questo perché mi permette di condividere e cercare i dati abbastanza facilmente così come per es. traccia alcune osservazioni su un sito web. Inoltre, rende abbastanza facile selezionare le osservazioni in base ad alcuni criteri e quindi eseguire alcune analisi.
Il mio problema è che la funzione di inserimento di un GeoDataFrame in un database sembra non essere ancora implementato - a quanto pare perché GeoPandas si suppone che sia un subsitute per i database ("GeoPandas consente di eseguire facilmente operazioni in python che altrimenti richiederebbero un database spaziale come PostGIS ").
Naturalmente, potrei scorrere ogni riga e inserire ogni punto di dati "manualmente", ma sto cercando la soluzione migliore qui. Per qualsiasi soluzione, temerei anche che il tipo di dati possa entrare in conflitto con quello del database. C'è "un modo migliore" per portare qui?
Grazie per il vostro aiuto.
Cool! Funziona alla prima chiamata quando la tabella non esiste. Ma le chiamate consecutive mi danno un 'DataError: (psycopg2.DataError) Geometry SRID (0) non corrisponde alla colonna SRID (4326)'. – j08lue
'psycopg-postgis' potrebbe avere qualche ispirazione: https://github.com/yohanboniface/psycopg-postgis. Tuttavia, implementano i propri tipi piuttosto che quelli in 'formosa' /' geopandas'. – j08lue
Questo ** può ** lavorare per una singola chiamata, non per aggiungere dati, poiché la colonna 'geom' quindi si aspetta che la geometria abbia un SRID. – j08lue