Określanie, które kody pocztowe w USA są mapowane do więcej niż jednego stanu lub więcej niż jednego miasta?

Używam listy kodów pocztowych i jestem ciekawa, ile (lub które) kody pocztowe są przypisane do więcej niż jednego stanu w USA miasto?

Na przykład wiem, że kod pocztowy 42223 odpowiada US Army, Fort Campbell, który znajduje się na granicy stanu KY-TN. Dziwne, tylko Google API zwraca TN dla tego stanu odpowiadającego temu zipowi.

Komentarze

  • Jak definiujesz ” miasto ” i ” kod pocztowy „?

Odpowiedź

Istnieje 13 wielostanowych obszarów spisu powszechnego w Stanach Zjednoczonych (ZCTA): 02861, 42223, 59221, 63673, 71749, 73949, 81137, 84536, 86044, 86515, 88063, 89439 & 97635.

Jak wspominali inni, tam jest kilka różnych sposobów określenia obszaru objętego kodem pocztowym, ale ZCTA są najłatwiejsze, a o tylko oficjalna wersja, o której wiem.

Twój przykład 42223 obejmuje granicę stanu, , ale wygląda na to, że faktycznie znajduje się między Maryland a Wirginią. między Kentucky i Tennessee.

Oto pełna lista ze stanami:

 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 ją 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) 

Edytuj : Wygląda na to, że Spis Powszechny ma dwa różne dwucyfrowe kodowanie stanów. Obydwa są liczbami przypisanymi na podstawie kolejności alfabetycznej stanu, ale wydaje się, że stosuje się liczby bezpośrednio z zakresu 1-51 (50 stanów + DC), podczas gdy druga pomija niektóre liczby . Używałem pierwszej, podczas gdy powinnam była używać drugiej, więc nazwy stanów, które wymieniłem, były błędne. Zaktualizowałem kod i wyniki z poprawną listą.

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

Komentarze

  • Wielkie dzięki za złapanie tego @JesseCrocker – Wygląda na to Spis powszechny (mylący) ma dwa różne dwucyfrowe kodowanie stanów. Oba są liczbami przypisanymi na podstawie kolejności alfabetycznej stanu ', ale wydaje się, że stosuje się liczby bezpośrednio od 1 do 51 (50 stanów + DC), podczas gdy druga pomija niektóre liczby . Używałem pierwszego, ale powinienem był używać drugiego, więc nazwy stanów, które wymieniłem, były błędne (chociaż ZCTA były dobre). ' poprawiłem kod i wyniki z poprawną listą.
  • Jeśli chodzi o luki w kodach FIPS, pominięte liczby były zarezerwowane w latach 70. XX wieku dla terytoriów peryferyjnych (Samoa Amerykańskie, Canal Zone, Guam, Puerto Rico i Wyspy Dziewicze), ale ostatecznie ' nie zostały w nich użyte. pl.wikipedia.org/wiki/…
  • Nie ' nie zapomnij kodu pocztowego 57717, który obejmuje trzy stany sześć, hrabstwa i wiele miast: 57717 Aurora, SD 57717 Butte, SD 57717 Carter, MT 57717 Crook, WY 57717 Harding, SD 57717 Lawrence, SD
  • Ta lista nie jest ' prawie ukończona. Sprawdź moją odpowiedź na znacznie lepsze przybliżenie. gis.stackexchange.com/a/223445/6052
  • To ' jest dziwne. Mapy Google pokazują 02861 jako dosłownie część granicy między MA i RI, a cały kod pocztowy jest mocno widoczny w RI google.com/ maps / place / Pawtucket, + RI + 02861 / …

Odpowiedź

Naprawdę nie ma sposobu, aby to powiedzieć; ponieważ nie ma kształtu granicy kodu pocztowego, który jest zdefiniowany przez USPS. Kody pocztowe są definiowane przez ramkę ograniczającą dostarczonych ulic do przewoźników z określonego centrum dystrybucji.

Musiałbyś więc pobrać dane USPS AIS i wyodrębnić za pomocą kodów pocztowych ulice dostarczane przez dany urząd pocztowy, a następnie dołączyć do nich siatkę ulic. Oto, co wszyscy sprzedawcy komercyjni (Nokia / TomTom) tworzą kształt pseudo, którego używają do pokazania granic pocztowych.

Ten niedokładny proces jest powodem, dla którego USPS nie dostarcza danych przestrzennych.

Komentarze

Odpowiedź

US Census Bureau ustala przybliżone granice kodów pocztowych na podstawie zawartych w nich adresów, zwanych ZIP Obszary tabulacji kodu (ZCTA).

publikują pliki relacji , które opisują, w jaki sposób ich ZCTA są mapowane na różne inne obszary geograficzne. Jeśli przyjrzysz się plikowi relacji ZCTA to Place , możesz zobaczyć, w jaki sposób mapują one miasta i miasteczka. Możesz wywnioskować, w jaki sposób mapują one stany z pliku relacji ZCTA do Counties .

Pliki relacji używają identyfikatorów geograficznych spisu ludności, więc „ Chcę pobrać plik gazetera , który pomoże Ci przekonwertować numeryczne identyfikatory na nazwy miejscowości lub powiatów, których „oczekujesz.

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

Odpowiedź

Dane TIGER 2016 z PostGIS

Jako specjalne zastrzeżenie, dane ZCTA nie są kodami pocztowymi USPS. Jest to przybliżenie tego. Kody pocztowe USPS są naprawdę okropne i nieprzydatne, z wyjątkiem przybliżenia. Wszyscy, w tym każdy podmiot rządowy inny niż USPS, i (Spis ludności dla ZCTA) całkowicie je ignoruje. Gdyby USPS chciał dorosnąć trochę, po prostu przekonwertowaliby na najnowszy ZCTA i zapewnili autorytatywne wielokąty GIS.

W takim razie … Tutaj szukamy przecięć pomiędzy Zbiory danych TIGER State i TIGER ZCTA. Uwaga, stany kwalifikujemy według 1% całkowitego obszaru ZCTA. Jeśli 1% obszaru ZCTA nie znajduje się w stanie, zakładamy, że jest to błąd zaokrąglenia lub ktoś gruby palcem coś w Spisie. Sprawdź 56168 lub nawet 83832, aby znaleźć kod pocztowy, który „ponownie usuwamy 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 resetowanie

 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) 

Wszystkie te elementy powinny być widoczne w Mapach Google. Jednak Mapy Google są również nie autorytatywne.

Odpowiedź

Nakładające się stany wymienione w dokumencie spisu ludności z 1994 r.

Według następującej witryny US Census Bureau w czerwcu 1994 r. istniały 153 kody pocztowe przekraczające granice stanów.

Jak wspomniano wcześniej, istnieje kilka kodów pocztowych, które dostarczają przesyłki między stanami, a także kilka kodów pocztowych / sektorów, które przecinają granice hrabstw. Istnieją 153 kody pocztowe w więcej niż jednym stanie. Istnieje 9 000 kodów pocztowych w więcej niż jednym hrabstwie. Było 11 333 kodów pocztowych (z całkowitej liczby 857 400). które były spl to według hrabstw. Wszystkie stany miały podzielone sektory, przy czym Virginia, Michigan i Ohio miały szczególnie większą dawkę. Zgodnie z oczekiwaniami, sektory dróg wiejskich zawierały (względnie) lwią część podzielonych sektorów. Większość pozostałych przypadków dotyczy dolnego przedziału sektorowego (zarezerwowanego dla skrytek pocztowych) i sektora 99 (zarezerwowanego dla poczmistrza zwrot poczty). W tych wybranych przypadkach musi występować niestandardowe przypisanie kodu hrabstwa. Będziemy musieli dokładniej zbadać je w późniejszym terminie.

Odpowiedź

W ArcGIS można użyć narzędzia do łączenia przestrzennego (lub skryptu), aby znaleźć, które wielokąty kodu pocztowego przecinają się z więcej niż jednym stanem. W klasie obiektów wyjściowych będzie pole Join_Count, które będzie wskazywać wiele stanów. Możesz zrobić podobną rzecz z zamkami błyskawicznymi i miastami. Prawdopodobnie wystąpią fałszywe alarmy, w których zamki błyskawiczne przypadkowo nachodzą na więcej niż jeden z powodu niedokładności / braku granic lub rozdzielczość.Możesz prawdopodobnie zrobić ujemny bufor -100 m dla zamków błyskawicznych przed złączeniem przestrzennym i zobacz, 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 elementów. Join_Count wskazuje, ile funkcji łączenia pasuje do każdego elementu docelowego (TARGET_FID). Kolejne nowe pole, JOIN_FID, jest dodawane do danych wyjściowych, gdy JOIN_ONE_TO_MANY jest określony w parametrze operacji łączenia.”

Odpowiedź

Możesz wykonać przestrzenne przecięcie w PostGIS i uzyskać listę wszystkich stanów lub miast oraz kodów pocztowych że przecinają się, co zwróci wiele kodów pocztowych, w których przecina się wiele stanów, a dla każdego miasta, które przecina ten sam kod pocztowy, zobaczysz również ten wynik.

Komentarze

Odpowiedź

W Pensylwanii granice urzędów pocztowych nie pokrywają się z granicami gmin. Niektóre gminy mogą dostarczać do nich kilka urzędów pocztowych. Kiedy robiliśmy adresy 911, niektóre gminy poprosiły PO o zmianę nazwy do nazwy gminy, PO pozwolił im to zrobić pod warunkiem, że nadal będą używać starego kodu pocztowego Urzędu Pocztowego. Wiele z nich to zrobiło. Z tych linków widać 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 nazwy „Anytown” z odpowiednim kodem pocztowym będzie działać, ponieważ komputery sortujące odczytują kod pocztowy najpierw kod.

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

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *