我有一个包含纬度、经度和坐标列的表格。有超过 500,000 行。每一行的坐标字段目前都是空的。我需要做的是将纬度和经度转换为地理空间 POINT() 并将其放入坐标列中。这可能吗?
我知道 POINT
可以这样插入:
INSERT INTO `myTable` (`coordinates`) VALUES (GeomFromText('POINT(50.2 51.6)'));
我基本上需要这样做,但需要从每一行的 latitude
和 longitude
中提取值。
最佳答案
这是一个较旧的问题,但我已经指出所有答案都是错误的(至少在 2019 年)纬度和经度必须与答案相反
改为:POINT(latitude,longitude)
必须是: POINT(longitude,latitude)
在Mysql 5.6及以后可以使用:
Update myTable
Set coordinates = POINT(longitude, latitude);
如果我们尝试一些像:
SELECT ST_Distance_Sphere(
POINT(13.1500000,99.9666700),
POINT(48.861105, 120.335337)
);
出现错误:
ERROR 1210 (HY000): Incorrect arguments to st_distance_sphere
因为我在答案中使用了 like POINT(latitude,longitude)
但是如果我们尝试 POINT(longitude,latitude)
:
SELECT ST_Distance_Sphere(
POINT(99.9666700, 13.1500000),
POINT(120.335337, 48.861105)
);
结果是:
+--------------------------------------------+
| ST_Distance_Sphere(
POINT(99.9666700, 13.1500000),
POINT(120.335337, 48.861105)
) |
+--------------------------------------------+
| 4389299.754585881 |
+--------------------------------------------+
1 row in set (0.00 sec)
关于mysql - 将纬度/经度字段转换为地理空间点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21188765/