mysql-将英国国家网格(osgb36)中的点几何图形转换为纬度/经度(wgs84)

zzlelutf  于 2021-06-16  发布在  Mysql
关注(0)|答案(1)|浏览(347)

我有一个来自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
i2loujxw

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之间的转换。有关详细信息,请参见空间运算符函数。

相关问题