2010-04-23 75 views
31

Tôi cần một danh sách tất cả các quốc gia trên thế giới, với phối hợp vĩ độ/dài cho quốc gia.Cần danh sách tất cả các quốc gia trên thế giới, với tọa độ kinh độ và vĩ độ

Tôi đã xem GeoNames, nhưng tất cả những gì tôi có thể tìm thấy là danh sách có các quốc gia cũng như thành phố trong cùng một danh sách. Tôi đoán tôi chỉ có thể phân tích nó và lọc ra các nước, nhưng tôi đã hy vọng tránh điều đó.

Về cơ bản, những gì tôi cần;

Tên quốc gia - Lat/dài phối hợp (một số loại trung tâm của đất nước)

Nó không cần phải nói bất cứ điều gì về lục địa, nhưng tôi sẽ không phiền nếu nó đã làm.

_L

+0

cảm ơn, abelenky – ptrn

+0

Kiểm tra http://dev.maxmind.com/geoip/legacy/codes/country_latlon/ – Boern

Trả lời

28

Hai dịch vụ web mà bạn có thể quan tâm đến bạn để xây dựng dữ liệu này:

Bạn có thể gọi http://ws.geonames.org/countryInfo để có được danh sách đầy đủ của các mã quốc gia và nước tên, và sau đó gọi http://ws.geonames.org/search?country=<code>&name=<name>&maxRows=1 trên mỗi để có được những gì dường như là lat/long của điểm trung tâm của đất nước. (Ví dụ. http://ws.geonames.org/search?country=US&name=United%20States&maxRows=1)

EDIT

Đây là một kịch bản # C mà bạn có thể chạy với các dịch vụ được liệt kê ở trên.
Bạn có thể chạy điều này như trong 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;} 
} 
+0

Giải pháp gọn gàng. Tôi đã giải quyết nó bằng cách sử dụng cách của Andrew McGregor, nhưng điều này rất thông minh. Cảm ơn – ptrn

+1

Thực ra, điều này hóa ra lại là giải pháp tốt nhất. Một từ sổ ghi chép của CIA đã phối hợp với các thủ đô của quốc gia. – ptrn

1

Khái niệm trung tâm của một quốc gia không được xác định rõ. Liệu các điều phối của các thành phố thủ đô có làm được không? Nếu vậy bạn có thể trích xuất chúng từ một nơi nào đó như Wikipedia tương đối đơn giản. Chỉ có khoảng 200 hoặc hơn. Điều đó nói rằng, tôi lưu ý rằng CIA World Factbook (có sẵn trực tuyến) cung cấp cho các tọa độ gần đúng cho các trung tâm địa lý của các quốc gia.

+0

Nó thực sự không quan trọng cho dù đó là thủ đô của quốc gia hoặc phần nào ở trung tâm, miễn là nó nhất quán. Cảm ơn cho các tip – ptrn

3

Chính phủ Hoa Kỳ có standardized place name database mà bạn có thể truy vấn. Nó bao gồm một phối hợp vĩ độ/dài, trong số những thứ khác. Họ cũng cung cấp bộ dữ liệu tải xuống của họ.

5

Vâng, bạn có thể tải xuống this GIS layer và chạy điểm đa giác trên đó.

Chỉnh sửa: có thể this list sẽ thực hiện.

+0

Ah, hoàn hảo! Tôi đã thực sự sử dụng nó trước đây, tôi đoán tôi chỉ quên nó. Cảm ơn một bó :-) – ptrn

+0

Liên kết cuối thiếu Nam Sudan FYI. Liên kết đầu tiên bị hỏng. – thadk

23

Ngoài ra còn có http://dev.maxmind.com/geoip/legacy/codes/country_latlon/ này, đó là chính xác những gì chúng ta đều tìm kiếm, nhưng không có phân tích cần thiết. Số csv của nó sẽ phát độc đáo

+2

Nếu chỉ có bạn đã nhanh hơn một năm rưỡi thì nó sẽ giúp được :) – ptrn

+0

Tôi vừa mới nhảy vào :-D – ioc32

+0

CẢNH BÁO: Các hợp đồng của MaxMind cho Việt Nam là '16.0000,106.0000', thực tế nằm ở giữa miền nam Lào - hoàn toàn vô dụng. Các hợp đồng của CIA World Fact Book là '16 10 N, 107 50 E' đúng cho miền trung Việt Nam. Thật không may đây là những MaxMind đầu tiên và duy nhất tọa độ tôi đã thử nghiệm và do đó tôi không tin tưởng bất kỳ người khác. Cuốn sách thực tế của CIA là con đường để đi. – verbumSapienti

1

Tập dữ liệu biên giới thế giới theo chủ đề của bản đồ có nó. Bạn sẽ cần phải chuyển đổi nó sang định dạng mong muốn của bạn, mặc dù.

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

+0

sử dụng liên kết này để chuyển đổi dữ liệu: http://www.inquiron.com/online-file-converter/ –

0

Tôi có một tập tin CSV Tôi lắp ráp trở lại vào năm 2012 có diện tích tất cả các tên của các nước trong các ngôn ngữ khác nhau, khu vực trọng tâm (lat/lon) và thông tin lục: Các quốc gia trên thế giới (COW)

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

0

Nếu bạn tải về phiên bản mới nhất của tập tin dữ liệu quốc gia quốc tế này từ đất tự nhiên: ne_10m_admin_0_countries.zip

Sau đó đặt nó vào QGIS, bạn ca n có được các centroids dễ dàng bằng cách chạy các mục trình đơn Vector-> Geometry Tools-> Polygon Centroids và sau đó xuất khẩu bằng cách nhấp chuột phải và Save As.

-2

geographicdb pakage là thành phố thế giới Cơ sở dữ liệu với tính năng Latitude Longitude và múi giờ thông tin cho 240 nước với các thành phố của họ tên và mã quốc gia và hơn 270.000 hồ sơ

bạn có thể Tải geographicdb pakage from here

+1

Bạn có thể chia sẻ lại liên kết đó không? liên kết hiện tại bị hỏng – Pooran

6

Đây là một Google CSV document , với các tọa độ quốc gia.

+1

tks, làm thế nào để bạn tải xuống? Hay bạn chỉ cần sao chép và dán và chỉnh sửa theo ly để có được định dạng csv? – HattrickNZ

+0

Bạn có thể sao chép bảng từ mã nguồn và sau đó xử lý nó theo cách bạn muốn (ví dụ: viết một REGEX đơn giản trong MS Word hoặc thậm chí một tập lệnh bằng Python, C# v.v.). –

+3

Ở đây, tôi đã sử dụng trình chuyển đổi trực tuyến, bạn có thể tải tệp của mình: https://drive.google.com/file/d/0B52RjTfri3LPNDFuc0JHRDkxNE0/view?usp=sharing – yshahak

Các vấn đề liên quan