Нужен список всех стран мира с координатой долготы и широты

Мне нужен список всех стран мира с координатой one lat/long для страны.

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

В принципе, что мне нужно,

Название страны - Lat/long Coord (какой-то центр страны)

Не нужно ничего говорить о континенте, но я бы не прочь, если бы это произошло.

_L

Ответ 1

Два веб-сервиса, которые могут вас заинтересовать, чтобы создать эти данные:

Вы можете вызвать http://ws.geonames.org/countryInfo, чтобы получить полный список кодов стран и названий стран, а затем вызвать http://ws.geonames.org/search?country=<code>&name=<name>&maxRows=1 для каждого, чтобы получить что, по-видимому, является лат/длинной центральной точки страны. (например, http://ws.geonames.org/search?country=US&name=United%20States&maxRows=1)

ИЗМЕНИТЬ

Вот С# script, который вы можете выполнить против перечисленных выше служб.
Вы можете запустить это, как в LinqPad.

void Main()
{
    var countries = new List<Country>();
    XDocument xmlDoc = XDocument.Load(@"http://ws.geonames.org/countryInfo");
    var countryList = (from c in xmlDoc.Descendants("country") select c);

    foreach (var country in countryList) 
    {
        var countryPath = string.Format("http://ws.geonames.org/search?country={0}&name={1}&maxRows=1", country.Element("countryCode").Value, country.Element("countryName").Value);
        var element = (from e in XDocument.Load(countryPath).Descendants("geoname") select e).FirstOrDefault();

        countries.Add(new Country
        { 
            Code = element.Element("countryCode").Value, 
            Name = element.Element("countryName").Value, 
            Latitude = Convert.ToDecimal(element.Element("lat").Value), 
            Longitude =  Convert.ToDecimal(element.Element("lng").Value),
            Continent = country.Element("continentName").Value
        });
    }

    Console.WriteLine("{0},{1},{2},{3},{4}","Continent", "Code", "Name", "Latitude", "Longitude");  

    foreach (var country in countries) 
    {
        Console.WriteLine("{0},{1},{2},{3},{4}",country.Continent, country.Code, country.Name, country.Latitude, country.Longitude);    
    }
}

public class Country
{ 
    public string Continent {get;set;} 
    public string Name { get;set;} 
    public string Code { get;set;} 
    public decimal Latitude { get;set;} 
    public decimal Longitude { get;set;} 
}

Ответ 7

Концепция центра страны не очень четко определена. Будут ли координаты столичных городов? Если это так, вы можете извлечь их откуда-то вроде Википедии относительно прямо. В конце концов, всего 200 или около того. Тем не менее я отмечаю, что Всемирный информационный бюллетень ЦРУ (доступный онлайн) дает приблизительные координаты для географических центров стран.

Ответ 8

В тематическом картографическом наборе данных мировых границ. Вам нужно будет преобразовать его в желаемый формат.

http://thematicmapping.org/downloads/world_borders.php

Ответ 9

У меня есть файл CSV, который я собрал еще в 2012 году, в котором есть все названия стран на разных языках, информация о центроидах (lat/lon) и континентах в регионе: Страны мира (COW)

http://www.opengeocode.org/download/cow.php

Ответ 10

Если вы загрузите последнюю версию этого международного файла данных страны из естественной земли: ne_10m_admin_0_countries.zip

Затем поместите его в QGIS, вы можете легко получить центроиды, запустив пункт меню Vector- > Geometry Tools- > Polygon Centroids, а затем экспортируйте, щелкнув правой кнопкой мыши и сохраните как.

Ответ 11

geographicdb pakage - это база данных World Cities с широтой долготы и информацией о часовых поясах для +240 стран с их названиями городов и кодом стран и более 270 000 записей

вы можете скачать здесь geographicdb pakage