MySQL ГИС / Пространственные расширения - тает мой мозг - PullRequest
0 голосов
/ 19 декабря 2010

Я новичок в ГИС в MySQL, и это растопило мой мозг!

Я создал таблицу «мест», как показано ниже:

    CREATE TABLE `places` (
  `id` int(6) unsigned zerofill NOT NULL auto_increment,
  `business_name` varchar(100) NOT NULL,
  `street_postcode` varchar(10) NOT NULL,
  `longitude` decimal(22,20) NOT NULL,
  `latitude` decimal(22,20) NOT NULL,
  `coord` point NOT NULL,
  UNIQUE KEY `id` (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=25080 DEFAULT CHARSET=utf8

id, business_name и street_postcodeвставил в таблицу

Затем я обновил таблицу с помощью координат долготы и широты в PHP следующим образом:

UPDATE `places` SET `longitude` = '".$longitude."', `latitude` = '".$latitude."', `coord` = GeomFromText('POINT(".$coord.")') WHERE `id` = '".$row->id."' LIMIT 1

Кажется, что все прошло хорошо, но я застрял при попыткенайти ближайшее место к координатам X.Как мне найти 10 ближайших мест к Х долготе и широте?

Это не похоже на работу:

SELECT business_name, street_postcode, ROUND(GLength(LineStringFromWKB(LineString(AsBinary(coord), AsBinary('51.49437081 -0.2275573')))))
AS distance FROM places ORDER BY distance ASC LIMIT 10;

Вечная благодарность заранее!

1 Ответ

1 голос
/ 06 января 2011

Это потому, что в MySQL пространственные функции на самом деле не реализованы.Они заглушили весь код, но не реализовали все методы.

Я рекомендую использовать PostGIS или SpatiaLite.

...