在MySQL中更改SRID

3

是否可以更改几何类型列的srid?我只想从原始latlon数据创建几何类型数据视图,并在geoserver中使用它。但是,在使用pointfromtext函数后,我生成的数据类型是geometry而不是point,geoserver将其视为无法在geoserver中使用的字节数组特征类型。但是,如果我直接在mysql中使用“点”函数,我可以得到确切的点类型,但srid不正确。

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


当你说改变SRID时,你是指重新投影还是更改内部表示。SRID标识系统中的坐标。你不能在没有坐标转换的情况下从一个SRID转到另一个SRID。你可以更改内部格式,但这很可能会破坏一切。 - Evan Carroll
3个回答

8
这是在MySQL中实现的一种方法:
   UPDATE table SET shape = ST_GeomFromText(ST_AsText(shape), SRID);

在这里,SRID 应该是新的 SRID 代码(例如 WGS84 的 4326)。请注意,这仅更改了 SRID 代码,而不更改存储在形状中的实际坐标。


0

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)

希望它能对你有所帮助。


更新 TestGeom SET geom.STSrid = 4326; 有什么问题吗? - Alastair Aitchison

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接