Изменить srid в MySQL - PullRequest
       1

Изменить srid в MySQL

2 голосов
/ 12 августа 2010

Можно ли изменить srid столбца типа геометрии? Я просто хочу создать представление данных типа геометрии из необработанных данных latlon и использовать его в геосервере. Однако после использования функции pointfromtext тип данных, которые я генерирую, - это геометрия, а не точка, и геосервер будет рассматривать ее как тип объектов байтового массива, который нельзя использовать в геосервере. Однако, если я использую функцию 'point' непосредственно в mysql, я могу получить точный тип точки, однако srid не прав.

Итак, мой вопрос: можно ли установить srid для типа данных геометрии?

Ответы [ 4 ]

3 голосов
/ 15 марта 2018

Это один из способов сделать это в MySQL:

   UPDATE table SET shape = ST_GeomFromText(ST_AsText(shape), SRID);

Где SRID должен быть новым кодом SRID (например, 4326 для WGS84). Имейте в виду, что это изменило только код SRID, а не фактические координаты, сохраненные в форме.

1 голос
/ 05 октября 2010

На самом деле, чтобы сделать то, что вы хотите в 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)

Надеюсь, это поможет вам.

0 голосов
/ 15 октября 2016

Мне удалось сделать это в 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

0 голосов
/ 30 марта 2015

Заказ SRID на MySQL:

UPDATE YourTable, (SELECT @rownum := 0) Australopithecus
SET YourField = GeomFromText(AsText(YourField), (@rownum := @rownum + 1))
...