将空间数据从 PostGIS 导入 MySQL

Import spatial data from PostGIS into MySQL

我有一个 PostgreSQL 数据库,它在 table 的一列中包含 KML 数据。我使用 postGIS 命令查询它,查询如下:

SELECT ST_geomFromKML(geometry) 
    ST_Intersects(ST_SetSRID(ST_Buffer(ST_MakePoint(11.255492,43.779251),0.002), 4326), ST_GeomFromKML(geometry)) as intersect,
    ST_SetSRID(ST_Buffer(ST_MakePoint(11.255492,43.779251),0.002), 4326)
FROM mydb 
WHERE 
    ST_Intersects(ST_SetSRID(ST_Buffer( ST_MakePoint(11.255492,43.779251),0.002), 4326), ST_GeomFromKML(geometry))
LIMIT 1

geometry 列中,数据存储为 KML,如下所示:

<Polygon><outerBoundaryIs><LinearRing><coordinates>8.198905,40.667052 8.201007,40.667052 8.201007,40.665738 8.20127,40.665738 8.20127,40.664688 8.201532,40.664688 8.201532,40.663111 8.20127,40.663111 8.199956,40.663111 8.199956,40.663374 8.199693,40.663374 8.199693,40.664425 8.197591,40.664425 8.197591,40.665476 8.198905,40.665476 8.199168,40.665476 8.199168,40.666789 8.198905,40.666789 8.198905,40.667052</coordinates></LinearRing></outerBoundaryIs></Polygon>

所以我使用 ST_geomFromKML 将数据转换为几何图形,然后搜索围绕该点创建的圆的交点。

我想将数据库迁移到 MySQL 并且我想使用它的空间函数,但是我找不到 use/convert MySQL 中的 KML 数据的方法我使用 PostGIS。

有办法吗?

我想尝试以 MySQL 可以读取的格式导出几何是值得的,例如WKT(众所周知的文本)。根据你的问题,我假设你确实将几何图形作为 KML 存储在文本或 xml 列中,所以我相信这会对你有所帮助:

测试数据

CREATE TABLE t (kml TEXT);
INSERT INTO t VALUES ('<Point><coordinates>8.54,47.36</coordinates></Point>');

以 CSV 格式导出到标准输出(客户端)

COPY (SELECT ST_AsText(ST_geomFromKML(kml)) AS geom FROM t) TO STDOUT CSV;

query returned copy data:
POINT(8.54 47.36)

导出为 CSV 文件到 服务器 - 请记住,系统用户 postgres 需要在给定目录中具有写入权限。

COPY (SELECT ST_AsText(ST_geomFromKML(kml)) AS geom FROM t) TO '/path/to/file.csv';

是的,我也这样做了(来自 postgres 的 geom -> wkt -> mysql -> 来自 mysql 的 geom)。

为了完成,我使用:

pg_dump --column-inserts --data-only

如 Mysql 中那样只插入 INSERT。这里只需要在 MySQL 中创建 table,从 Postgres 中删除我的 INSERT 之前和之后的内容,删除“schema." 然后跳进去 MySQL!