是否可以更改几何类型列的 srid?我只想从原始纬度数据创建几何类型数据的视图并在地理服务器中使用它。然而,在使用 pointfromtext 函数后,我生成的数据类型是几何而不是点,geoserver 会将其视为字节数组的特征类型,不能在 geoserver 中使用。但是,如果我直接在 mysql 中使用“点”函数,我可以获得点的确切类型,但是 srid 是不正确的。
所以我的问题是我可以为数据的几何类型设置 srid 吗?
这是在 MySQL 中执行此操作的一种方法:
UPDATE table SET shape = ST_GeomFromText(ST_AsText(shape), SRID);
其中 SRID 应该是新的 SRID 代码(例如 WGS84 的 4326)。请记住,这只更改了 SRID 代码,而不是存储在形状中的实际坐标。
实际上,要在 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)
我希望它可以帮助你。
我能够在 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