如何从JSON_ARRAY的坐标在MySQL中设置GEOMETRY

kokeuurv  于 12个月前  发布在  Mysql
关注(0)|答案(2)|浏览(133)

我想更新我的数据集,并使用GEOMETRY数据类型而不是使用纬度和经度。问题是我已经在我的表中设置了一个地理列的数据类型,但我不能把我的数据放进去。如何设置它的值?
我搜索了其他问题,所有问题都使用文本,我想从JSON转换。

ugmeyewa

ugmeyewa1#

如果你的表当前有一个包含纬度和经度的JSON列,你可以这样使用:

tbl

| ID| json点|新点|
| --|--|--|
| 1 |{“纬度”:“51.5072”,“经度”:“0.1276”}||

UPDATE tbl SET new_point = POINT(json_point->>'$.longitude', json_point->>'$.latitude');

字符串
如果json_point包含JSON数组:
| ID| json点|新点|
| --|--|--|
| 1 |[0.1276,51.5072]||
你可以更新:

UPDATE tbl SET new_point = POINT(json_point->'$[0]', json_point->'$[1]');

5lhxktic

5lhxktic2#

要更新字段,我们需要遵循这种格式,首先我们创建一个具有类型和坐标的JSON,然后将其转换为GEO。另外,请注意坐标是JSON数组的格式。
下面是Point类型和(5, 1)坐标示例
ST_GeomFromGeoJSON(JSON_OBJECT('type', 'Point', 'coordinates', JSON_ARRAY(5, 10)))

相关问题