【问题标题】:Change srid in mysql在mysql中更改srid
【发布时间】:2010-08-12 00:48:39
【问题描述】:

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

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

【问题讨论】:

  • 当您说更改 SRID 时,您的意思是重新投影还是更改内部表示。 SRID 标识系统中的坐标。如果不对坐标进行转换,就不能从一个 SRID 转到另一个。您可以更改可能会毁掉一切的内部格式。

标签: mysql geoserver


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    实际上要在 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)
    

    希望对你有帮助。

    【讨论】:

    • 呃.. UPDATE TestGeom SET geom.STSrid = 4326 有什么问题; ?
    【解决方案3】:

    我能够在 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 2015-08-29
      相关资源
      最近更新 更多