Ik gebruik een postcode-lijst en ik ben benieuwd hoeveel (of welke) postcodes naar meer dan één Amerikaanse staat of de VS verwijzen city?
Ik weet bijvoorbeeld dat postcode 42223
wordt omgezet in het Amerikaanse leger, Fort Campbell, dat zich uitstrekt over de KY-TN-staatsgrens. Vreemd genoeg is alleen de Google API geeft TN
terug voor die staat die overeenkomt met die zip.
Reacties
- Hoe definieer je ” plaats “, en ” postcode “?
Antwoord
Er zijn 13 multi-state US Census “ZIP Code Tabulation Areas (ZCTAs): 02861, 42223, 59221, 63673, 71749, 73949, 81137, 84536, 86044, 86515, 88063, 89439 & 97635.
Zoals anderen al hebben gezegd, zijn er zijn een paar verschillende manieren om erachter te komen welk gebied onder een postcode valt, maar ZCTAs zijn de gemakkelijkste, en de o enige officiële versie die ik ken.
Dus uw voorbeeld van 42223 beslaat een staatsgrens, maar het lijkt erop dat het eigenlijk tussen Maryland en Virginia ligt. dat tussen Kentucky en Tennessee.
Hier is de volledige lijst met toestanden:
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
Hier is hoe ik het heb gegenereerd (met 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)
Bewerken : het lijkt erop dat de Census twee verschillende tweecijferige coderingen heeft voor staten. Beide zijn nummers die zijn toegewezen op basis van de alfabetische volgorde van de staat, maar lijkt men de nummers rechtstreeks toe te passen van 1-51 (50 staten + DC), terwijl de andere slaat een aantal getallen over . Ik gebruikte de eerste, terwijl ik de tweede had moeten gebruiken, dus de staatsnamen die ik vermeldde waren verkeerd. Ik heb de code en resultaten met de juiste lijst.
Bewerken : nieuwe statustoewijzing bevestigd door de OpenCongress API: https://gist.github.com/gabrielgrant/89f883d093e2abf129ad
Reacties
- Heel erg bedankt voor het vangen van deze @JesseCrocker – Het lijkt de Census (verwarrend) heeft twee verschillende tweecijferige coderingen voor staten. Beide zijn nummers toegewezen op basis van de alfabetische volgorde van de staat ‘, maar lijkt het erop dat men de cijfers rechtstreeks van 1-51 (50 staten + DC), terwijl de andere getallen overslaat . Ik gebruikte de eerste, maar ik had de tweede moeten gebruiken, dus de staatsnamen die ik vermeldde waren verkeerd (hoewel de ZCTAs goed waren). Ik ‘ heb de code en de resultaten gecorrigeerd met de juiste lijst.
- Wat betreft de hiaten in de FIPS-codes: de overgeslagen nummers werden in de jaren zeventig gereserveerd voor afgelegen gebieden (Amerikaans Samoa, Kanaalzone, Guam, Puerto Rico en Maagdeneilanden), maar ‘ werd uiteindelijk niet voor hen gebruikt. en.wikipedia.org/wiki/…
- Don ‘ vergeet postcode 57717 die drie staten zes, provincies en meerdere steden omvat: 57717 Aurora, SD 57717 Butte, SD 57717 Carter, MT 57717 Crook, WY 57717 Harding, SD 57717 Lawrence, SD
- Deze vermelding is niet ‘ bijna voltooid. Bekijk mijn antwoord voor een veel betere benadering. gis.stackexchange.com/a/223445/6052
- Dat ‘ is vreemd. Google Maps laat zien dat
02861
letterlijk deel uitmaakt van de grens tussen MA en RI, en de volledige postcode stevig in RI google.com/ maps / place / Pawtucket, + RI + 02861 / …
Antwoord
Er is echt geen manier om dit te zeggen; aangezien er geen ZipCode-grensvorm is die wordt gedefinieerd door de USPS. ZipCodes worden gedefinieerd door een begrenzingskader van afgeleverde Straten naar door vervoerders van een bepaald distributiecentrum.
Dus u zou de USPS AIS-gegevens moeten nemen en met postcode de straten moeten extraheren die door een bepaald postkantoor worden bezorgd, en u vervolgens bij deze een stratenraster voegen. Dit is wat alle commerciële verkopers doen (Nokia / TomTom) om de Psuedo-vorm te creëren die ze gebruiken om postgrenzen aan te geven.
Dit onnauwkeurige proces is de reden waarom de USPS geen ruimtelijke gegevens verstrekt.
Opmerkingen
- Is iets juist? Wat is de waarheid? Veel er zijn lagen met zip-grenzen gemaakt, die al dan niet het doel van deze specifieke analyse kunnen dienen, gezien de onbekende vereisten. Esri gratis zip-grenzen – arcgis.com/home/item.html?id=8d2012a2016e484dafaac0451f9aea24 Zie ook gis .stackexchange.com / questions / 2682 / …
- Gegeven, maar je moet ook begrijpen wat je doet, de implicaties van de gegevens die je gebruikt.
Answer
Het US Census Bureau leidt geschatte grenzen af voor postcodes op basis van de adressen die erin staan, genaamd ZIP Code Tabulation Areas (ZCTAs).
Ze publiceren relatiebestanden die beschrijven hoe hun ZCTAs worden toegewezen aan verschillende andere regios. Als je het relatiebestand ZCTA to Place bekijkt, kun je zien hoe ze toewijzen aan steden en dorpen. U kunt afleiden hoe ze zijn toegewezen aan staten uit het relatiebestand ZCTA naar provincies .
De relatiebestanden gebruiken geografische IDs voor volkstellingen, dus u ” Ik wil een gazetteer-bestand pakken om u te helpen de numerieke IDs om te zetten in de plaats- of provincienamen die u verwacht.
Zoals andere antwoorden hebben verklaard, is het in kaart brengen van postcodes aan plaatsen waarschijnlijk bij benadering, maar ik heb veel geluk gehad met de Census-gegevensbestanden.
Answer
2016 TIGER-gegevens met PostGIS
Als een speciale waarschuwing zijn ZCTA-gegevens geen USPS-postcode. Het is een benadering ervan. USPS-postcodes zijn echt vreselijk en niet nuttig, behalve om te benaderen. Iedereen, inclusief elke overheidsinstantie behalve USPS, en (de Census voor het maken van ZCTA) negeert ze volledig. Als USPS volwassen wilde worden een beetje, “zouden ze gewoon naar de nieuwste ZCTA converteren en gezaghebbende GIS-polygonen bieden.
- 2016 TIGER ZCTA 877 MB tabelgegevens.
- 33.144 ZCTAs
- 52.669.641 punten totaal,
- 2016 TIGER-staten 15 MB tabelgegevens.
- 56 “State” s
- 912.464 punten totaal
Dan … Hier zoeken we naar kruispunten tussen TIGER State en TIGER ZCTA datasets. Let op, we kwalificeren staten met 1% van het totale ZCTA-gebied. Als 1% van het ZCTA-gebied niet in de staat is, nemen we aan dat het een afrondingsfout is, of dat iemand dik iets aan het vingeren is bij de Census. Bekijk 56168
of zelfs 83832
voor een postcode die we “aan het snoeien zijn met deze toegevoegde selectiviteit.
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 is het resultaat
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)
Je zou ze allemaal moeten kunnen controleren in Google Maps. Google Maps is ook niet gezaghebbend.
Antwoord
Staatsoverlappingen genoemd in het Census Document van 1994
In juni 1994 zijn er volgens de volgende site van het US Census Bureau 153 postcodes die de staatsgrenzen overschrijden.
Zoals eerder vermeld, zijn er een paar postcodes die over de staatsgrenzen heen worden afgeleverd, en er zijn een paar postcode / sectoren die de provincielijnen overschrijden. Er zijn 153 postcodes in meer dan één staat. Er zijn 9.000 postcodes in meer dan één land. Er waren 11.331 (van de in totaal 857.400) postcodes / sectoren dat waren spl het per provincie. Alle staten hadden een aantal gesplitste sectoren, waarbij Virginia, Michigan en Ohio een bijzonder grotere dosering hadden. De landelijke route-sectoren bevatten, zoals verwacht, (relatief) het leeuwendeel van de gesplitste sectoren. De meeste andere gevallen bevinden zich in het lagere sectorbereik (gereserveerd voor postbussen) en in sector 99 (gereserveerd voor de postbode en het bedrijfsleven. mail retour). Er moet een niet-standaard landcode-toewijzing plaatsvinden voor deze geselecteerde gevallen. We zullen deze op een later tijdstip verder moeten onderzoeken.
Answer
Met ArcGIS kunt u de spatial join-tool (of in een script) gebruiken om te achterhalen welke postcode polygonen elkaar kruisen met meer dan één toestand polygonen. In de output feature class zal er een Join_Count veld zijn dat meerdere staten aangeeft. Je zou iets soortgelijks kunnen doen met ritsen en steden. Er zullen waarschijnlijk false positives zijn waarbij de ritsen onbedoeld meer dan één overlappen vanwege onnauwkeurigheden / resolutie U kunt eventueel een negatieve buffer van -100m van de ritssluitingen doen voor de ruimtelijke verbinding en kijk wat dat doet.
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/
“Twee nieuwe velden, Join_Count en TARGET_FID, worden altijd toegevoegd aan de output feature class. Join_Count geeft aan hoeveel join-functies overeenkomen met elk doelfunctie (TARGET_FID). Een ander nieuw veld, JOIN_FID, wordt aan de uitvoer toegevoegd als JOIN_ONE_TO_MANY is opgegeven in de parameter Join Operation.”
Antwoord
Je kunt een ruimtelijk snijpunt maken in PostGIS en een lijst krijgen van elke staat of stad en de postcode dat ze elkaar kruisen, wat meerdere postcodes zou opleveren waar meerdere staten elkaar kruisen, en voor elke stad die dezelfde postcode doorsneed, zou je dat resultaat ook zien.
Opmerkingen
Antwoord
In Pennsylvania komen de grenzen van het postkantoor niet overeen met de gemeentegrenzen. Sommige townships kunnen verschillende postkantoren hebben die aan hen bezorgen. Toen we aan het adresseren waren, vroegen sommige townships de PO om hun nae naar de naam van de gemeente, stond de PO hen toe dit te doen met de voorwaarde dat ze de oude postcode van het postkantoor bleven gebruiken. Velen deden dit. Je kunt aan deze links zien dat dezelfde postcode in verschillende steden wordt gebruikt. https://suburbanstats.org/zip-codes/pennsylvania/thornhurst https://suburbanstats.org/zip-codes/pennsylvania/scott-twp In principe werkt het gebruik van “Anytown” met de juiste postcode omdat hun sorterende computers zip lezen code eerst.
Je kunt ook PO tegenkomen die alleen postbussen hebben en geen lokale bezorging doen, dus geen polygoon voor je kaart. Deze PO zijn meestal klein.