Получить список городов страны - PullRequest
1 голос
/ 12 апреля 2019

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

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

Ответы [ 2 ]

1 голос
/ 09 мая 2019

Я выполнил аналогичную задачу, используя overpass 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. Получите данные, которые вам действительно нужны.

0 голосов
/ 12 апреля 2019

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

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

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

enter image description here

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

Если вы хотите получить связь между городами по данным, вы не всегда можете получить надежные результаты.Например, вы можете получить следующую подробную запись 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"
    },

, но только следующую запись для Madison, 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"
    },
...