Какой лучший API для получения всех городов в данной стране? Я пытался скачать из Geonames. но кажется, что данные ненадежны. Можно ли запросить город, штат и страну в путепроводах API?

Можете ли вы предложить лучший способ загрузки городов и их точек?

4
Kishore K 12 Апр 2019 в 09:11

2 ответа

Лучший ответ

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

Во-первых, я получил все штаты страны, используя запрос

    [out:json];
    area["ISO3166-1"="IN"];
    (rel(area)["admin_level"="4"];);
    out;

Теперь я выбрал все районы для каждого штата, который admin_level=5.

    [out:json];
    area["ISO3166-2"="IN-KL"];
    (rel(area)["admin_level"="5"];);
    out;

Состояние ISO3166-2 основано на данных, полученных от API. Теперь вы можете выбрать города для каждого района, используя данные из API.

    [out:json];
    area["ISO3166-2"="{0}"]["admin_level"="4"];
    (rel["name"="Thiruvananthapuram"](area);)->.center;
    node(around.center:10000)["place"];
    out;"""

Это сработало для меня. Помните, что выбор всех городов в стране - огромная задача для серверов OSM. Получите данные, которые вам действительно нужны.

1
Sudheer K 9 Май 2019 в 15:14

Я отвечу на ваш второй вопрос относительно Overpass API. Вы можете запросить города для конкретной страны, используя этот API. Для демонстрации своих возможностей существует веб-инструмент запросов для OSM, который называется Overpass Turbo (http: // overpass-turbo. ЕС), где вы можете отправлять запросы и отображать и загружать данные. Следующий запрос предоставит все города в Соединенных Штатах, например:

{{geocodeArea:"United States"}}->.searchArea;
(
  node["place"="city"](area.searchArea);
);
out body;
>;
out skel qt;

Запрос вернет следующее:

enter image description here

В OSM Wiki используется тег «city» для определения самого большого поселения или поселения на территории, включая столицы штатов, штатов и провинций, а также другие крупные поселки ". На той же вики-странице есть заметка о различении городов и поселков. В приведенном выше запросе «город» можно заменить на «город». Другие возможные значения (включая страну и штат) перечислены здесь: https: //wiki.openstreetmap .org / вики / Ключ: место # Значения

Если вы хотите получить связь между штатами на основе данных, вы не всегда можете получить надежные результаты. Например, вы можете получить следующую подробную запись GeoJSON для Duluth, MN:

    {
      "type": "Feature",
      "properties": {
        "@id": "node/19188464",
        "is_in": "Minnesota USA",
        "is_in:continent": "North America",
        "is_in:country": "USA",
        "is_in:country_code": "US",
        "is_in:state": "Minnesota",
        "name": "Duluth",
        "name:ja": "ダルース",
        "name:oj": "Onigamiinsing",
        "name:ru": "Дулут",
        "place": "city",
        "population": "86265",
        "population:source": "2010",
        "wikidata": "Q485708",
        "wikipedia": "en:Duluth, Minnesota"
      },
      "geometry": {
        "type": "Point",
        "coordinates": [
          -92.1251218,
          46.7729322
        ]
      },
      "id": "node/19188464"
    },

Но только следующая запись для Мэдисон, WI:

{
      "type": "Feature",
      "properties": {
        "@id": "node/29941752",
        "alt_name:ru": "ÐœÑдиÑон",
        "capital": "4",
        "is_in:continent": "North America",
        "is_in:country": "USA",
        "name": "Madison",
        "name:en": "Madison",
        "name:pl": "Madison",
        "name:ru": "МадиÑон",
        "name:ta": "மேடிசனà¯",
        "name:uk": "МедіÑон",
        "place": "city",
        "population": "243344",
        "state_capital": "yes",
        "website": "http://www.cityofmadison.com/",
        "wikidata": "Q43788",
        "wikipedia": "en:Madison, Wisconsin"
      },
      "geometry": {
        "type": "Point",
        "coordinates": [
          -89.3837613,
          43.074761
        ]
      },
      "id": "node/29941752"
    },
0
AlexK 12 Апр 2019 в 08:09