Bestemmelse af hvilke amerikanske postnummer, der kortlægges til mere end en stat eller mere end en by?

Jeg bruger en postnummerliste, og jeg er nysgerrig efter at vide, hvor mange (eller hvilke) postnumre, der kortlægges til mere end en amerikansk stat eller USA by?

For eksempel ved jeg, at postnummer 42223 løser den amerikanske hær, Fort Campbell, der strækker sig over KY-TN-statslinjen. Mærkeligt nok er det kun google API returnerer TN for den tilstand, der svarer til den zip.

Kommentarer

  • Hvordan definerer du ” by ” og ” postnummer “?

Svar

Der er 13 multi-state US Census “ZIP Code Tabulation Areas (ZCTAer): 02861, 42223, 59221, 63673, 71749, 73949, 81137, 84536, 86044, 86515, 88063, 89439 & 97635.

Som andre har nævnt, der er et par forskellige måder at finde ud af det område, der er dækket af et postnummer, men ZCTAer er de nemmeste, og o kun officiel version, som jeg kender til.

Så dit eksempel på 42223 spænder over en statsgrænse, , men det ser ud til, at det faktisk er mellem Maryland og Virginia. det mellem Kentucky og Tennessee.

Her er den fulde liste med tilstande:

 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 

Her er hvordan jeg genererede det (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 ud til, at folketællingen har to forskellige tocifrede kodninger for stater. Begge er numre tildelt baseret på statens alfabetiske rækkefølge, men man ser ud til at anvende tallene direkte fra 1-51 (50 stater + DC), mens den anden springer nogle numre over . Jeg brugte det første, mens jeg skulle have brugt det andet, så de statslige navne, jeg nævnte, var forkerte. Jeg har opdateret kode og resultater med den korrekte liste.

Rediger : ny tilstandsmapping bekræftet af OpenCongress API: https://gist.github.com/gabrielgrant/89f883d093e2abf129ad

Kommentarer

  • Mange tak for at fange dette @JesseCrocker – Det synes folketællingen (forvirrende) har to forskellige tocifrede kodninger for stater. Begge er numre tildelt baseret på tilstanden ‘ s alfabetisk rækkefølge, men man ser ud til at anvende tallene direkte fra 1-51 (50 stater + DC), mens den anden springer nogle tal over . Jeg brugte den første, men jeg skulle have brugt den anden, så de statsnavne, jeg nævnte, var forkerte (selvom ZCTAerne var gode). Jeg ‘ har rettet koden og resultaterne med den korrekte liste.
  • Med hensyn til hullerne i FIPS-koder blev de springede tal reserveret i 1970erne til fjerntliggende områder (Amerikansk Samoa, Canal Zone, Guam, Puerto Rico og Jomfruøerne), men derefter blev ‘ ikke brugt til dem. da.wikipedia.org/wiki/…
  • Don ‘ glem ikke postnummer 57717, der spænder over tre stater seks, amter og flere byer: 57717 Aurora, SD 57717 Butte, SD 57717 Carter, MT 57717 Crook, WY 57717 Harding, SD 57717 Lawrence, SD
  • Denne fortegnelse er ikke ‘ t næsten færdig. Tjek mit svar for en langt bedre tilnærmelse. gis.stackexchange.com/a/223445/6052
  • At ‘ er ulige. Google Maps viser 02861 som bogstaveligt talt en del af grænsen mellem MA og RI, og hele postnummeret i RI google.com/ maps / place / Pawtucket, + RI + 02861 / …

Svar

Der er virkelig ikke en måde at fortælle dette på, da der ikke er en ZipCode-grænseform, der er defineret af USPS. ZipCodes defineres af en afgrænsningsboks med leverede gader til af luftfartsselskaber fra et bestemt distributionscenter.

Så du bliver nødt til at tage USPS AIS-data og udpakke ved ZipCodes de gader, der leveres af et givent posthus, og slut derefter til disse et gadenet. Dette er hvad alle de kommercielle leverandører gør (Nokia / TomTom) for at skabe den Psuedo-form, som de bruger til at vise postgrænser.

Denne unøjagtige proces er grunden til, at USPS ikke leverer geodata.

Kommentarer

Svar

US Census Bureau afleder omtrentlige grænser for postnumre baseret på adresserne indeholdt i dem, kaldet ZIP Kodetabuleringsområder (ZCTAer).

De offentliggør relationsfiler , der beskriver, hvordan deres ZCTAer kortlægges til forskellige andre geografiske områder. Hvis du undersøger forholdet ZCTA til sted , kan du se, hvordan de kortlægges til byer. Du kan udlede, hvordan de kortlægges til stater fra forholdet ZCTA til amter .

Forholdsfilerne bruger Census-geografi-ider, så du ” Jeg vil få fat i en gazetteer-fil for at hjælpe dig med at konvertere de numeriske ider til de sted- eller amtsnavne, du forventer.

Som andre svar har angivet, enhver kortlægning af postnumre til steder er sandsynligvis omtrentlig, men jeg har held og lykke med folketællingsdatafilerne.

Svar

2016 TIGER-data med PostGIS

Som en særlig advarsel er ZCTA-data ikke USPS-postnumre. Det er en tilnærmelse af det. USPS-postnumre er virkelig forfærdelige og ikke nyttige undtagen at tilnærme sig. Alle, inklusive enhver anden regeringsenhed end USPS, og (folketællingen for at lave ZCTA) ignorerer dem fuldstændigt. lidt, de ville bare konvertere til den nyeste ZCTA og give autoritative GIS-polygoner.

Derefter … Her spørger vi om skæringspunkter mellem TIGER State og TIGER ZCTA datasæt. Bemærk, vi kvalificerer stater med 1% af det samlede ZCTA-område. Hvis 1% af ZCTA-området ikke er i tilstanden, antager vi, at det er en afrundingsfejl, eller hvis nogen er fede, der fingrer på noget ved folketællingen. Tjek 56168 eller endda 83832 for et postnummer, som vi beskærer med denne ekstra selektivitet.

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 resultatsættet

 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 bør være i stand til at spotcheck alle disse i Google Maps. Google Maps er også ikke autoritativt.

Svar

State Overlaps nævnt i folketællingsdokumentet 1994 / h1>

I juni 1994 er der ifølge følgende US Census Bureau-websted 153 postnumre, der krydser statsgrænser.

Som tidligere nævnt er der et par postnumre, der leverer på tværs af statslinjer, og der er et par ZIP / sektorer, der krydser amtslinjer. Der er 153 postnumre i mere end en tilstand. Der er 9.000 postnumre i mere end et amt. Der var 11.331 (ud af det samlede 857.400) ZIP / sektorer der var spl det efter amt. Alle stater havde nogle splittede sektorer, hvor Virginia, Michigan og Ohio havde en særlig større dosis. Rutesektorerne i landdistrikterne indeholdt (forventet) (relativt) hovedparten af split sektorer. De fleste af de andre sager er i det lavere sektorområde (forbeholdt postkasser) og i sektor 99 (forbeholdt postmester og forretning mail returnering). Der skal forekomme en ikke-standard amtkodetildeling for disse valgte sager. Vi bliver nødt til at undersøge disse på et senere tidspunkt.

Svar

Med ArcGIS kan du bruge det rumlige sammenføjningsværktøj (eller i et script) til at finde hvilke postnummer polygoner, der skærer sig med mere end en tilstandspolygoner. I outputfunktionsklassen vil der være et Join_Count-felt, der angiver flere tilstande. Du kan gøre en lignende ting med lynlåse og byer. Der vil sandsynligvis være falske positive, hvor lynlåse utilsigtet overlapper mere end en på grund af unøjagtigheder ved grænsen / mangel eller opløsning. Du kan muligvis lave en negativ -100 m buffer af lynlåse, før den rumlige sammenføjning og se hvad det gø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 felter, Join_Count og TARGET_FID, føjes altid til outputfunktionsklassen. Join_Count angiver, hvor mange joinfunktioner der matcher hver målfunktion (TARGET_FID). Et andet nyt felt, JOIN_FID, føjes til output, når JOIN_ONE_TO_MANY er specificeret i parameteren Join Operation.”

Svar

Du kan lave et rumskæringspunkt i PostGIS og få en liste tilbage over hver stat eller by og postnummer at de krydser hinanden, hvilket ville returnere flere postnumre, hvor flere stater krydser hinanden, og for hver by, der krydsede det samme postnummer, ville du også se resultatet.

Kommentarer

Svar

I Pennsylvania stemmer postkontorgrænserne ikke overens med kommunegrænserne. Nogle townships kan have flere postkontorer, der leverer til dem. Da vi lavede 911-adressering, bad nogle townships PO om at ændre deres behov til bynavnet tillod POen dem at gøre dette med den betingelse, at de fortsatte med at bruge det gamle posthus postnummer. Mange gjorde dette. Du kan se fra disse links, at det samme postnummer er i brug i flere byer. https://suburbanstats.org/zip-codes/pennsylvania/thornhurst https://suburbanstats.org/zip-codes/pennsylvania/scott-twp Grundlæggende fungerer “Anytown” med det rigtige postnummer på grund af deres sortering af computere, der læser zip kode først.

Du kan også løbe ind i PO, der kun har PO-kasser og ikke foretager lokal levering, så der er ingen polygon til dit kort. Disse PO er normalt små.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *