代码之家  ›  专栏  ›  技术社区  ›  adam78

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

  •  -1
  • adam78  · 技术社区  · 7 年前

    我有一个地名的数据转储(csv) 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));
    

    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 . 我在使用mysql 5.7

    样本数据:

     NAME1      LOCAL_TYPE  GEOMETRY_X  GEOMETRY_Y  DISTRICT_BOROUGH    REGION      COUNTRY 
     Southport  Town        333510      417225      Sefton              North West  England 
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Rick James diyism    5 年前

    答案是,在所有地方, here

    哈特穆特·霍尔茨格雷夫在评论中回答。

    到目前为止,SRID属性只是MySQL中的一个伪属性,它存储为 并假设欧几里德(平面)几何进行计算。

    我认为马里亚行也是如此,至少在知识方面[原文如此]

    This WorkLog 讨论实施进度 ST_Transform

    MySQL8.0版 似乎已经实施了: https://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html#function_st-transform

    可以 需要升级到MySQL8.0。

    最近8.0.13版本的变更日志显示:

    ST_Transform() 用于从一个 空间参考系统(SRS)到另一个。目前,它支持 地理SRS之间的转换。有关详细信息,请参见 Spatial Operator Functions .