Mysql
 sql >> Database >  >> RDS >> Mysql

Come posso importare un geoDataFrame su MySQL?

Dopo aver provato molte cose, ho notato che la funzione to_sql non stava generando la sintassi MySQL corretta per il suo funzionamento. Anche con l'approccio per passare a wkb MySQL non ha ancora riconosciuto quella colonna come geometria se lascio il testo così com'è (vedi immagine nella domanda).

Ciò che ha funzionato per me è stato cambiare il campo della geometria in stringa e aggiornarlo in python in modo che appaia così:

Successivamente, ho proceduto a utilizzare il codice seguente, dove ho inviato il dataframe a MySQL e quindi ho aggiornato la tabella per impostare la colonna della geometria:

regions.to_sql('pr_regions', con=conn, schema='eq_pr_db',
               if_exists='replace', index=False)

#add column type Polygon

conn.execute('''ALTER TABLE `eq_pr_db`.`pr_regions` 
                ADD COLUMN `geom` Polygon;''')

#populate new column by applying the ST_GeomFromText function to transform the string to geometry type.

conn.execute('''UPDATE `eq_pr_db`.`pr_regions`
                SET geom =  ST_GeomFromText(geometry) ;''')