Тип данных для хранения долготы / широты в Mysql - PullRequest
9 голосов
/ 05 марта 2012
'43.005895','-71.013202'

Пытается использовать:

INSERT INTO table(fanDetLocZip, fanDetLocCity, fanDetLocState, fanDetLocLat, fanDetLocLong, fanDetLocTZ, fanDetLocDST)  
VALUES(00210, 'Portsmouth', 'NH', '43.005895', '-71.013202', -5, 1);

В настоящее время я использую тип данных SPATIAL, GEOMETRY.

Это дает мне ошибки, такие как:

Невозможно получить объект геометрии из данных, отправленных в поле GEOMETRY

Все значения имеют 2 цифры и 6 знаков после запятой. Как я могу сохранить это в MySQL?

Ошибка при использовании:
INSERT INTO Table(fanDetLocZip, fanDetLocCity, fanDetLocState, fanDetLocLatLong, fanDetLocTZ, fanDetLocDST)<br> VALUES(00210, 'Portsmouth', 'NH', point(43.005895,-71.013202), -5,1)

Изображение ошибки: img5

Ответы [ 2 ]

18 голосов
/ 05 марта 2012

Вы можете использовать POINT() для сохранения в столбце типа GEOMETRY или POINT:

POINT(43.005895, -71.013202)

Если столбец геометрии имеет имя geom, вы можете использовать это:

INSERT INTO table
    ( ..., geom, ...) 
  VALUES
    ( ..., POINT(43.005895, -71.013202), ...)

Если вы хотите показать сохраненные данные, вы можете использовать функции X() и Y():

SELECT X(geom) AS x, Y(geom) AS y
FROM table 
2 голосов
/ 05 марта 2012

Почему вы не используете вместо этого тип Float для вашего lat / long?

Float (10,6)
...