Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich einen geoDataFrame in MySQL importieren?

Nachdem ich viele Dinge ausprobiert hatte, bemerkte ich, dass die to_sql-Funktion nicht die richtige MySQL-Syntax generierte, damit sie funktionierte. Auch bei dem Ansatz, zu wkb zu wechseln, hat MySQL diese Spalte immer noch nicht als Geometrie erkannt, wenn ich den Text unverändert lasse (siehe Bild in der Frage).

Was für mich funktioniert hat, war, das Geometriefeld in String zu ändern und es in Python zu aktualisieren, damit es so aussieht:

Danach habe ich mit dem folgenden Code fortgefahren, wo ich den Datenrahmen an MySQL gesendet und dann die Tabelle aktualisiert habe, um die Geometriespalte festzulegen:

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) ;''')