在MySQL中,我有一个包含大约100个表的数据库。
它们都包含一个名为“'shape”的列,这是一个多边形类型字段。
它包含我认为的信息(st_srid返回1,但它是错的)是SRID 31287。
我想将其转换为SRID 4326,我将如何做到这一点?
答案 0 :(得分:2)
这里有两个问题。
ST_SRID
,PostGIS有ST_SetSRID
要解决PostGIS中的第一个问题,您需要使用ST_SetSRID
,并解决您使用的第二个问题ST_Transform
。
答案 1 :(得分:1)
针对迷失灵魂的MySQL转换的更新,发现了这个问题:
在版本8中,您现在拥有ST_Transform
mysql> SET @p = ST_GeomFromText('POINT(52.381389 13.064444)', 4326);
mysql> SELECT ST_AsText(@p);
+----------------------------+
| ST_AsText(@p) |
+----------------------------+
| POINT(52.381389 13.064444) |
+----------------------------+
mysql> SET @p = ST_Transform(@p, 4230);
mysql> SELECT ST_AsText(@p);
+---------------------------------------------+
| ST_AsText(@p) |
+---------------------------------------------+
| POINT(52.38208611407426 13.065520672345304) |
+---------------------------------------------+
答案 2 :(得分:0)
这对我有用
(适用于MySQL)
onPressEditProfile
答案 3 :(得分:-1)
在MySQL中它看起来像这样:
UPDATE `table name` SET `column name` = ST_GeomFromText(ST_AsText(`column name`), 4326);
希望这有帮助
答案 4 :(得分:-2)
我只希望这会帮助你(直接或作为指针)作为SQL Server的答案,但是如何......
UPDATE Table SET SpatialColumn = Geometry::STGeomFromText(SpatialColumn.STAsText(), 4326);
当然,如果您使用的是Geography列,则可以将Geometry交换为Geography。您需要将Table替换为表名,将SpatialColumn替换为Spatial Column的名称。
注意:这假设您的SRID为31287将坐标定义为小数纬度/经度值。