Ustalanie, które z amerykańskich kodów pocztowych mapują do więcej niż jednego stanu lub więcej niż jednego miasta?

23

Korzystam z listy kodów pocztowych i jestem ciekawy, ile (lub które) kody pocztowe są mapowane na więcej niż jeden stan lub miasto w USA?

Na przykład wiem, że Kod pocztowy dotyczy 42223armii amerykańskiej, Fort Campbell, która leży na linii stanu KY-TN. Co dziwne, interfejs API Google zwraca tylko TNstan odpowiadający temu plikowi zip.

Pytanie
źródło
Jak definiujesz „miasto” i „kod pocztowy”?
Evan Carroll,

Odpowiedzi:

22

Istnieje 13 wielostanowych obszarów tabelarycznych spisu ludności w USA (ZCTA): 02861, 42223, 59221, 63673, 71749, 73949, 81137, 84536, 86044, 86515, 88063, 89439 i 97635.

Jak wspomnieli inni, istnieje kilka różnych sposobów ustalenia obszaru objętego kodem pocztowym, ale ZCTA są najłatwiejszą i jedyną oficjalną wersją, jaką znam.

Tak więc twój przykład 42223 obejmuje granicę państwową, ale wygląda na to, że tak naprawdę znajduje się między Maryland a Virginią. między Kentucky a Tennessee.

Oto pełna lista stanów:

 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

Oto jak go wygenerowałem (z Pandami w Pythonie):

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)

Edycja : Wygląda na to, że spis ma dwa różne dwucyfrowe kodowanie stanów. Obie są liczbami przypisanymi na podstawie kolejności alfabetycznej stanu, ale jedna wydaje się stosować liczby bezpośrednio od 1-51 (50 stanów + DC), a druga pomija niektóre liczby . Używałem pierwszego, a powinienem był użyć drugiego, więc wymienione przeze mnie nazwy stanów były nieprawidłowe. Zaktualizowałem kod i wyniki z poprawną listą.

Edycja : nowe mapowanie stanu potwierdzone przez API OpenCongress: https://gist.github.com/gabrielgrant/89f883d093e2abf129ad

Gabriel Grant
źródło
2
Wielkie dzięki za złapanie tego @JesseCrocker - Wygląda na to, że spis ludności (myląco) ma dwa różne dwucyfrowe kodowanie stanów. Obie są liczbami przypisanymi na podstawie kolejności alfabetycznej stanu, ale jedna wydaje się stosować liczby bezpośrednio od 1-51 (50 stanów + DC), a druga pomija niektóre liczby . Używałem pierwszego, ale powinienem był użyć drugiego, więc wymienione przeze mnie nazwy stanów były niepoprawne (chociaż ZCTA były dobre). Poprawiłem kod i wyniki z poprawną listą.
Gabriel Grant
2
Jeśli chodzi o luki w kodach FIPS, pominięte numery były zarezerwowane w latach siedemdziesiątych dla terytoriów peryferyjnych (Samoa Amerykańskie, Canal Zone, Guam, Portoryko i Wyspy Dziewicze), ale potem nie zostały wykorzystane. en.wikipedia.org/wiki/…
neuhausr
3
Nie zapomnij kod pocztowy 57717, która obejmuje trzy stany sześć hrabstw i wielu miast: 57717 Aurora, SD 57717 Butte, SD 57717 Carter, MT 57717 Crook, WY 57717 Harding, SD 57717 Lawrence, SD
Jeffrey
1
Ta aukcja nie jest prawie ukończona. Sprawdź moją odpowiedź, by uzyskać znacznie lepsze zbliżenie. gis.stackexchange.com/a/223445/6052
Evan Carroll
@Jeffrey ciekawe, zastanawiam się, dlaczego nie ma go na liście miejsc ZCTA?
Gabriel Grant
11

Naprawdę nie ma sposobu, aby to powiedzieć; ponieważ nie ma kształtu granicy ZipCode zdefiniowanego przez USPS. Kody pocztowe są zdefiniowane przez obwiednię ulic dostarczanych przez przewoźników z określonego centrum dystrybucji.

Musisz więc pobrać dane USPS AIS i wyodrębnić przez ZipCodes ulice dostarczone przez dany urząd pocztowy, a następnie dołączyć je do siatki ulic. Tak robią wszyscy dostawcy komercyjni (Nokia / TomTom), aby stworzyć kształt Psuedo, którego używają do pokazywania granic pocztowych.

Ten niedokładny proces jest przyczyną, dla której USPS nie dostarcza danych przestrzennych.

DEWright
źródło
2
Czy coś jest dokładne? Co jest prawdą? Utworzono wiele warstw granic zip, które mogą, ale nie muszą służyć do celów tej konkretnej analizy, biorąc pod uwagę jej nieznane wymagania. Bezpłatne ograniczenia zip Esri - arcgis.com/home/item.html?id=8d2012a2016e484dafaac0451f9aea24 Zobacz także gis.stackexchange.com/questions/2682/...
awesomo
2
Biorąc pod uwagę, ale musisz również zrozumieć, co robisz, implikacje danych, których używasz.
DEWright
7

US Census Bureau określa przybliżone granice kodów pocztowych na podstawie zawartych w nich adresów, zwanych obszarami tabelarycznymi kodów pocztowych (ZCTA).

Oni publikować pliki relacji , które opisują w jaki sposób ich ZCTAs map do różnych innych lokalizacjach. Jeśli przejrzysz plik relacji ZCTA z miejscem , zobaczysz, w jaki sposób mapują one miasta. Możesz wnioskować, w jaki sposób są one mapowane do stanów z pliku relacji ZCTA do hrabstwa .

Pliki relacji używają identyfikatorów geograficznych Spisu, więc będziesz chciał pobrać plik dziennika, który pomoże Ci przekonwertować identyfikatory numeryczne na oczekiwane nazwy miejscowości lub hrabstw.

Jak podają inne odpowiedzi, wszelkie mapowanie kodów pocztowych do miejsc prawdopodobnie będzie przybliżone, ale miałem szczęście z plikami danych Spisu.

bpanulla
źródło
4

Dane TIGER 2016 z PostGIS

Jako specjalne zastrzeżenie, dane ZCTA nie są kodami pocztowymi USPS. To przybliżenie. Kody pocztowe USPS są naprawdę okropne i nie są użyteczne poza przybliżeniem. Wszyscy, w tym każda jednostka rządowa inna niż USPS i (Spis ludności dotyczący tworzenia ZCTA) całkowicie je ignorują. Gdyby USPS chciał trochę dorosnąć, po prostu przekonwertowali się na najnowszą ZCTA i zapewnili wiarygodne wielokąty GIS.

Następnie ... Tutaj pytamy o przecięcia między zestawami danych TIGER State i TIGER ZCTA. Uwaga: kwalifikujemy stany o 1% całkowitej powierzchni ZCTA. Jeśli 1% obszaru ZCTA nie jest w stanie, zakładamy, że jest to błąd zaokrąglenia lub ktoś gruby palcami coś w spisie. Sprawdź 56168lub nawet 83832kod pocztowy, który przycinamy z tą dodatkową selektywnością.

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;

Oto 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)

Powinieneś być w stanie to sprawdzić w Mapach Google. Jednak Mapy Google również nie są wiarygodne.

Evan Carroll
źródło
1

Nakłady państwowe wymienione w dokumencie ze spisu powszechnego z 1994 r

W czerwcu 1994 r. Według następującej strony US Census Bureau istnieje 153 kodów pocztowych, które przekraczają granice państw.

Jak wspomniano wcześniej, istnieje kilka kodów pocztowych dostarczanych przez linie stanu, a także kilka kodów pocztowych / sektorów, które przekraczają linie okręgów. Istnieje 153 kodów pocztowych w więcej niż jednym stanie.Istnieje 9 000 kodów pocztowych w więcej niż jednym hrabstwie. Było 11 331 (spośród 857 400) ZIP / sektorów, które zostały podzielone według powiatów. Wszystkie stany miały podzielone sektory, a Virginia, Michigan i Ohio miały szczególnie większą dawkę. Sektory obszarów wiejskich, zgodnie z oczekiwaniami, zawierały (względnie) lwią część podzielonych sektorów. Większość pozostałych przypadków znajduje się w dolnym przedziale sektorowym (zarezerwowanym dla skrytek pocztowych) oraz w sektorze 99 (zarezerwowanym dla listów pocztowych i zwrotów firmowych). Dla tych wybranych przypadków musi wystąpić pewne niestandardowe przypisanie kodu hrabstwa. Będziemy musieli zbadać je później.

bsloan
źródło
0

Za pomocą ArcGIS można użyć narzędzia łączenia przestrzennego (lub w skrypcie), aby znaleźć, które wielokąty kodu pocztowego przecinają się z więcej niż jednym wielokątem stanu. W klasie obiektów wyjściowych będzie pole Join_Count, które wskaże wiele stanów. Możesz zrobić podobnie z zamkami błyskawicznymi i miastami. Prawdopodobnie wystąpią fałszywe alarmy, gdy zamki niezamierzenie nakładają się na więcej niż jeden z powodu niedokładności / braku granicy lub rozdzielczości. Mógłbyś zrobić ujemny -100m bufor zamków przed łączeniem przestrzennym i zobaczyć, co to robi.

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/
"Dwa nowe pola, Join_Count i TARGET_FID, są zawsze dodawane do wyjściowej klasy funkcji. Join_Count wskazuje, ile łączy funkcje pasują do każdej funkcji docelowej (TARGET_FID). Kolejne nowe pole, JOIN_FID, jest dodawane do danych wyjściowych, gdy JOIN_ONE_TO_MANY jest określony w parametrze Join Operation. ”

awesomo
źródło
0

Możesz zrobić skrzyżowanie przestrzenne w PostGIS i uzyskać listę wszystkich stanów i miast oraz kody pocztowe, które przecinają, co zwróci wiele kodów pocztowych w miejscach przecięcia wielu stanów, a dla każdego miasta, które przecinają ten sam kod pocztowy, zobaczysz ten wynik również.

DPSSpatial
źródło
-2

W Pensylwanii granice urzędów pocztowych nie są zgodne z granicami gmin. Niektóre gminy mogą dostarczać do nich kilka urzędów pocztowych. Kiedy adresowaliśmy numer 911, niektóre miasta poprosiły PO o zmianę nazwy na na nazwę miasteczka, PO pozwoliło im to zrobić pod warunkiem, że nadal będą używać starego kodu pocztowego Urzędu Pocztowego. Wielu to zrobiło. Z tych linków widać, że ten sam kod pocztowy jest używany w kilku miastach. https://suburbanstats.org/zip-codes/pennsylvania/thornhurst https://suburbanstats.org/zip-codes/pennsylvania/scott-twp Zasadniczo użycie „Anytown” z odpowiednim kodem pocztowym będzie działać, ponieważ ich komputery sortujące czytają kod pocztowy.

Możesz również natknąć się na PO, które mają tylko skrzynki pocztowe i nie realizują dostawy lokalnej, więc nie ma wielokąta na twojej mapie. Te zamówienia są zwykle małe.

Bill Chappell
źródło