Jag använder en postnummerlista och jag är nyfiken på att veta hur många (eller vilka) postnummer som mappas till mer än en amerikansk stat eller USA stad?
Till exempel vet jag att postnummer 42223
löser sig till den amerikanska armén, Fort Campbell som sträcker sig över KY-TN-statslinjen. Märkligt nog, endast Google API returnerar TN
för det tillstånd som motsvarar det zip.
Kommentarer
- Hur definierar du ” stad ” och ” postnummer ”?
Svar
Det finns 13 flerstatliga US Census ”ZCTA-områden: 02861, 42223, 59221, 63673, 71749, 73949, 81137, 84536, 86044, 86515, 88063, 89439 & 97635.
Som andra har nämnt finns det är några olika sätt att räkna ut det område som omfattas av ett postnummer, men ZCTA är det enklaste och o bara officiell version som jag känner till.
Så ditt exempel på 42223 sträcker sig över en statsgräns, men det verkar som om det faktiskt är mellan Maryland och Virginia. det mellan Kentucky och Tennessee.
Här är hela listan med tillstånd:
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
Så här skapade jag den (med Panda 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)
Redigera : Det verkar som folkräkningen har två olika tvåsiffriga kodningar för stater. Båda är nummer som tilldelats baserat på tillståndets alfabetiska ordning, men man verkar tillämpa siffrorna direkt från 1-51 (50 stater + DC), medan den andra hoppar över några siffror . Jag använde den första, medan jag borde ha använt den andra, så tillståndsnamnen jag listade var fel. Jag har uppdaterat kod och resultat med rätt lista.
Redigera : ny statusmappning bekräftad av OpenCongress API: https://gist.github.com/gabrielgrant/89f883d093e2abf129ad
Kommentarer
- Tack så mycket för att fånga den här @JesseCrocker – Det verkar folkräkningen (förvirrande) har två olika tvåsiffriga kodningar för stater. Båda är nummer som tilldelats baserat på tillståndet ’ s alfabetisk ordning, men man verkar tillämpa siffrorna direkt från 1-51 (50 stater + DC), medan den andra hoppar över några siffror . Jag använde den första, men jag borde ha använt den andra, så tillståndsnamnen som jag listade var felaktiga (även om ZCTA var bra). Jag ’ har fixat koden och resultaten med rätt lista.
- När det gäller luckorna i FIPS-koder var de hoppade siffrorna reserverade på 1970-talet för avlägsna områden (Amerikanska Samoa, Canal Zone, Guam, Puerto Rico och Jungfruöarna), men slutade ’ inte användas för dem. sv.wikipedia.org/wiki/…
- Don ’ glöm inte postnummer 57717 som sträcker sig över tre stater sex, län och flera städer: 57717 Aurora, SD 57717 Butte, SD 57717 Carter, MT 57717 Crook, WY 57717 Harding, SD 57717 Lawrence, SD
- Den här listan är inte ’ t nästan klar. Kolla in mitt svar för en långt bättre approximation. gis.stackexchange.com/a/223445/6052
- Det ’ är udda. Google Maps visar
02861
som bokstavligen utgör en del av gränsen mellan MA och RI, och hela postnumret i RI google.com/ maps / place / Pawtucket, + RI + 02861 / …
Svar
Det finns verkligen inget sätt att berätta detta, eftersom det inte finns någon ZipCode-gränsform som definieras av USPS. ZipCodes definieras av en avgränsningsruta med levererade gator till av transportörer från ett visst distributionscenter.
Så du skulle behöva ta USPS AIS-data och extrahera av ZipCodes de gator som levereras av ett visst postkontor och sedan ansluta dessa till ett gatunät. Detta är vad alla kommersiella leverantörer gör (Nokia / TomTom) för att skapa den Psuedo-form som de använder för att visa postgränser.
Denna inexakta process är anledningen till att USPS inte tillhandahåller rumsliga data.
Kommentarer
- Är något korrekt? Vad är sanning? Massor av zip-gränslager har skapats, vilket kanske eller inte kan tjäna syftet med den här analysen med tanke på dess okända krav. Esri gratis zip-gränser – arcgis.com/home/item.html?id=8d2012a2016e484dafaac0451f9aea24 Se även gis .stackexchange.com / frågor / 2682 / …
- Givet, men du måste också förstå vad du gör konsekvenserna av de data du använder.
Svar
USA: s folkräkningsbyrå härleder ungefärliga gränser för postnummer baserat på adresserna i dem, kallade ZIP Kodtabellområden (ZCTA).
De publicerar relationsfiler som beskriver hur deras ZCTA kartläggs till olika andra geografiska områden. Om du undersöker förhållandefilen ZCTA to Place kan du se hur de kartläggs till städer och städer. Du kan härleda hur de mappas till stater från förhållandefilen ZCTA till län .
Relationsfilerna använder geografi-ID: n för folkräkningen, så du ” Jag vill ta en gazetteer-fil för att hjälpa dig konvertera de numeriska ID: n till de plats- eller länsnamn du förväntar dig.
Som andra svaren har sagt att all kartläggning av postnummer till platser sannolikt kommer att vara ungefärlig, men jag har haft lycka till med folkräkningsdatafilerna.
Svar
2016 TIGER-data med PostGIS
Som en speciell varning är ZCTA-data inte USPS-postnummer. Det är en approximation av det. USPS-postnummer är riktigt hemska och är inte användbara förutom att ungefärligt. Alla, inklusive alla andra myndigheter än USPS, och (folkräkningen för att göra ZCTA) ignorerar dem helt. Om USPS ville växa upp lite, de skulle bara konvertera till den senaste ZCTA och tillhandahålla auktoritativa GIS-polygoner.
- 2016 TIGER ZCTA 877 MB tabelldata.
- 33144 ZCTAs
- 52,669,641 poäng totalt,
- TIGER-staterna 2016 15 MB tabelldata.
- 56 ”State” s
- 912 464 poäng totalt
Sedan … Här frågar vi efter korsningar mellan TIGER State och TIGER ZCTA dataset. Observera att vi kvalificerar stater med 1% av det totala ZCTA-området. Om 1% av ZCTA-området inte är i tillståndet, antar vi att det är ett avrundningsfel, eller om någon är fet som fingrar på något vid folkräkningen. Kolla in 56168
eller till och med 83832
för ett postnummer som vi beskär med denna extra 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;
Här är 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 kunna kontrollera alla dessa i Google Maps. Google Maps är också inte auktoritärt.
Svar
Statliga överlappningar som nämns i 1994 Census Document
I juni 1994, enligt följande US Census Bureau-webbplats finns det 153 postnummer som korsar statsgränser.
Som nämnts tidigare finns det några postnummer som levererar över statliga linjer, och det finns några ZIP / sektorer som korsar länslinjer. Det finns 153 postnummer i mer än ett tillstånd. Det finns 9 000 postnummer i mer än ett län. Det fanns 11 331 (av de totala 857 400) Postnummer / sektorer det var spl det efter län. Alla stater hade en delad sektor, där Virginia, Michigan och Ohio hade en särskilt större dos. Landsvägsbranscherna innehöll, som förväntat, (relativt) största delen av delade sektorer. De flesta av de andra fallen är inom det lägre sektorområdet (reserverat för postlådor) och inom sektor 99 (reserverat för postmästaren och företaget e-postreturering). Det måste finnas vissa icke-standardiserade landskodstilldelningar för dessa valda fall. Vi måste undersöka dessa senare.
Svar
Med ArcGIS kan du använda det geografiska kopplingsverktyget (eller i ett skript) för att hitta vilka postnummerpolygoner som skär varandra med mer än en tillståndspolygon. I utdatafunktionsklassen kommer det att finnas ett Join_Count-fält som indikerar flera tillstånd. Du kan göra en liknande sak med dragkedjor och städer. Det kommer sannolikt att vara falskt positiva där dragkedjorna oavsiktligt överlappar mer än en på grund av gränsfelaktigheter / brist eller upplösning. Du kan eventuellt göra en negativ -100 m buffert av dragkedjorna innan den rumsliga kopplingen och se vad 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/
”Två nya fält, Join_Count och TARGET_FID, läggs alltid till i utdatafunktionsklassen. Join_Count anger hur många anslutningsfunktioner som matchar varje målfunktion (TARGET_FID). Ett annat nytt fält, JOIN_FID, läggs till utgången när JOIN_ONE_TO_MANY anges i parametern Join Operation.”
Svar
Du kan göra en rumskorsning i PostGIS och få tillbaka en lista över varje stat eller stad och postnummer att de korsar varandra, vilket skulle returnera flera postnummer där flera stater korsar varandra, och för varje stad som korsade samma postnummer skulle du också se resultatet.
Kommentarer
Svar
I Pennsylvania överensstämmer inte postkontorets gränser med kommungränserna. Vissa townships kan ha flera postkontor som levererar till dem. När vi gjorde 911-adressering bad vissa townships PO att ändra sitt behov till stadens namn, tillät PO dem att göra detta med villkoret att de fortsatte att använda det gamla postkontorets postnummer. Många gjorde det. Du kan se från dessa länkar att samma postnummer används i flera städer. https://suburbanstats.org/zip-codes/pennsylvania/thornhurst https://suburbanstats.org/zip-codes/pennsylvania/scott-twp I grund och botten fungerar ”Anytown” med rätt postnummer på grund av att deras sorteringsdatorer läser zip kod först.
Du kan också stöta på PO som bara har PO-rutor och inte gör lokal leverans så ingen polygon för din karta. Dessa PO är vanligtvis små.