是否可以更改几何类型列的srid?我只想从原始latlon数据创建几何类型数据视图,并在geoserver中使用它。但是,在使用pointfromtext函数后,我生成的数据类型是geometry而不是point,geoserver将其视为无法在geoserver中使用的字节数组特征类型。但是,如果我直接在mysql中使用“点”函数,我可以得到确切的点类型,但srid不正确。
所以我的问题是,我可以为几何类型数据设置srid吗?
是否可以更改几何类型列的srid?我只想从原始latlon数据创建几何类型数据视图,并在geoserver中使用它。但是,在使用pointfromtext函数后,我生成的数据类型是geometry而不是point,geoserver将其视为无法在geoserver中使用的字节数组特征类型。但是,如果我直接在mysql中使用“点”函数,我可以得到确切的点类型,但srid不正确。
所以我的问题是,我可以为几何类型数据设置srid吗?
UPDATE table SET shape = ST_GeomFromText(ST_AsText(shape), SRID);
在这里,SRID 应该是新的 SRID 代码(例如 WGS84 的 4326)。请注意,这仅更改了 SRID 代码,而不更改存储在形状中的实际坐标。
update location_polygons
set multipoly = ST_GeomFromGeoJSON(ST_AsGeoJSON(multipoly), 2, 0)
where SRID(multipoly) <> 0
实际上,在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)
希望它能对你有所帮助。