избежание столкновений с дальностью геокодирования - PullRequest
0 голосов
/ 27 ноября 2009

Я нахожусь в процессе извлечения объектов местоположения («Мэдисон Сквер Гарден», «Зоопарк Сан-Диего» и т. Д.) Из большой таблицы неоднородного местоположения. Я пытаюсь избежать нескольких сущностей в моей новой таблице. У меня нет надежных уличных адресов, но я пытаюсь извлечь адреса в пределах локального диапазона.

Я делаю это путем подсчета и сопоставления одинаковых имен в географическом диапазоне 30 км.

Я просматриваю таблицу городов с геокодированием, и для каждого города создаю широту / долготу, а затем извлекаю названия мест в этом диапазоне.

На примере Мэдисон Сквер Гарденс. Место встречи будет перекрываться несколько раз из разных городов в таблице городов. Например, Манхэттен, Ньюарк и т. Д., Вероятно, будут перекрывать диапазон Нью-Йорка и приводить к нескольким записям для некоторых объектов недвижимости в Нью-Йорке.

Я не могу просто установить диапазон на меньшую область, так как я пропущу местоположения или, что еще хуже, получаю больше записей, так как у меня не часто бывают хорошие улицы / города / геокодированные местоположения (хотя 30 км кажется, работает очень хорошо).

Я надеялся, что геохеширование позволит мне создать ограничивающий прямоугольник, в котором я смогу найти перекрытие и избежать нескольких записей, но, похоже, это не тот случай, основанный на том, что я нашел.

В идеале, я считаю, что я ищу хэш или другое значение, которое я могу поместить в ячейку, и сохранить уникальное имя / хэш местоположения, чтобы mysql не заканчивал несколькими записями для одного местоположения.

У меня нет правильного адреса улицы для каждой записи (хотя он у меня есть), поэтому, похоже, получить точность уровня улицы и не использовать диапазон. У меня также нет постоянных названий городов, поэтому я получаю Нью-Йорк, Нью-Йорк, Манхэттен и т. Д. И т. Д. Но моя таблица городов лучше, включая Нью-Йорк, но не Нью-Йорк.

_-------------- EDITED -------------------- После еще одного взгляда на Geohash.org, я думаю, что я на правильном пути, просто не хватает детализации. Если я возьму первые два символа хэша, это согласуется в пределах слишком большого диапазона. Например, все от виктории, до н.э. до портленда или все «C2» для первых двух символов. Тем не менее, переходя к решению 3 символа, Нью-Йорк начинает с «dr5», как и Ньюарк (что хорошо), но Хакенсак - «dr7». Хуже, Ванувер, до н.э. это «C2b», но пригород Ричмонда до н. э. «C28».

1 Ответ

1 голос
/ 10 марта 2010

Я построил подобный сервис, который принимает координаты широты и долготы и возвращает ближайший город. Я использовал базу данных из http://www.globixdata.com/, которая содержала названия городов и их координаты широты / долготы, а также другие данные, которые могут иметь отношение к делу, такие как приблизительное население. Вы не можете получить 100% точные результаты, если ваш адрес или точка находятся на границе между городами.

Я заплатил за базу данных, но вы, возможно, сможете найти что-то похожее бесплатно в Интернете с небольшим отрывом.

...