我有一个来自https://www.ordnancesurvey.co.uk/business-and-government/help-and-support/products/os-open-names.html
我需要将其导入mysql,但是几何坐标使用bng(osgb36)。mysql是否有任何函数将这些坐标转换为wgs84 lat/long,或者是否有其他sql方法来实现这一点?
另一个选择可能是将其加载到postgis中-postgis是否具有将bng转换为lat/long的功能?或许我可以这样做,然后将转换后的数据导出并加载到mysql中?
在postgis中,我可以做以下事情(未测试)
select AddGeometryColumn('locations', 'the_geom', 27700, 'POINT', 2);
-- X and Y are the BNG co-ordinates
UPDATE locations SET the_geom = ST_GeomFromText('POINT(' || x || ' ' || y || ')', 27700 );
alter table locations add column lat real;
alter table locations add column long real;
update locations set long=st_x(st_transform(the_geom,4326)),
lat=st_y(st_transform(the_geom,4326));
有没有可能在mysql中执行这些类型的函数-基本上mysql中的等效函数是什么。我好像搞不懂语法?以下内容在mysql中不起作用:
update locations set long=ST_X(ST_Transform(the_geom,4326)),
lat=ST_Y(ST_Transform(the_geom,4326));
我犯了个错误 function ST_Transform does not exist
. 我正在使用MySQL5.7
- 更新*样本数据:
NAME1 LOCAL_TYPE GEOMETRY_X GEOMETRY_Y DISTRICT_BOROUGH REGION COUNTRY
Southport Town 333510 417225 Sefton North West England
1条答案
按热度按时间i2loujxw1#
答案是,在所有的地方,这里
hartmut holzgraefe在此评论中回答。
到目前为止,srid属性只是mysql中的一个伪属性,它存储为geometries元数据的一部分,但所有实际计算都忽略了它,并且计算是在假设欧几里德(平面)几何的情况下完成的。
所以在这一点上,stu变换实际上什么也做不了。
我认为mariadb也是如此,至少srid()函数的knowledge[sic]基页仍然这样说:
这个工作日志讨论了实现
ST_Transform
.mysql 8.0似乎已经实现了:https://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html#function_st-变换
因此,解决方案可能需要升级到mysql 8.0。
最新的8.0.13版本的变更日志显示:
-----2018-10-22 8.0.13正式上市-------
mysql现在实现了st_transform()spatial函数,用于将几何值从一个空间参考系(srs)转换为另一个空间参考系。目前,它支持地理SRS之间的转换。有关详细信息,请参见空间运算符函数。