2016-01-20 13 views
5

Có thể với thư viện C# hoặc cơ sở dữ liệu cập nhật về các toạ độ địa lý để lấy tên quốc gia từ vĩ độ và kinh độ Không có API như API JavaScript của Google Maps?C# - Lấy Quốc gia từ vĩ độ/kinh độ mà không có API

+1

Bạn cần bao nhiêu độ chính xác? – fryday

+2

Pure C#? bạn không thể. Có thể trùng lặp [cách lấy tên quốc gia từ vĩ độ và kinh độ] (http://stackoverflow.com/questions/25866020/how-to-get-country-name-from-latitude-and-longitude) – MaYaN

+1

@ MaYaN, có thể với cơ sở dữ liệu tốt và thuật toán thông minh. – fryday

Trả lời

1

Bạn có thể làm điều đó. Nếu bạn không cần nhiều chính xác, bạn có thể sử dụng bảng có tọa độ của các quốc gia. Và xác định tọa độ quốc gia gần nhất. Nhưng đó là cách xấu.

Giải pháp tốt là bạn nhận được tệp KML của biên giới quốc gia. Nhưng bạn sẽ cần thuật toán tốt để khám phá trong biên giới của quốc gia mà bạn quan tâm. Thuật toán tìm posiiton của điểm và đa giác được mô tả here. Ngoài ra còn có một số câu trả lời trên stackoverflow 1, 2, nhưng nó dành cho máy bay. Cũng có thể là để tính toán trước các quốc gia cho các tọa độ với một số bước nhỏ (ví dụ: 30 '') và xác định coutry bằng cách tìm điểm được tính toán gần nhất cho điểm của bạn. Bạn có thể tính toán trước quốc gia với rất nhiều dịch vụ trực tuyến.

4

Bạn có thể sử dụng GeoNames và tải xuống cơ sở dữ liệu cục bộ here.

Và vì vậy, đây là truy vấn mẫu mà bạn có thể sử dụng để lấy mục nhập gần nhất từ ​​tọa độ vĩ độ/dài.

var query = new SQLiteCommand("select name,latitude,longitude,country_code,feature_code from geoloc order by ((latitude - @lat) * (latitude - @lat) + (longitude - @lng) * (longitude - @lng)) LIMIT 1, cn); 
+1

Nếu tôi hiểu rõ, cơ sở dữ liệu là dữ liệu về các thành phố có tọa độ và quốc gia của chúng. Tôi chỉ cần tính toán thành phố gần nhất từ ​​quan điểm của tôi (vĩ độ, kinh độ) và kiểm tra quốc gia? Theo fryday, nó không phải là giải pháp tốt nhất. Ví dụ: – k4st0r42

+0

@ k4st0r42, cách tiếp cận như vậy sẽ không tốt trong các ocens. Tốt hơn là sử dụng cách tiếp cận với biên giới quốc gia. – fryday

+0

@ k4st0r42. Tôi đã cập nhật câu trả lời của mình bằng một truy vấn mẫu để lấy mục nhập gần nhất từ ​​một tọa độ vĩ độ/dài. – sborfedor

0

tôi đã tạo ra một dự án github rằng sẽ nhận được quốc gia hoặc bang Mỹ dựa trên điểm gps (lat; lon) thấy here

nếu tìm thấy, sẽ trả về một lớp locationInfo với Id và Tên

cũng có sẵn dưới dạng nuget package

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