Jeg bruker postnummeroppføring, og jeg er nysgjerrig på å vite hvor mange (eller hvilke) postnummer som tilordnes til mer enn en stat i USA eller USA by?
For eksempel vet jeg at postnummer 42223
løser seg til den amerikanske hæren, Fort Campbell, som strekker seg over KY-TN-statslinjen. Merkelig nok bare google API returnerer TN
for den tilstanden som tilsvarer den glidelåsen.
Kommentarer
- Hvordan definerer du » by «, og » postnummer «?
Svar
Det er 13 multi-state US Census «ZIP Code Tabulation Areas (ZCTAs): 02861, 42223, 59221, 63673, 71749, 73949, 81137, 84536, 86044, 86515, 88063, 89439 & 97635.
Som andre har nevnt, der er noen forskjellige måter å finne ut av området som dekkes av et postnummer, men ZCTA er det enkleste, og bare offisiell versjon som jeg vet om.
Så eksempelet ditt på 42223 spenner over en statsgrense, , men det ser ut til at det faktisk er mellom Maryland og Virginia. det mellom Kentucky og Tennessee.
Her er hele listen med tilstander:
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
Slik genererte jeg den (med Pandaer i 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)
Rediger : Det ser ut til at folketellingen har to forskjellige tosifrede kodinger for stater. Begge er tall som er tildelt basert på statens alfabetiske rekkefølge, men man ser ut til å bruke tallene direkte fra 1-51 (50 stater + DC), mens den andre hopper over noen tall . Jeg brukte det første, mens jeg skulle ha brukt det andre, så tilstandsnavnene jeg oppga var feil. Jeg har oppdatert kode og resultater med riktig liste.
Rediger : ny tilstandskartlegging bekreftet av OpenCongress API: https://gist.github.com/gabrielgrant/89f883d093e2abf129ad
Kommentarer
- Tusen takk for at du fikk tak i dette @JesseCrocker – Det virker folketellingen (forvirrende) har to forskjellige tosifrede kodinger for stater. Begge er tall som er tildelt basert på tilstanden ‘ s alfabetisk rekkefølge, men man ser ut til å bruke tallene direkte fra 1-51 (50 stater + DC), mens den andre hopper over noen tall . Jeg brukte den første, men jeg burde ha brukt den andre, så tilstandsnavnene jeg oppga var feil (selv om ZCTAene var gode). Jeg ‘ har fikset koden og resultatene med riktig liste.
- Når det gjelder hullene i FIPS-kodene, ble de hoppede tallene reservert på 1970-tallet for fjerne områder (Amerikansk Samoa, Canal Zone, Guam, Puerto Rico og Jomfruøyene), men da ble ikke ‘ brukt til dem. no.wikipedia.org/wiki/…
- Don ‘ glem ikke postnummer 57717 som spenner over tre stater seks, fylker og flere byer: 57717 Aurora, SD 57717 Butte, SD 57717 Carter, MT 57717 Crook, WY 57717 Harding, SD 57717 Lawrence, SD
- Denne oppføringen er ikke ‘ t nesten fullført. Sjekk ut svaret mitt for en langt bedre tilnærming. gis.stackexchange.com/a/223445/6052
- At ‘ er merkelig. Google Maps viser
02861
som bokstavelig talt en del av grensen mellom MA og RI, og hele postnummeret i RI google.com/ maps / place / Pawtucket, + RI + 02861 / …
Svar
Det er virkelig ikke en måte å fortelle dette på, siden det ikke er en ZipCode-grenseform som er definert av USPS. Postnummer er definert av en avgrensningsboks med gater levert til av transportører fra et bestemt distribusjonssenter.
Så du må ta USPS AIS-data og hente ut gatene som leveres av et gitt postkontor med ZipCodes, og deretter bli med disse et gatenett. alle kommersielle leverandører gjør (Nokia / TomTom) for å lage Psuedo-formen som de bruker for å vise postgrenser.
Denne unøyaktige prosessen er årsaken til at USPS ikke gir romlige data.
Kommentarer
- Er noe nøyaktig? Hva er sannhet? Mange lag med zip-grenser er opprettet, som kanskje eller ikke tjener formålet med denne spesielle analysen gitt de ukjente kravene. Esri gratis zip-grenser – arcgis.com/home/item.html?id=8d2012a2016e484dafaac0451f9aea24 Se også gis .stackexchange.no / spørsmål / 2682 / …
- Gitt, men du må også forstå hva du gjør konsekvensene av dataene du bruker.
Svar
US Census Bureau utarbeider omtrentlig grenser for postnummer basert på adressene i dem, kalt ZIP Kodetabellområder (ZCTAer).
De publiserer relasjonsfiler som beskriver hvordan ZCTAene deres kartlegges til forskjellige andre geografiske områder. Hvis du undersøker forholdet ZCTA to Place , kan du se hvordan de tilordnes til byer og tettsteder. Du kan utlede hvordan de tilordnes til stater fra ZCTA til fylker -forholdsfilen.
Forholdsfilene bruker Census-geografi-ID-er, så du » Jeg vil ta tak i en gazetteer-fil for å hjelpe deg med å konvertere de numeriske ID-ene til de sted- eller fylkesnavnene du forventer.
Som andre svarene har uttalt, vil enhver kartlegging av postnummer til steder sannsynligvis være omtrentlig, men jeg har hatt lykke til med Census-datafilene.
Svar
2016 TIGER-data med PostGIS
Som en spesiell advarsel er ZCTA-data ikke USPS-postnummer. Det er en tilnærming av det. USPS-postnummer er veldig forferdelig og ikke nyttig, bortsett fra å tilnærme seg. Alle, inkludert alle andre offentlige enheter enn USPS, og (folketellingen for å lage ZCTA) ignorerer dem helt. Hvis USPS ønsket å vokse opp litt, de ville bare konvertere til den nyeste ZCTA og gi autoritative GIS-polygoner.
- 2016 TIGER ZCTA 877 MB tabelldata.
- 33,144 ZCTAer
- 52,669,641 poeng totalt,
- 2016 TIGER States 15 MB tabelldata.
- 56 «State» s
- 912 464 poeng totalt
Så … Her spør vi etter kryss mellom TIGER State og TIGER ZCTA datasett. Merk, vi kvalifiserer stater med 1% av det totale ZCTA-området. Hvis 1% av ZCTA-området ikke er i tilstanden, antar vi at det er en avrundingsfeil, eller at noen som er tykke fingrer noe ved folketellingen. Ta en titt på 56168
eller til og med 83832
for et postnummer som vi beskjærer med denne ekstra selektiviteten.
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;
Her er resultatsettet
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)
Du burde kunne få øye på alle disse i Google Maps. Google Maps er også ikke autoritativt.
Svar
State Overlaps nevnt i folketellingsdokumentet fra 1994
I juni 1994 er det ifølge følgende US Census Bureau nettsted 153 postnummer som krysser statsgrenser.
Som nevnt tidligere er det noen få postnummer som leverer på tvers av delstatslinjer, og det er noen få postnummer / sektorer som krysser fylkeslinjer. Det er 153 postnummer i mer enn en tilstand. Det er 9 000 postnummer i mer enn ett fylke. Det var 11 331 (av totalt 857 400) Postnummer / sektorer som var spl det etter fylke. Alle stater hadde noen splittede sektorer, med Virginia, Michigan og Ohio som hadde en spesielt større dosering. Rutesektorene på landsbygda inneholdt, som forventet, (relativt) løvenes andel av splittede sektorer. De fleste andre tilfeller er i det nedre sektorområdet (reservert for postkasser) og i sektor 99 (reservert for postmester og næringsliv e-postreturering). Det må forekomme noen ikke-standard fylkeskodetildelinger for disse utvalgte sakene. Vi må undersøke disse nærmere på et senere tidspunkt.
Svar
Med ArcGIS kan du bruke det romlige sammenkoblingsverktøyet (eller i et skript) for å finne hvilke postnummer polygoner som krysser med mer enn en tilstands polygoner. I utdatafunksjonsklassen vil det være et Join_Count-felt som vil indikere flere tilstander. Du kan gjøre en lignende ting med glidelåser og byer. Det vil sannsynligvis være falske positiver der glidelåser utilsiktet overlapper mer enn en på grunn av unøyaktigheter i grensen / mangel på eller oppløsning. Du kan muligens gjøre en negativ -100m buffer av glidelåsene før den romlige sammenføyningen og se hva det gjør.
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/
«To nye felt, Join_Count og TARGET_FID, legges alltid til i utdatafunksjonsklassen. Join_Count indikerer hvor mange join-funksjoner som samsvarer med hver målfunksjon (TARGET_FID). Et annet nytt felt, JOIN_FID, legges til utgangen når JOIN_ONE_TO_MANY er spesifisert i parameteren Join Operation.»
Svar
Du kan ta et romlig skjæringspunkt i PostGIS og få en liste tilbake over hver stat eller by og postnummer at de krysser hverandre, som vil returnere flere postnummer der flere stater krysser hverandre, og for hver by som krysser samme postnummer, vil du også se det resultatet.
Kommentarer
Svar
I Pennsylvania stemmer ikke postkontorgrensene overens med kommunegrensene. Noen townships kan ha flere postkontorer som leverer til dem. Da vi holdt 911-adressering, ba noen townships PO om å endre sitt behov til bynavnet, tillot PO dem å gjøre dette med den tilstanden de fortsatte å bruke det gamle postkontorets postnummer. Mange gjorde dette. Du kan se fra disse linkene at samme postnummer er i bruk i flere byer. https://suburbanstats.org/zip-codes/pennsylvania/thornhurst https://suburbanstats.org/zip-codes/pennsylvania/scott-twp I utgangspunktet vil «Anytown» med riktig postnummer fungere på grunn av deres sorteringsdatamaskiner som leser postnummer koden først.
Du kan også støte på PO som bare har postbokser og ikke utfører lokal levering, så ingen polygon for kartet ditt. Disse PO-ene er vanligvis små.