Determinare quali codici postali statunitensi mappano su più di uno stato o più di una città?


23

Sto utilizzando un elenco di codici postali e sono curioso di sapere quanti (o quali) codici postali sono associati a più di uno stato o città degli Stati Uniti?

Ad esempio, so che il codice postale si 42223risolve in US Army, Fort Campbell che si trova a cavallo del confine di stato del KY-TN. Stranamente, l'API di google ritorna solo TNper quello stato corrispondente a quello zip.


Come definisci "città" e "codice postale"?
Evan Carroll,

Risposte:


22

Esistono 13 aree di tabulazione del codice postale (ZCTA) multi-stato del censimento degli Stati Uniti: 02861, 42223, 59221, 63673, 71749, 73949, 81137, 84536, 86044, 86515, 88063, 89439 e 97635.

Come altri hanno già detto, ci sono alcuni modi diversi per capire l'area coperta da un codice postale, ma gli ZCTA sono la più semplice e l'unica versione ufficiale che conosco.

Quindi il tuo esempio di 42223 attraversa un confine di stato, ma sembra che sia effettivamente tra il Maryland e la Virginia. quello tra Kentucky e Tennessee.

Ecco l'elenco 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 l'ho 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 all'ordine alfabetico dello stato, ma uno sembra applicare i numeri direttamente da 1-51 (50 stati + DC), mentre l'altro salta alcuni numeri . Stavo usando il primo, mentre avrei dovuto usare il secondo, quindi i nomi di stato che ho elencato erano sbagliati. Ho aggiornato il codice e i risultati con l'elenco corretto.

Modifica : nuova mappatura dello stato confermata dall'API OpenCongress: https://gist.github.com/gabrielgrant/89f883d093e2abf129ad


2
Grazie mille per aver catturato questo @JesseCrocker - Sembra che il censimento (confusamente) abbia due diverse codifiche a due cifre per gli stati. Entrambi sono numeri assegnati in base all'ordine alfabetico dello stato, ma uno sembra applicare i numeri direttamente da 1-51 (50 stati + DC), mentre l'altro salta alcuni numeri . Stavo usando il primo, ma avrei dovuto usare il secondo, quindi i nomi di stato che ho elencato erano sbagliati (anche se gli ZCTA erano buoni). Ho corretto il codice e i risultati con l'elenco corretto.
Gabriel Grant,

2
Per quanto riguarda le lacune nei codici FIPS, negli anni '70 i numeri saltati erano riservati ai territori periferici (Samoa americane, Zona dei canali, Guam, Portorico e Isole Vergini), ma alla fine non vennero utilizzati per loro. en.wikipedia.org/wiki/…
neuhausr

3
Non dimenticare il CAP 57717 che comprende tre stati, contee e città multiple: 57717 Aurora, SD 57717 Butte, SD 57717 Carter, MT 57717 Crook, WY 57717 Harding, SD 57717 Lawrence, SD
Jeffrey

1
Questo elenco non è quasi completo. Controlla la mia risposta per un'approssimazione molto migliore. gis.stackexchange.com/a/223445/6052
Evan Carroll

@Jeffrey interessante, mi chiedo perché non sia elencato nell'elenco dei luoghi ZCTA?
Gabriel Grant,

11

Non c'è davvero modo di dirlo; poiché non esiste una forma di confine ZipCode definita dall'USPS. I codici postali sono definiti da una casella di delimitazione di strade consegnate dai corrieri di un particolare centro di distribuzione.

Quindi dovresti prendere i dati AIS USPS ed estrarre da ZipCodes le strade che vengono consegnate da un determinato ufficio postale, quindi unisciti a questi una griglia stradale. Questo è ciò che fanno tutti i venditori commerciali (Nokia / TomTom) per creare la forma Psuedo che usano per mostrare i confini postali.

Questo processo inesatto è il motivo per cui USPS non fornisce dati spaziali.


2
È qualcosa di preciso? Qual è la verità? Sono stati creati molti livelli di limiti zip, che possono o meno servire allo scopo di questa particolare analisi dati i suoi requisiti sconosciuti. Limiti zip gratuiti Esri - arcgis.com/home/item.html?id=8d2012a2016e484dafaac0451f9aea24 Vedi anche gis.stackexchange.com/questions/2682/…
awesomo

2
Dato, ma devi anche capire qualunque cosa tu stia facendo le implicazioni dei dati che usi.
DEWright,

7

L'Ufficio censimento degli Stati Uniti ricava limiti approssimativi per i codici postali in base agli indirizzi in essi contenuti, chiamati aree di tabulazione dei codici postali (ZCTA).

Essi pubblicano i file di rapporto che descrivono come i loro ZCTAs mappa a varie altre aree geografiche. Se si esamina il file di relazione ZCTA to Place , è possibile vedere come si mappano alle città. È possibile dedurre come si associano agli stati dal file di relazione ZCTA a Contee .

I file delle relazioni utilizzano gli ID geografici del censimento, quindi ti consigliamo di prendere un file gazetteer per aiutarti a convertire gli ID numerici nel nome del luogo o della contea che ti aspetti.

Come hanno affermato altre risposte, qualsiasi mappatura dei codici ZIP sui luoghi è probabilmente approssimativa, ma ho avuto buona fortuna con i file di dati del censimento.


4

Dati TIGER 2016 con PostGIS

Come avvertimento speciale, i dati ZCTA non sono codici postali USPS. È un'approssimazione. I codici postali USPS sono davvero orribili e non utili se non per approssimare. Tutti, compresi tutti gli enti governativi diversi da USPS, e (il censimento per la creazione di ZCTA) li ignorano del tutto. Se USPS avesse voluto crescere un po ', si sarebbe semplicemente convertito all'ultimo ZCTA e avrebbe fornito poligoni GIS autorevoli.

  • 2016 dati della tabella TIGER ZCTA 877 MB.
    • 33.144 ZCTA
    • 52.669.641 punti totali,
  • 2016 TIGER Stati dati della tabella 15 MB.
    • 56 "Stato" s
    • 912.464 punti totali

Quindi ... Qui eseguiamo una query per le intersezioni tra i set di dati TIGER State e TIGER ZCTA. Nota, qualifichiamo gli stati dell'1% dell'area totale ZCTA. Se l'1% dell'area ZCTA non è nello stato, assumiamo che si tratti di un errore di arrotondamento o di qualcuno che grassa diteggiatura qualcosa al censimento. Dai un'occhiata 56168o anche 83832per un codice postale che stiamo potando 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 resulset

 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 tutto ciò su Google Maps. Tuttavia, anche Google Maps non è autorevole.


1

Sovrapposizioni statali menzionate nel documento del censimento del 1994

Nel giugno 1994, secondo il seguente sito del Census Bureau degli Stati Uniti, ci sono 153 codici postali che attraversano i confini statali.

Come accennato in precedenza, ci sono alcuni codici postali che consegnano attraverso le linee di stato e ci sono alcuni ZIP / settori che attraversano le linee di contea. Esistono 153 codici postali in più di uno stato.Esistono 9.000 codici postali in più di una contea. Vi erano 11.331 (su un totale di 857.400) ZIP / settori che erano divisi per contea. Tutti gli stati avevano alcuni settori divisi, con Virginia, Michigan e Ohio che avevano un dosaggio particolarmente maggiore. I settori delle rotte rurali, come previsto, contenevano (relativamente) la parte del leone dei settori frazionati. La maggior parte degli altri casi si trova nella fascia inferiore del settore (riservata alle caselle postali) e nel settore 99 (riservato al postmaster e alla restituzione della posta commerciale). È necessario che si verifichino assegnazioni di codici di contea non standard per questi casi selezionati. Dovremo indagare ulteriormente su questi in un secondo momento.


0

Con ArcGIS è possibile utilizzare lo strumento di unione spaziale (o in uno script) per trovare i poligoni del codice postale che si intersecano con più poligoni di stato. Nella classe caratteristica 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 in ​​cui le cerniere si sovrappongono involontariamente a più di una a causa di imprecisioni / mancanza o risoluzione dei bordi. Potresti eventualmente fare un buffer negativo di -100 m delle cerniere prima del join spaziale e vedere 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 classe di funzionalità di output. Join_Count indica quanti join le caratteristiche corrispondono a ciascuna caratteristica di destinazione (TARGET_FID). Un altro nuovo campo, JOIN_FID, viene aggiunto all'output quando JOIN_ONE_TO_MANY è specificato nel parametro Operazione join. "


0

In PostGIS puoi fare un'intersezione spaziale e ottenere un elenco di tutti gli stati o città e i codici postali che si intersecano, che restituirebbero più codici postali in cui più stati si intersecano e per ogni città che intersecano lo stesso codice postale, vedresti anche quel risultato.



-2

In Pennsylvania i confini dell'ufficio postale non si allineano con i confini comunali. Alcuni comuni possono avere diversi uffici postali che li consegnano. Quando stavamo affrontando il 911, alcuni comuni hanno chiesto all'OP di cambiare la loro nae con il nome del comune, l'OP ha permesso loro di farlo a condizione che continuassero a usare il vecchio codice postale dell'ufficio postale. Molti lo hanno fatto. Da questi link puoi vedere lo stesso codice postale in uso in diverse città. https://suburbanstats.org/zip-codes/pennsylvania/thornhurst https://suburbanstats.org/zip-codes/pennsylvania/scott-twp In pratica l'utilizzo di "Anytown" con il giusto codice postale funzionerà a causa della lettura dei loro computer di ordinamento codice postale prima.

Puoi anche imbatterti in PO che hanno solo caselle postali e non effettuano la consegna locale, quindi nessun poligono per la tua mappa. Questi PO sono generalmente piccoli.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.