2016-01-20 618 views
5

E 'possibile con una libreria C# o un database di aggiornamento sulle coordinate geografiche per ottenere il nome del paese da latitudine e longitudine Senza un'API come l'API JavaScript di Google Maps?C# - Ottieni paese da latitudine/longitudine senza API

+1

Di quanto livello di precisione hai bisogno? – fryday

+2

Pure C#? non puoi. Duplicato possibile di [come ottenere il nome del paese da latitudine e longitudine] (http://stackoverflow.com/questions/25866020/how-to-get-country-name-from-latitude-and-longitude) – MaYaN

+1

@ MaYaN, possibile con un buon database e un algoritmo intelligente. – fryday

risposta

1

Si può fare. Se non hai bisogno di molta precisione, puoi usare una tabella con le coordinate dei paesi. E determinare la coordinata del paese più vicino. Ma è una cattiva strada.

Una buona soluzione è ottenere un file KML di confini nazionali. Ma avrai bisogno di un buon algoritmo per deteminare al confine di quale Paese il tuo punto è. L'algoritmo per la ricerca di posizioni di punti e poligoni è descritto con here. Inoltre ci sono alcune risposte su StackOverflow 1, 2, ma è per aereo.

Inoltre, è possibile calcolare preventivamente i paesi per le coordinate con qualche piccolo passo (ad esempio 30 '') e determinare il coutry individuando il punto precalcolato più vicino al punto. Puoi precalcolare il Paese con molti servizi online.

4

È possibile utilizzare GeoNames e scaricare un database locale here.

E così, questa è una query di esempio che è possibile utilizzare per ottenere la voce più vicina da una coordinata lat/long.

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

Se ho ben capito, il database è dati su città con le loro coordinate e i loro paesi. Devo solo calcolare la città più vicina dal mio punto (latitudine, longitudine) e controllare il paese? Secondo Fryday, non è la soluzione migliore. – k4st0r42

+0

@ k4st0r42, ad esempio, tale approccio sarà negativo in ocen. È meglio usare l'approccio con i confini nazionali. – fryday

+0

@ k4st0r42 a destra. Ho aggiornato la mia risposta con una query di esempio per ottenere la voce più vicina da una coordinata lat/long. – sborfedor

0

Ho creato un progetto github che otterrà paese o stato americano sulla base di punto gps (lat; lon) vedere here

se trovato, restituirà una classe locationInfo con Id e nome

disponibile anche come nuget package