2010-09-03 24 views
17

Esiste un modo semplice per ottenere il nome del paese sul cui territorio è situato un determinato punto?Nome del paese per le coordinate GPS

Non mi interessa troppo l'accuratezza né le ambiguità date dalle dispute politiche. Ho solo bisogno di una buona approssimazione.

+1

Vuoi farlo utilizzando un servizio online o anche offline? A quale piattaforma/linguaggio di programmazione vuoi associare la risposta? – hippietrail

risposta

6

MODIFICA: L'API di Yahoo Dove non è più disponibile.

Prova il servizio Yahoo! APIs.

Latitudine e longitudine

Latitudine e longitudine possono essere specificati per il parametro posizione. Latitudine e longitudine può essere espressa come decimale gradi o gradi-minuti-secondi, con le direzioni iniziali o finali o segnali guida. Se sono fornite le direzioni , la longitudine può apparire prima della latitudine. Se le direzioni non sono fornite, la longitudine può essere visualizzata prima della latitudine se è fuori dall'intervallo da -90 a 90. Altrimenti, la latitudine deve apparire prima . I segni di punteggiatura (virgole, gradi, minuti, secondi) sono ignorati.

Examples: 

•50.3 -120.5 
•50.3, -120.5 
•-120.5 50.3 
•50.3 N 120.5 W 
•120.5 W 50.3 N 
•50 18 0 -120 30 0 
•50 18 0 N 120 30 0 W 
•50° 18' 0" N 120° 30' 0" W 

L'elemento di risposta vi darà il paese, così come molti altri elements.

Non dimenticare di inviare come parametro gflags = R, per eseguire il geocoding inverso. Se vuoi l'output in json, invia anche il parametro flags = J.

+0

Yahoo! L'API geocode location non fornisce alcuna informazione per diverse richieste che ho provato, per località che non sono così difficili da cercare (niente in mezzo o l'oceano o qualcosa del genere), quindi sarei molto attento quando dipendere da questo. – Guss

+0

Conosci i limiti API? –

+1

@Felipe: 50.000 richieste/giorno su [PlaceFinder] (http://developer.yahoo.com/geo/placefinder/). – GalacticJello

5

Come utilizzare il servizio google's reverse geo-encoding?

+1

Il problema è: L'utilizzo dell'API di geocoding di Google è soggetto a un limite di query di 2.500 richieste di geolocalizzazione al giorno. (L'utente di Google Maps API for Business può eseguire fino a 100.000 richieste al giorno.) (...) Nota: l'API di geocoding può essere utilizzata solo in combinazione con una mappa di Google; È vietato eseguire il geocoding senza visualizzarli su una mappa. Per i dettagli completi sull'utilizzo consentito, consultare i Termini e condizioni di servizio di Google Maps. –

5

Solo per il riferimento, geonames.org ha anche un buon servizio web, ma è a tasso limitato (che è stato un problema nel mio caso dal momento che ho dovuto cercare un grande gruppo di coordinate).

Esempio: http://ws.geonames.org/findNearbyPlaceName?lat=47.3&lng=9

+0

Questo mi ha salvato, grazie! Hai bisogno di un nome utente per farlo funzionare, e 'felix' e' nico' funzionano bene. (Per le altre persone:) hai un limite di 2000 all'ora, quindi usali saggiamente – Nico

0

Si potrebbe anche guardare ai servizi da tinygeocoder.

Un'altra alternativa è scaricare le mappe del paese dalla terra naturale (o un'altra fonte). Utilizzando Geotools è possibile cercare se il punto si trova all'interno di uno dei paesi.

1

Ecco un po 'di codice JavaScript per ottenere il nome del paese da latitudine e longitudine:


  1. Utilizzo dei servizi di geocodifica di Google [jsfiddle]:

    var lookupCountryWithGoogle = function (lat, lng) { var latlng = new google.maps.LatLng (lat, lng);

    var geoCoder = new google.maps.Geocoder(); 
    
    geoCoder.geocode({ 
        location: latlng 
    }, function(results, statusCode) { 
        var lastResult = results.slice(-1)[0]; 
    
        if (statusCode == 'OK' && lastResult && 'address_components' in lastResult) { 
         alert('coordinates: ' + lat + ', ' + lng + '\n' + 'country: ' + lastResult.address_components.slice(-1)[0].long_name); 
        } else { 
         alert('coordinates: ' + lat + ', ' + lng + '\n' + 'failed: ' + statusCode); 
        } 
    }); 
    

    };

    lookupCountryWithGoogle (43.7534932, 28.5743187); // riuscirà lookupCountryWithGoogle (142, 124); // mancherà

(Avrai bisogno di caricare il supporto JavaScript di Google per questo da un URL come maps.google.com/maps/api/js?sensor=false&fake=.js)


  1. Utilizzando ws.geonames.org[jsfiddle]:

    lookupCountryWithGeonames var = function (lat, lng) {

    $.getJSON('http://ws.geonames.org/countryCode', { 
        lat: lat, 
        lng: lng, 
        type: 'JSON' 
    }, function(results) { 
        if (results.countryCode) { 
         alert('coordinates: ' + lat + ', ' + lng + '\n' + 'country: ' + results.countryName); 
        } else { 
         alert('coordinates: ' + lat + ', ' + lng + '\n' + 'failed: ' + results.status.value + ' ' + results.status.message); 
        } 
    }); 
    

    };

    lookupCountryWithGeonames (43.7534932, 28.5743187); // riuscirà

    lookupCountryWithGeonames (142, 124); // fallirà

Problemi correlati