Sto utilizzando un elenco di codici postali e sono curioso di sapere quanti (o quali) codici postali sono mappati a più di uno stato degli Stati Uniti o degli Stati Uniti città?
Ad esempio, so che il codice postale 42223
si risolve in US Army, Fort Campbell che si trova a cavallo del confine di stato KY-TN. Stranamente, solo lAPI di Google restituisce TN
per lo stato corrispondente a quello zip.
Commenti
- Come stai definendo ” città ” e ” codice postale “?
Risposta
Esistono 13 aree di tabulazione del codice postale (ZCTA) di censimento statunitense multistato: 02861, 42223, 59221, 63673, 71749, 73949, 81137, 84536, 86044, 86515, 88063, 89439 & 97635.
Come altri hanno già detto, lì sono alcuni modi diversi per capire larea coperta da un codice postale, ma gli ZCTA sono i più semplici e solo la versione ufficiale che io sappia.
Quindi il tuo esempio di 42223 copre un confine di stato, ma sembra che in realtà sia tra il Maryland e la Virginia. quello tra il Kentucky e il Tennessee.
Ecco lelenco completo con gli stati:
02861 Massachusetts 02861 Rhode Island 42223 Kentucky 42223 Tennessee 59221 Montana 59221 North Dakota 63673 Illinois 63673 Missouri 71749 Arkansas 71749 Louisiana 73949 Oklahoma 73949 Texas 81137 Colorado 81137 New Mexico 84536 Arizona 84536 Utah 86044 Arizona 86044 Utah 86515 Arizona 86515 New Mexico 88063 New Mexico 88063 Texas 89439 California 89439 Nevada 97635 California 97635 Oregon
Ecco come lho generato (con Panda in Python):
import pandas as pd zcta_to_place_url = "http://www2.census.gov/geo/docs/maps-data/data/rel/zcta_place_rel_10.txt" # load relevant data df = pd.read_csv( zcta_to_place_url, dtype={"ZCTA5": str}, usecols=["ZCTA5", "STATE"]) # the data often repeats the same (ZCTA, state) pair. Remove these df = df.drop_duplicates() # get number of times each ZCTA appears (most are only 1) counts = df["ZCTA5"].value_counts() # get those listed more than once multi_state_zips = df[df.ZCTA5.isin(counts[counts > 1].index)] # the census uses numeric state codes # replace these with state names census_codes_to_names_url = "http://www2.census.gov/geo/docs/reference/state.txt" states = pd.read_csv(census_codes_to_names_url, sep="|") merged = pd.merge( multi_state_zips, states, on="STATE" )[["ZCTA5", "STATE_NAME"]] print merged.sort(["ZCTA5", "STATE_NAME"]).to_string(index=False)
Modifica : sembra che il censimento abbia due diverse codifiche a due cifre per gli stati. Entrambi sono numeri assegnati in base allordine alfabetico dello stato, ma uno sembra applicare i numeri direttamente da 1-51 (50 stati + DC), mentre laltro salta alcuni numeri . Stavo usando il primo, mentre avrei dovuto usare il secondo, quindi i nomi degli stati che ho elencato erano sbagliati. “Ho aggiornato il codice e risultati con lelenco corretto.
Modifica : nuova mappatura di stato confermata dallAPI OpenCongress: https://gist.github.com/gabrielgrant/89f883d093e2abf129ad
Commenti
- Grazie mille per aver colto questo @JesseCrocker – Sembra il censimento (confuso) ha due diverse codifiche a due cifre per gli stati. Entrambi sono numeri assegnati in base allordine alfabetico dello stato ‘, ma sembra applicare i numeri direttamente da 1-51 (50 stati + DC), mentre laltro salta alcuni numeri . Stavo usando il primo, ma avrei dovuto usare il secondo, quindi i nomi degli stati che ho elencato erano sbagliati (anche se gli ZCTA erano buoni). Ho ‘ corretto il codice e i risultati con lelenco corretto.
- Per quanto riguarda le lacune nei codici FIPS, i numeri ignorati erano riservati negli anni 70 per i territori periferici (Samoa americane, zona del canale, Guam, Porto Rico e Isole Vergini), ma ‘ non sono stati utilizzati per loro. en.wikipedia.org/wiki/…
- Don ‘ non dimenticare il codice postale 57717 che comprende tre stati sei, contee e più città: 57717 Aurora, SD 57717 Butte, SD 57717 Carter, MT 57717 Crook, WY 57717 Harding, SD 57717 Lawrence, SD
- Questo elenco non è ‘ quasi completo. Controlla la mia risposta per unapprossimazione di gran lunga migliore. gis.stackexchange.com/a/223445/6052
- Questo ‘ è strano. Google Maps mostra
02861
come letteralmente parte del confine tra MA e RI e lintero codice postale saldamente in RI google.com/ maps / place / Pawtucket, + RI + 02861 / …
Answer
Non cè “davvero un modo per dirlo; poiché non esiste una forma di confine ZipCode definita dallUSPS. I ZipCodes sono definiti da un riquadro di delimitazione di Streets consegnato a dai corrieri di un particolare centro di distribuzione.
Quindi dovresti prendere i dati AIS di USPS ed estrarre tramite ZipCodes le strade che vengono consegnate da un determinato ufficio postale, quindi unisci queste a una griglia stradale. Questo è ciò che tutti i fornitori commerciali (Nokia / TomTom) creano la forma Psuedo che usano per mostrare i confini postali.
Questo processo inesatto è il motivo per cui USPS non fornisce dati spaziali.
Commenti
- Cè qualcosa di accurato? Che cosè la verità? Molte Sono stati creati strati di confini zip, che possono o meno servire allo scopo di questa particolare analisi dati i suoi requisiti sconosciuti. Limiti di Esri free zip – arcgis.com/home/item.html?id=8d2012a2016e484dafaac0451f9aea24 Vedi anche gis .stackexchange.com / questions / 2682 / …
- Dato, ma devi anche capire, qualunque cosa tu stia facendo, le implicazioni dei dati che utilizzi.
Risposta
LUS Census Bureau ricava i confini approssimativi per i codici postali in base agli indirizzi contenuti al loro interno, chiamati ZIP Aree di tabulazione del codice (ZCTA).
pubblicano file di relazione che descrivono come le loro ZCTA vengono mappate a varie altre aree geografiche. Se esamini il file di relazione ZCTA to Place , puoi vedere come vengono mappati a città e paesi. Puoi dedurre come si associano agli stati dal file di relazione ZCTA to Counties .
I file di relazione utilizzano ID geografia censimento, quindi ” prendere un file del dizionario geografico per aiutarti a convertire gli ID numerici nei nomi di località o di contea che “ti aspetti.
Come altri hanno affermato le risposte, è probabile che qualsiasi mappatura dei codici postali sui luoghi sia approssimativa, ma ho avuto fortuna con i file di dati del censimento.
Risposta
Dati TIGER 2016 con PostGIS
Come avvertenza speciale, i dati ZCTA non sono codici postali USPS. È unapprossimazione di esso. I codici postali USPS sono davvero orribili e non utili se non per approssimare. Tutti, comprese tutte le entità governative diverse da USPS, e (il censimento per la creazione di ZCTA) li ignora completamente. Se USPS volesse crescere un po , “dovrebbero semplicemente convertirsi allultimo ZCTA e fornire poligoni GIS autorevoli.
- 2016 TIGER ZCTA 877 MB di dati della tabella.
- 33.144 ZCTA
- 52.669.641 punti totali,
- TIGER States 2016 15 MB di dati della tabella.
- 56 “Stato”
- 912.464 punti in totale
Allora … Qui cerchiamo le intersezioni tra Set di dati TIGER State e TIGER ZCTA. Nota, qualifichiamo gli stati dell1% dellarea ZCTA totale. Se l1% dellarea ZCTA non è nello stato, presumiamo che sia un errore di arrotondamento, o qualcuno grasso che diteggia qualcosa al censimento. Dai unocchiata a 56168
o anche 83832
per un codice postale che “potremo” riordinare con questa selettività aggiunta.
SELECT zcta5ce10, array_agg(state.name ORDER BY state.name) AS states FROM census.state AS state JOIN census.zcta AS zcta ON ( ST_Intersects(state.geog::geometry, zcta.geog::geometry) AND NOT ST_Touches(state.geog::geometry, zcta.geog::geometry) AND ST_Area(ST_Intersection(state.geog, zcta.geog)) > (ST_Area(zcta.geog)*0.01) ) GROUP BY zcta.zcta5ce10 HAVING count(*) > 1 ORDER BY zcta5ce10;
Ecco il risultato
zcta5ce10 | states -----------+--------------------------------- 03579 | {Maine,"New Hampshire"} 20135 | {Virginia,"West Virginia"} 24604 | {Virginia,"West Virginia"} 31905 | {Alabama,Georgia} 38079 | {Kentucky,Tennessee} 38769 | {Arkansas,Mississippi} 38852 | {Alabama,Mississippi} 42223 | {Kentucky,Tennessee} 51001 | {Iowa,"South Dakota"} 51023 | {Iowa,"South Dakota"} 51360 | {Iowa,Minnesota} 51557 | {Iowa,Nebraska} 51640 | {Iowa,Missouri} 52542 | {Iowa,Missouri} 52573 | {Iowa,Missouri} 52626 | {Iowa,Missouri} 54554 | {Michigan,Wisconsin} 56027 | {Iowa,Minnesota} 56144 | {Minnesota,"South Dakota"} 56164 | {Minnesota,"South Dakota"} 56219 | {Minnesota,"South Dakota"} 56744 | {Minnesota,"North Dakota"} 57026 | {Minnesota,"South Dakota"} 57030 | {Minnesota,"South Dakota"} 57068 | {Minnesota,"South Dakota"} 57078 | {Nebraska,"South Dakota"} 57638 | {"North Dakota","South Dakota"} 57641 | {"North Dakota","South Dakota"} 57642 | {"North Dakota","South Dakota"} 57645 | {"North Dakota","South Dakota"} 57648 | {"North Dakota","South Dakota"} 57660 | {"North Dakota","South Dakota"} 57717 | {"South Dakota",Wyoming} 57724 | {Montana,"South Dakota"} 58225 | {Minnesota,"North Dakota"} 58439 | {"North Dakota","South Dakota"} 58623 | {"North Dakota","South Dakota"} 58649 | {"North Dakota","South Dakota"} 58653 | {"North Dakota","South Dakota"} 59221 | {Montana,"North Dakota"} 59270 | {Montana,"North Dakota"} 59275 | {Montana,"North Dakota"} 59847 | {Idaho,Montana} 63673 | {Illinois,Missouri} 65729 | {Arkansas,Missouri} 65733 | {Arkansas,Missouri} 65761 | {Arkansas,Missouri} 66541 | {Kansas,Nebraska} 67950 | {Kansas,Oklahoma} 68325 | {Kansas,Nebraska} 68719 | {Nebraska,"South Dakota"} 68978 | {Kansas,Nebraska} 69201 | {Nebraska,"South Dakota"} 69212 | {Nebraska,"South Dakota"} 69216 | {Nebraska,"South Dakota"} 71749 | {Arkansas,Louisiana} 72338 | {Arkansas,Tennessee} 72644 | {Arkansas,Missouri} 73949 | {Oklahoma,Texas} 75556 | {Arkansas,Texas} 79837 | {"New Mexico",Texas} 80758 | {Colorado,Nebraska} 81137 | {Colorado,"New Mexico"} 81324 | {Colorado,Utah} 82063 | {Colorado,Wyoming} 82082 | {Nebraska,Wyoming} 82701 | {"South Dakota",Wyoming} 82801 | {Montana,Wyoming} 82930 | {Utah,Wyoming} 83111 | {Idaho,Wyoming} 83120 | {Idaho,Wyoming} 83312 | {Idaho,Utah} 83342 | {Idaho,Utah} 84034 | {Nevada,Utah} 84531 | {Arizona,Utah} 84536 | {Arizona,Utah} 86044 | {Arizona,Utah} 86504 | {Arizona,"New Mexico"} 86514 | {Arizona,Utah} 86515 | {Arizona,"New Mexico"} 87328 | {Arizona,"New Mexico"} 88220 | {"New Mexico",Texas} 88430 | {"New Mexico",Texas} 89010 | {California,Nevada} 89019 | {California,Nevada} 89060 | {California,Nevada} 89421 | {Nevada,Oregon} 89439 | {California,Nevada} 89832 | {Idaho,Nevada} 97635 | {California,Oregon} 97910 | {Idaho,Oregon} 99128 | {Idaho,Washington} 99362 | {Oregon,Washington} (93 rows)
Dovresti essere in grado di controllare tutti questi elementi in Google Maps. Tuttavia, Google Maps è inoltre non autorevole.
Risposta
Sovrapposizioni di stato menzionate nel documento del censimento del 1994
Nel giugno 1994, secondo il seguente sito US Census Bureau cerano 153 codici postali che attraversano i confini di stato.
Come accennato in precedenza, ci sono alcuni CAP che consegnano attraverso i confini di stato e ci sono alcuni ZIP / settori che attraversano i confini di contea. Ci sono 153 codici postali in più di uno stato. Ci sono 9.000 codici postali in più di una contea. Cerano 11.331 (su un totale di 857.400) CAP / settori che erano spl per contea. Tutti gli stati avevano alcuni settori divisi, con Virginia, Michigan e Ohio con un dosaggio particolarmente maggiore. I settori delle rotte rurali, come previsto, contenevano (relativamente) la parte del leone dei settori divisi. La maggior parte degli altri casi si trova nella fascia del settore inferiore (riservato alle caselle postali) e nel settore 99 (riservato al direttore delle poste e alle imprese posta di ritorno). Deve esserci unassegnazione di codice provinciale non standard per questi casi selezionati. Dovremo esaminarli ulteriormente in un secondo momento.
Risposta
Con ArcGIS è possibile utilizzare lo strumento join spaziale (o in uno script) per trovare quali poligoni di codice postale si intersecano con più di uno stato poligono. Nella feature class di output, ci sarà un campo Join_Count che indicherà più stati. Potresti fare una cosa simile con zip e città. Probabilmente ci saranno falsi positivi dove le zip si sovrappongono involontariamente a più di una a causa di imprecisioni / mancanza di confine o È possibile eseguire un buffer negativo di -100m delle zip prima del join spaziale e guarda cosa fa.
import arcpy target_features = "C:/data/usa.gdb/states" join_features = "C:/data/usa.gdb/zips" out_feature_class = "C:/data/usa.gdb/states_zips" arcpy.SpatialJoin_analysis(target_features, join_features, out_feature_class, "JOIN_ONE_TO_MANY")
http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Spatial_Join/00080000000q000000/
“Due nuovi campi, Join_Count e TARGET_FID, vengono sempre aggiunti alla feature class di output. Join_Count indica quante funzionalità di join corrispondono a ciascuna funzionalità di destinazione (TARGET_FID). Un altro nuovo campo, JOIN_FID, viene aggiunto alloutput quando JOIN_ONE_TO_MANY è specificato nel parametro Join Operation.”
Risposta
Puoi fare unintersezione spaziale in PostGIS e ottenere un elenco di ogni stato o città e i codici postali che si intersecano, il che restituirebbe più codici postali nel punto in cui si intersecano più stati e per ogni città che interseca lo stesso CAP, vedrai anche quel risultato.
Commenti
Risposta
In Pennsylvania i confini degli uffici postali non si allineano con i confini municipali. Alcune township potrebbero avere diversi uffici postali che effettuano consegne. Quando stavamo facendo lindirizzamento al 911, alcune township hanno chiesto allOP di modificare al nome della borgata, lOP ha permesso loro di farlo a condizione che continuassero a utilizzare il vecchio codice postale dellufficio postale. Molti lo hanno fatto. Puoi vedere da questi collegamenti che lo stesso codice postale è in uso per diverse città. https://suburbanstats.org/zip-codes/pennsylvania/thornhurst https://suburbanstats.org/zip-codes/pennsylvania/scott-twp Fondamentalmente, lutilizzo di “Anytown” con il codice postale corretto funzionerà a causa dei loro computer di smistamento che leggono zip codice prima.
Potresti anche imbatterti in PO che hanno solo caselle postali e non effettuano consegne locali, quindi nessun poligono per la tua mappa. Questi PO sono generalmente piccoli.