MySQL Spatial - 从SRID 31287转换为4326

时间:2014-02-19 10:07:35

标签: mysql spatial srid

在MySQL中,我有一个包含大约100个表的数据库。

它们都包含一个名为“'shape”的列,这是一个多边形类型字段。

它包含我认为的信息(st_srid返回1,但它是错的)是SRID 31287。

我想将其转换为SRID 4326,我将如何做到这一点?

5 个答案:

答案 0 :(得分:2)

这里有两个问题。

  1. 您的内部表示错误,它是SRID 1,它应该是SRID 31287.在每个数据库中都可以更改内部表示:MySQL will get a mutator for it in version 8, ST_SRID,PostGIS有ST_SetSRID
  2. 您需要实际从SRID 31287转换为SRID 4326.这在PostGIS中可能 ONLY MySQLMicrosoft SQL都不能重新投放SRID。
  3. 要解决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将坐标定义为小数纬度/经度值。