Сохранение и запрос областей в MySQL - PullRequest
1 голос
/ 10 января 2012

У меня есть ряд областей (городов, районов и т. Д.), Сохраненных в БД MySQL.На данный момент они содержат только нечитаемое имя.

Как я могу выбрать все записи, которые содержат определенную точку широты / долготы?Как я могу сохранить информацию о районе?Возможна ли связь с Google Maps API?

(И да, к сожалению, я привязан к использованию MySQL.)

Ответы [ 2 ]

0 голосов
/ 13 января 2012

Это нелегко сделать в ванильном MySQL. Большую часть времени люди решают эту проблему, используя расширения ГИС для своего механизма базы данных, чтобы вы могли хранить тип информации «области», которую вы ищете. MySQL имеет Spatial Extensions , который должен делать свое дело, точные функции, которые вы, вероятно, ищете, например, ST_Contains перечислены здесь .

Примечание: Вам необходимо иметь MySQL> = 5.6.1, чтобы получить намеченное поведение от функции contains, в противном случае это просто операции на основе тупого прямоугольника.

0 голосов
/ 10 января 2012

Лучше всего делать что-то вроде использования Google API для сбора широты и длины данного почтового индекса (при условии, что у вас есть почтовые индексы) и построения и объекта всех лат / длинных / почтовых индексов, а затем писать PHP скрипт / функциюпросто переберите массив, обновляя записи вашей базы данных по почтовому индексу с новыми значениями lat и long

, например:

$data = array ( array ( 'e11', '0.01111', '5.313133' ), array ( 'e11', '0.01111', '5.313133' ) );

foreach ( $data as $p )
{
   query ( 'UPDATE table SET lat = "' . $p['lat'] . '", lng = "' . $p['long'] . '" WHERE postcode = "' . $p['postcode'] . '" );
}

Просто скучно, чтобы потом собрать все их длинные лат и положитьв формате, чтобы фактически проходить.

...