Ermitteln, welche US-Postleitzahlen mehr als einem Bundesstaat oder mehr als einer Stadt zugeordnet sind?

23

Ich verwende eine Postleitzahlliste und bin gespannt, wie viele (oder welche) Postleitzahlen auf mehr als einen US-Bundesstaat oder eine US-Stadt zutreffen.

Ich weiß zum Beispiel, dass die Postleitzahl 42223in die US-Armee Fort Campbell übergeht, die sich über die Staatsgrenze KY-TN erstreckt. Seltsamerweise gibt die Google-API nur TNfür den Status zurück, der dieser Postleitzahl entspricht.

Einen fragen
quelle
Wie definieren Sie "Stadt" und "Postleitzahl"?
Evan Carroll

Antworten:

22

Es gibt 13 ZCTAs (ZIP Code Tabulation Areas) für US-Volkszählungen mit mehreren Bundesstaaten: 02861, 42223, 59221, 63673, 71749, 73949, 81137, 84536, 86044, 86515, 88063, 89439 und 97635.

Wie andere bereits erwähnt haben, gibt es verschiedene Möglichkeiten, den von einer Postleitzahl abgedeckten Bereich herauszufinden, aber ZCTAs sind die einfachste und einzige offizielle Version, die mir bekannt ist.

Ihr Beispiel für 42223 überspannt also eine Staatsgrenze, aber es sieht tatsächlich so aus, als ob es zwischen Maryland und Virginia liegt. das zwischen Kentucky und Tennessee.

Hier ist die vollständige Liste mit Bundesstaaten:

 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

So habe ich es generiert (mit Pandas 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)

Bearbeiten : Es scheint, dass die Volkszählung zwei verschiedene zweistellige Codierungen für Staaten hat. Beides sind Nummern, die auf der Grundlage der alphabetischen Reihenfolge des Bundesstaates zugewiesen wurden, aber einer scheint die Nummern direkt von 1-51 (50 Bundesstaaten + DC) anzuwenden , während der andere einige Nummern überspringt . Ich habe den ersten verwendet, während ich den zweiten hätte verwenden sollen, sodass die von mir aufgelisteten Statusnamen falsch waren. Ich habe den Code und die Ergebnisse mit der richtigen Liste aktualisiert.

Bearbeiten : Neue Statuszuordnung von der OpenCongress-API bestätigt: https://gist.github.com/gabrielgrant/89f883d093e2abf129ad

Gabriel Grant
quelle
2
Vielen Dank, dass Sie dieses @JesseCrocker abgefangen haben. Die Volkszählung enthält anscheinend (verwirrenderweise) zwei verschiedene zweistellige Codierungen für Bundesstaaten. Beides sind Nummern, die auf der Grundlage der alphabetischen Reihenfolge des Bundesstaates zugewiesen wurden, aber einer scheint die Nummern direkt von 1-51 (50 Bundesstaaten + DC) anzuwenden , während der andere einige Nummern überspringt . Ich habe den ersten verwendet, aber ich hätte den zweiten verwenden sollen, sodass die von mir aufgelisteten Statusnamen falsch waren (obwohl die ZCTAs gut waren). Ich habe den Code und die Ergebnisse mit der richtigen Liste korrigiert.
Gabriel Grant
2
In Bezug auf die Lücken in den FIPS-Codes wurden die übersprungenen Nummern in den 1970er Jahren für Gebiete außerhalb der USA (Amerikanisch-Samoa, Kanalzone, Guam, Puerto Rico und Jungferninseln) reserviert, wurden dann aber nicht für diese verwendet. en.wikipedia.org/wiki/…
neuhausr
3
Vergessen Sie nicht die Postleitzahl 57717, die sich über drei Bundesstaaten, sechs Grafschaften und mehrere Städte erstreckt: 57717 Aurora, SD 57717 Butte, SD 57717 Carter, MT 57717 Crook, WY 57717 Harding, SD 57717 Lawrence, SD
Jeffrey
1
Diese Auflistung ist fast nicht vollständig. Schauen Sie sich meine Antwort für eine weitaus bessere Annäherung an. gis.stackexchange.com/a/223445/6052
Evan Carroll
@ Jeffrey interessant, ich frage mich, warum das nicht in der ZCTA-Ortsliste aufgeführt ist?
Gabriel Grant
11

Es gibt wirklich keinen Weg, das zu sagen. da es keine vom USPS definierte ZipCode-Grenzform gibt. Postleitzahlen werden durch einen Begrenzungsrahmen von Straßen definiert, die von Spediteuren aus einem bestimmten Verteilungszentrum an diese geliefert werden.

Sie müssten also die USPS-AIS-Daten verwenden und die von einem bestimmten Postamt gelieferten Straßen mit ZipCodes extrahieren und dann einem Straßenraster beitreten. Dies ist, was alle kommerziellen Anbieter (Nokia / TomTom) tun, um die Pseudo-Form zu erstellen, mit der sie Postgrenzen anzeigen.

Dieser ungenaue Prozess ist der Grund, warum der USPS keine räumlichen Daten liefert.

DEWright
quelle
2
Ist etwas genau? Was ist Wahrheit? Es wurden viele Zip-Boundaries-Layer erstellt, die aufgrund ihrer unbekannten Anforderungen möglicherweise nicht dem Zweck dieser Analyse dienen. Esri free zip boundaries - arcgis.com/home/item.html?id=8d2012a2016e484dafaac0451f9aea24 Siehe auch gis.stackexchange.com/questions/2682/…
awesomo
2
Vorausgesetzt, aber Sie müssen auch verstehen, was Sie tun, um die Auswirkungen der von Ihnen verwendeten Daten zu verstehen.
DEWright
7

Das US Census Bureau leitet ungefähre Grenzen für Postleitzahlen basierend auf den darin enthaltenen Adressen ab, die als ZCTAs (ZIP Code Tabulation Areas) bezeichnet werden.

Sie veröffentlichen Beziehungsdateien , die beschreiben, wie ihre ZCTAs verschiedenen anderen Regionen zugeordnet sind. Wenn Sie die ZCTA to Place- Beziehungsdatei untersuchen, können Sie sehen, wie sie Städten zugeordnet sind. Sie können ableiten, wie sie Zuständen aus der ZCTA-Counties- Beziehungsdatei zugeordnet werden.

Die Beziehungsdateien verwenden Census-Geografie-IDs. Sie sollten daher eine Gazetteer-Datei verwenden , um die numerischen IDs in die von Ihnen erwarteten Orts- oder Landkreisnamen umzuwandeln.

Wie in anderen Antworten angegeben, ist die Zuordnung von Postleitzahlen zu Orten wahrscheinlich nur eine ungefähre Angabe, aber ich hatte viel Glück mit den Daten der Volkszählung.

bpanulla
quelle
4

TIGER-Daten 2016 mit PostGIS

Als besondere Einschränkung sind ZCTA-Daten keine USPS-Postleitzahlen. Es ist eine Annäherung. USPS-Postleitzahlen sind wirklich schrecklich und nur zur Annäherung nützlich. Jeder, einschließlich aller anderen staatlichen Stellen als USPS, und (die Volkszählung zur Herstellung von ZCTA) ignorieren sie vollständig. Wenn USPS ein bisschen erwachsen werden wollte, konvertierten sie einfach auf das neueste ZCTA und stellten maßgebliche GIS-Polygone bereit.

Dann ... Hier werden Schnittpunkte zwischen TIGER State- und TIGER ZCTA-Datensätzen abgefragt. Beachten Sie, dass wir Staaten mit 1% der gesamten ZCTA-Fläche qualifizieren. Wenn 1% des ZCTA-Gebiets nicht im Bundesstaat ist, wird davon ausgegangen, dass es sich um einen Rundungsfehler handelt oder dass jemand bei der Volkszählung fette Finger hat. Schauen Sie sich 56168oder sogar 83832für eine Postleitzahl , dass wir mit dieser hinzugefügt Selektivität sind beschneiden.

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;

Hier ist das 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)

Sie sollten in der Lage sein, alle diese Punkte in Google Maps zu überprüfen. Google Maps ist jedoch ebenfalls nicht maßgebend.

Evan Carroll
quelle
1

Staatliche Überschneidungen, die in der Volkszählung 1994 erwähnt wurden

Im Juni 1994 gab es laut der folgenden Website des US Census Bureau 153 Postleitzahlen, die die Staatsgrenzen überschreiten.

Wie bereits erwähnt, gibt es einige Postleitzahlen, die über Landesgrenzen hinweg übermittelt werden, und einige Postleitzahlen / Sektoren, die über Bezirksgrenzen hinweg verlaufen. Es gibt 153 Postleitzahlen in mehr als einem Bundesstaat.Es gibt 9.000 Postleitzahlen in mehr als einer Grafschaft. Es gab 11.331 (von insgesamt 857.400) PLZ / Sektoren, die nach Landkreis aufgeteilt wurden. Alle Bundesstaaten hatten einige getrennte Sektoren, wobei Virginia, Michigan und Ohio eine besonders hohe Dosierung aufwiesen. Die Sektoren der Landstraßen enthielten erwartungsgemäß (relativ) den Löwenanteil der aufgeteilten Sektoren. Die meisten anderen Fälle liegen im unteren Sektorbereich (für Postfächer reserviert) und im Sektor 99 (für Postmaster und Geschäftspostrückgabe reserviert). In diesen ausgewählten Fällen muss eine vom Standard abweichende Zuweisung der County-Codes erfolgen. Wir werden diese zu einem späteren Zeitpunkt weiter untersuchen müssen.

bsloan
quelle
0

In ArcGIS können Sie mithilfe des räumlichen Verknüpfungswerkzeugs (oder in einem Skript) ermitteln, welche Postleitzahlpolygone sich mit mehr als einem Statuspolygon überschneiden. In der Ausgabe-Feature-Class gibt es ein Join_Count-Feld, das mehrere Status angibt. Ähnliches könnte man mit Reißverschlüssen und Städten machen. Es wird wahrscheinlich falsche Positive geben, bei denen sich die Reißverschlüsse aufgrund von Ungenauigkeiten / Mängeln oder Auflösung der Ränder ungewollt mit mehr als einem überlappen. Sie könnten möglicherweise einen negativen Puffer von -100 m der Reißverschlüsse vor der räumlichen Verknüpfung erstellen und sehen, was dies bewirkt.

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/de/arcgisdesktop/10.0/help/index.html#/Spatial_Join/00080000000q000000/
"Zwei neue Felder, Join_Count und TARGET_FID, werden immer der Ausgabe-Feature-Class hinzugefügt. Join_Count gibt an, wie viele beitreten Features passen zu jedem Ziel-Feature (TARGET_FID). Ein weiteres neues Feld, JOIN_FID, wird der Ausgabe hinzugefügt, wenn JOIN_ONE_TO_MANY im Parameter Join Operation angegeben wird. "

awesomo
quelle
0

Sie können in PostGIS eine räumliche Überschneidung durchführen und eine Liste aller Bundesstaaten oder Städte und der von ihnen überschnittenen Postleitzahlen abrufen, die mehrere Postleitzahlen mit Überschneidungen mehrerer Bundesstaaten zurückgeben. Für jede Stadt, die dieselbe Postleitzahl überschneidet, wird diese Liste angezeigt das Ergebnis auch.

DPSSpatial
quelle
-2

In Pennsylvania stimmen die Postgrenzen nicht mit den Gemeindegrenzen überein. In einigen Townships werden möglicherweise mehrere Postämter beliefert. Bei der Notruf-Adressierung baten einige Townships die PO, ihren Namen in den Namen der Gemeinde zu ändern. Die PO erlaubte ihnen dies unter der Bedingung, dass sie weiterhin die alte Postleitzahl der Post verwendeten. Viele haben das getan. Sie können diesen Links entnehmen, dass für mehrere Städte dieselbe Postleitzahl verwendet wird. https://suburbanstats.org/zip-codes/pennsylvania/thornhurst https://suburbanstats.org/zip-codes/pennsylvania/scott-twp Grundsätzlich funktioniert die Verwendung von "Anytown" mit der richtigen Postleitzahl, da die Computer diese sortieren Postleitzahl zuerst.

Sie können auch auf eine Bestellung stoßen, die nur über Postfächer verfügt und keine lokale Zustellung durchführt, also kein Polygon für Ihre Karte. Diese PO sind normalerweise klein.

Bill Chappell
quelle