Domanda

Date una latitudine e una longitudine, qual è il modo più semplice per trovare il nome della città e il codice postale statunitense di quella località.

(Questo è simile a https://stackoverflow.com/questions/23572/latitude-longitude-database, tranne che voglio convertire nella direzione opposta.)


Domanda correlata: Ottieni l'indirizzo stradale nella coppia latitudine/longitudine

È stato utile?

Soluzione

Questo è il servizio web da chiamare.http://developer.yahoo.com/search/local/V2/localSearch.html

Questo sito ha servizi web ok, ma non esattamente quello che stai chiedendo qui.http://www.usps.com/webtools/

Altri suggerimenti

Tutti i servizi online menzionati e i loro concorrenti offrono la "geocodificazione inversa" che fa quello che chiedi: convertire le coordinate lon/lat in un indirizzo stradale di qualche tipo.

Se hai bisogno solo dei codici postali e/o delle città, otterrei il database dei codici postali e il database delle aree urbane dall'Ufficio censimento degli Stati Uniti che è GRATUITO (pagato con i dollari delle tue tasse). http://www.census.gov/geo/www/cob/zt_metadata.html.

Da lì, puoi creare il tuo algoritmo di ricerca per i dati spaziali o utilizzare uno dei database spaziali come Microsoft SQL Server, PostGIS, Oracle Spatial, ArcSDE, ecc.

Aggiornamento:I dati del censimento del 2010 sono disponibili all'indirizzo:http://www2.census.gov/census_2010/

Hai due opzioni principali:

Utilizza un servizio di geocodifica inversa

  • Google può essere utilizzato solo insieme a una mappa Google incorporata nella stessa pagina, quindi non lo consiglio a meno che non sia quello che stai facendo.
  • Yahoo ne ha uno buono, vedi http://developer.yahoo.com/search/local/V3/localSearch.html
  • Non ho usato OpenStreetMap.Le loro mappe sembrano molto dettagliate e approfondite e migliorano sempre, ma sarei preoccupato per la latenza e l'affidabilità e se i dati degli indirizzi sono completi (i dati degli indirizzi non sono direttamente visibili su una mappa e OpenStreetMap è principalmente una mappa interattiva ).

Utilizza una mappa dei codici postali

L'US Census pubblica una mappa dei codici postali degli Stati Uniti Qui.Lo costruiscono dalla loro unità statistica più piccola, un Census Block, che nella maggior parte dei casi corrisponde a un isolato cittadino.Per ogni blocco, trovano quale codice postale è più comune in quel blocco (la maggior parte dei blocchi ha un solo codice postale, ma i blocchi vicino al confine tra i codici postali potrebbero averne più di uno).Quindi aggregano tutti i blocchi con un determinato codice postale in un'unica area chiamata area di tabulazione del codice postale.Pubblicano una mappa di quelle aree in formato shapefile ESRI.

Lo so perché ho scritto una libreria Java e un servizio web che (tra le altre cose) utilizza questa mappa per restituire il codice postale per una determinata latitudine e longitudine.È un prodotto commerciale, quindi non sarà per tutti, ma è veloce, facile da usare e risolve questo problema specifico senza API.Puoi leggere informazioni su questo prodotto qui:

http://askgeo.com/database/UsZcta2010

E su tutte le vostre offerte geografiche qui:

http://askgeo.com

A differenza delle soluzioni di geocodifica inversa, che sono disponibili solo come API Web perché gestire il proprio servizio sarebbe estremamente difficile, è possibile eseguire questa libreria sul proprio server e non dipendere da una risorsa esterna.

Se il volume delle chiamate al servizio aumenta troppo, dovresti assolutamente prendere in considerazione l'idea di procurarti il ​​tuo set di dati postali.Nella maggior parte dei casi, ciò fornirà tutte le informazioni di cui hai bisogno e ci sono molti strumenti DB per indicizzare i dati sulla posizione (ad es.PostGIS per PostgreSQL).

Puoi acquistare un abbonamento abbastanza economico ai codici postali con informazioni su latitudine e longitudine qui: http://www.zipcodedownload.com/

Oppure la geocodificazione inversa di Google

collegamento

http://maps.google.com/maps/geo?output=xml&q={0},{1}&key={2}&sensor=true&oe=utf8

dove 0 è la latitudine, 1 è la longitudine

Un altro fornitore di geocodifica inversa che non è stato ancora elencato qui lo è OpenStreetMap:puoi usare il loro Nominativo servizio di ricerca.

OSM ha il vantaggio (potenzialmente?) aggiunto di essere interamente modificabile dall'utente (come un wiki) e quindi di avere uno schema di licenza molto liberale per tutti questi dati.Pensa a questo dei dati cartografici open source.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top