mysql - 将空间数据从 PostGIS 导入 MySQL

标签 mysql postgresql postgis mysql-spatial

我有一个 PostgreSQL 数据库,其中表的一列中包含 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,并且想使用它的空间功能,但我找不到像使用 PostGIS 那样在 MySQL 中使用/转换 KML 数据的方法。

有办法吗?

最佳答案

我想尝试以 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';

关于mysql - 将空间数据从 PostGIS 导入 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59445256/

相关文章:

postgresql - 返回类型字符 varying(70)[] 与预期类型不匹配

postgresql - Geoserver sql View 参数搞乱了 postgis 函数调用

php - 尝试通过 pg_query_params 创建并回显数组

php - 相对罕见的 as3/php/mysql 交互的最佳方法是什么

SQL - 聚合函数不能在 postgresql 中嵌套错误

sql - 在plpgsql中连接查询字符串中的多个字段

ruby-on-rails - 按最近的顺序排序-PostGIS,GeoRuby,spatial_adapter

mysql - 来自两个或多个字段的最大值

mysql - 自动化 AppArmor 修改

mysql - 从 mysql workbench 6.3 中创建的表中删除 COMMENT ''