Как наладить импорт данных из geonames.org?

Здравствуйте, есть перегнанные в mysql геоданные отсюда download.geonames.org/export/dump/
Стоит задача построить иерархию вида Страна->Регион->Населённый пункт
Обгуглился, обчитался FAQ-и на самом geonames, однако, не могу ничего найти.
Например, есть такая деревня:
api.geonames.org/hierarchyJSON?geonameId=553915&username=user1&lang=ru

Очень хочется иметь нужную иерархию, однако, в таблице hierarchy просто нет нужного geoname_id (553915) и понять к какому административному округу относится этот населённый пункт — я не могу.

Может, кто сталкивался? Не подскажете, то делать?
  • Вопрос задан
  • 5743 просмотра
Пригласить эксперта
Ответы на вопрос 1
Skull
@Skull
С той базой нормально сделать иерархию для всего мира нереально, я убил на это массу времени. В результате вышло более менее нормально для США, а так как нужен был весь мир то ориентировался в иерархии по полю feature_code (список возможных вариантов geonames предоставляет). Вышло, но не совсем то что ожидалось
1. Выбор стран понятен
2. Выбор регионов с помощью hierarchy $country_geoname_id
SELECT * FROM geonames AS g INNER JOIN hierarchy AS gh ON h.childid = g.geonameid AND h.parentid ='".$country_geoname_id."'

3. Выбор городов — смотрим на города и населенные пункты, ориентируемся по штату
3.1 выбираем регион в $state
3.2 SELECT * FROM geonames WHERE country_code='".$state['country_code']."' AND admin1_code='".$state['admin1_code']."' AND feature_code IN ('ADM1', 'ADM2', 'ADM3', 'ADMD', 'PPLA', 'PPLC', 'PPL')

4. Выбор ориентиров и районов города ( для США нормально работает, в остальном мире где сомнительно)
4.1 выбираем город в $city
SELECT * FROM geonames WHERE country_code='".$city['country_code']."' AND admin1_code='".$city['admin1_code']."' AND admin2_code='".$city['admin2_code']."' AND feature_code NOT IN ('ADM1', 'ADM2', 'ADM3') AND feature_code IN ('ADM4', 'ADM5', 'PPLA', 'PPLC', 'PPL')
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 12:20
15000 руб./за проект
25 апр. 2024, в 12:08
300 руб./за проект
25 апр. 2024, в 11:49
25000 руб./за проект