首页 文章

在mysql中更改srid

提问于
浏览
2

是否可以更改几何类型列的srid?我只想从原始latlon数据创建几何类型数据的视图,并在geoserver中使用它 . 然而,在使用pointfromtext函数之后,我生成的数据类型是几何而不是点,并且地理服务器会将其视为字节数组的特征类型,不能在地理服务器中使用 . 但是如果我直接在mysql中使用'point'函数,我可以得到确切的点类型但是srid不正确 .

所以我的问题是我可以为几何类型的数据设置srid吗?

4 回答

  • 0

    这是在MySQL中执行此操作的一种方法:

    UPDATE table SET shape = ST_GeomFromText(ST_AsText(shape), SRID);
    

    其中SRID应该是新的SRID代码(例如,WGS84的4326) . 请记住,这只会更改SRID代码,而不会更改存储在形状中的实际坐标 .

  • 3

    实际上要在SQL Server 2008中执行您想要的操作,我必须执行以下操作(更改EPGS中的所有数据:4326):

    update TestGeom set geom = geometry::STGeomFromText(geom.STAsText(), 4326)
    

    我不知道在MySQL中你是否可以做同样的事情 . 否则,您可以使用类似于此的内容重建表:

    update TestGeom 
    set geom = geometry::STGeomFromText('POINT ('+ REPLACE(CONVERT(nvarchar, TestGeom.Lon), ',','.')+' '+REPLACE(CONVERT(nvarchar, TestGeom.Lat), ',','.')+' )', 4326)
    

    我希望它可以帮到你 .

  • 0

    在MySQL上订购SRID:

    UPDATE YourTable, (SELECT @rownum := 0) Australopithecus
    SET YourField = GeomFromText(AsText(YourField), (@rownum := @rownum + 1))
    
  • 1

    我可以使用以下技术在MySQL 5.7中执行此操作:

    update location_polygons
    set multipoly = ST_GeomFromGeoJSON(ST_AsGeoJSON(multipoly), 2, 0)
    where SRID(multipoly) <> 0
    

    基于此文档URL:https://dev.mysql.com/doc/refman/5.7/en/spatial-geojson-functions.html

相关问题