การกำหนดรหัสไปรษณีย์สหรัฐอเมริกาให้กับแผนที่มากกว่าหนึ่งรัฐหรือมากกว่าหนึ่งเมือง?


23

ฉันใช้รายชื่อรหัสไปรษณีย์และฉันอยากรู้ว่าแผนที่รหัสไปรษณีย์ (หรือที่) มีจำนวนเท่าใดในแผนที่มากกว่าหนึ่งรัฐในสหรัฐอเมริกาหรือเมืองของสหรัฐอเมริกา

เช่นฉันรู้ว่ารหัสไปรษณีย์42223สามารถแก้ไขให้กับกองทัพสหรัฐฟอร์ตแคมป์เบลล์ซึ่งเลาะเลียบไปตามรัฐ KY-TN อย่างผิดปกติ Google API จะส่งคืนเฉพาะTNสถานะที่สอดคล้องกับรหัสไปรษณีย์นั้นเท่านั้น


คุณกำหนด "เมือง" และ "รหัสไปรษณีย์" ได้อย่างไร
Evan Carroll

คำตอบ:


22

การสำรวจสำมะโนประชากรของสหรัฐในหลายรัฐมี 13 เขตพื้นที่รหัส (ZCTAs): 02861, 42223, 59221, 63673, 71749, 73949, 81137, 84536, 86015, 88063, 89439 และ 97635

ตามที่คนอื่นพูดถึงมีวิธีที่แตกต่างกันเล็กน้อยในการค้นหาพื้นที่ที่ครอบคลุมโดยรหัสไปรษณีย์ แต่ ZCTA เป็นวิธีที่ง่ายที่สุดและเป็นรุ่นที่เป็นทางการเพียงอย่างเดียวที่ฉันรู้

ตัวอย่างของ 42223 ของคุณครอบคลุมอาณาเขตของรัฐแต่ดูเหมือนว่ามันอยู่ระหว่างแมริแลนด์และเวอร์จิเนีย ระหว่างเคนตักกี้กับรัฐเทนเนสซี

นี่คือรายการแบบเต็มของรัฐ:

 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

นี่คือวิธีที่ฉันสร้างมัน (กับ Pandas ใน 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)

แก้ไข : ดูเหมือนว่าการสำรวจสำมะโนประชากรมีสองรหัสสองหลักที่แตกต่างกันสำหรับรัฐ ทั้งสองเป็นตัวเลขที่ได้รับมอบหมายอยู่บนพื้นฐานของการสั่งซื้อตามตัวอักษรของรัฐ แต่อย่างใดอย่างหนึ่งดูเหมือนว่าจะใช้ตัวเลขโดยตรง 1-51 (50 รัฐ + DC) ในขณะที่กระโดดอื่น ๆ ตัวเลขบาง ฉันใช้ชื่อแรกในขณะที่ฉันควรใช้ชื่อที่สองดังนั้นชื่อรัฐที่ฉันระบุไว้นั้นผิด ฉันได้อัปเดตรหัสและผลลัพธ์ด้วยรายการที่ถูกต้อง

แก้ไข : การแมปสถานะใหม่ที่ยืนยันโดย OpenCongress API: https://gist.github.com/gabrielgrant/89f883d093e2abf129ad


2
ขอบคุณมากที่จับ @JesseCrocker นี้ - ดูเหมือนว่าการสำรวจสำมะโนประชากร (พลุกพล่าน) มีการเข้ารหัสสองหลักที่แตกต่างกันสองรัฐ ทั้งสองเป็นตัวเลขที่ได้รับมอบหมายอยู่บนพื้นฐานของการสั่งซื้อตามตัวอักษรของรัฐ แต่อย่างใดอย่างหนึ่งดูเหมือนว่าจะใช้ตัวเลขโดยตรง 1-51 (50 รัฐ + DC) ในขณะที่กระโดดอื่น ๆ ตัวเลขบาง ฉันใช้ชื่อแรก แต่ฉันควรใช้ชื่อที่สองดังนั้นชื่อรัฐที่ฉันระบุไว้นั้นผิด (แม้ว่า ZCTAs นั้นดี) ฉันแก้ไขรหัสและผลลัพธ์ด้วยรายการที่ถูกต้อง
Gabriel Grant

2
เกี่ยวกับช่องว่างในรหัส FIPS หมายเลขที่ข้ามไปนั้นถูกสงวนไว้ในปี 1970 สำหรับดินแดนห่างไกล (อเมริกันซามัว, เขตคลอง, กวม, เปอร์โตริโกและหมู่เกาะเวอร์จิน) แต่ก็ไม่ได้ถูกใช้สำหรับพวกเขา en.wikipedia.org/wiki/…
neuhausr

3
อย่าลืมรหัสไปรษณีย์ 57717 ที่ครอบคลุมสามรัฐหกมณฑลและหลายเมือง: 57717 Aurora, SD 57717 Butte, SD 57717 Carter, MT 57717 Crook, WY 57717 Harding, SD 57717 Lawrence, SD
Jeffrey

1
รายชื่อนี้ยังไม่ใกล้เคียง ตรวจสอบคำตอบของฉันสำหรับไกลประมาณที่ดีกว่า gis.stackexchange.com/a/223445/6052
Evan Carroll

@ Jeffrey ที่น่าสนใจฉันสงสัยว่าทำไมไม่ได้อยู่ในรายการสถานที่ ZCTA?
Gabriel Grant

11

ไม่มีทางที่จะบอกสิ่งนี้ได้ เนื่องจากไม่มีรูปร่างขอบเขต ZipCode ที่กำหนดโดย USPS รหัสไปรษณีย์ถูกกำหนดโดยกล่องขอบเขตของถนนที่ส่งไปยังผู้ให้บริการจากศูนย์กระจายสินค้าเฉพาะ

ดังนั้นคุณจะต้องใช้ข้อมูล USPS AIS และแยกโดย ZipCodes ถนนที่จัดส่งโดยที่ทำการไปรษณีย์ที่กำหนดแล้วเข้าร่วมกริดถนนเหล่านี้ นี่คือสิ่งที่ผู้ขายเชิงพาณิชย์ทำ (Nokia / TomTom) เพื่อสร้างรูปร่าง Psuedo ที่พวกเขาใช้เพื่อแสดงขอบเขตไปรษณีย์

กระบวนการไม่แน่นอนนี้เป็นสาเหตุที่ USPS ไม่ได้ให้ข้อมูลเชิงพื้นที่


2
มีอะไรที่ถูกต้อง? ความจริงคืออะไร มีการสร้างเลเยอร์ขอบเขตซิปจำนวนมากซึ่งอาจหรือไม่อาจตอบสนองวัตถุประสงค์ของการวิเคราะห์นี้โดยเฉพาะเนื่องจากไม่ทราบข้อกำหนด Esri ขอบเขตซิปฟรี - arcgis.com/home/item.html?id=8d2012a2016e484dafaac0451f9aea24ดูเพิ่มเติมgis.stackexchange.com/questions/2682/...
awesomo

2
ให้ไว้ แต่คุณต้องเข้าใจสิ่งที่คุณกำลังทำผลกระทบของข้อมูลที่คุณใช้
DEWright

7

สำนักสำรวจสำมะโนประชากรของสหรัฐได้มาขอบเขตโดยประมาณสำหรับรหัสไปรษณีย์ตามที่อยู่ภายในพวกเขาเรียกว่าพื้นที่การจัดระเบียบรหัสไปรษณีย์ (ZCTA)

พวกเขาเผยแพร่ไฟล์ความสัมพันธ์ที่อธิบายถึงวิธีการ ZCTA ของพวกเขาแมปไปยังภูมิภาคอื่น ๆ หากคุณตรวจสอบไฟล์ความสัมพันธ์ZCTA to Placeคุณสามารถดูวิธีการจับคู่กับเมืองและเมืองต่างๆ คุณสามารถอนุมานวิธีที่พวกเขาจับคู่กับรัฐจากไฟล์ความสัมพันธ์ZCTA ไปยังมณฑล

ไฟล์ความสัมพันธ์ใช้รหัสภูมิศาสตร์การสำรวจสำมะโนประชากรดังนั้นคุณจะต้องการคว้าไฟล์ gazetteerเพื่อช่วยคุณแปลงรหัสตัวเลขเป็นชื่อสถานที่หรือชื่อเขตที่คุณต้องการ

ตามที่คำตอบอื่น ๆ ได้ระบุไว้การทำแผนที่ของรหัสไปรษณีย์ไปยังสถานที่ต่างๆน่าจะเป็นการประมาณ แต่ฉันโชคดีกับไฟล์ข้อมูลสำมะโนประชากร


4

ข้อมูล TIGER ปี 2559 กับ PostGIS

ในฐานะข้อแม้พิเศษข้อมูล ZCTA ไม่ใช่รหัสไปรษณีย์ USPS มันเป็นการประมาณของมัน รหัสไปรษณีย์ USPS น่ากลัวจริง ๆ และไม่มีประโยชน์ยกเว้นโดยประมาณ ทุกคนรวมถึงทุกหน่วยงานของรัฐนอกเหนือจาก USPS และ (การสำรวจสำมะโนประชากรสำหรับการทำ ZCTA) จะไม่สนใจพวกเขาทั้งหมด หาก USPS ต้องการที่จะเติบโตขึ้นเล็กน้อยพวกเขาเพียงแค่เปลี่ยนเป็น ZCTA ล่าสุดและให้รูปหลายเหลี่ยม GIS ที่เชื่อถือได้

  • ข้อมูลตาราง 2016 TIGER ZCTA 877 MB
    • 33,144 ZCTA
    • รวม 52,669,641 คะแนนรวม
  • ข้อมูลตาราง TIGER States 15 MB 2016
    • 56 "รัฐ"
    • รวม 912,464 คะแนน

จากนั้น ... ที่นี่เราค้นหาการแยกระหว่างชุดข้อมูล TIGER State และ TIGER ZCTA หมายเหตุเราผ่านการรับรองสถานะ 1% ของพื้นที่ ZCTA ทั้งหมด หาก 1% ของพื้นที่ ZCTA ไม่ได้อยู่ในสถานะเราถือว่าเป็นข้อผิดพลาดในการปัดเศษ ลองดู56168หรือ83832รหัสไปรษณีย์ที่เราตัดด้วยการเลือกที่เพิ่มนี้

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;

นี่คือการเริ่มต้นใหม่

 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)

คุณควรตรวจสอบสิ่งเหล่านี้ใน Google แผนที่ อย่างไรก็ตาม Google แผนที่ยังไม่ได้รับอนุญาต


1

รัฐทับซ้อนที่กล่าวถึงในปี 1994 เอกสารการสำรวจสำมะโนประชากร

ในเดือนมิถุนายนปี 1994 ตามเว็บไซต์สำนักสำรวจสำมะโนประชากรของสหรัฐดังต่อไปนี้มีรหัสไปรษณีย์ 153 รหัสที่ข้ามเขตแดนรัฐ

ดังที่กล่าวไว้ก่อนหน้านี้มีรหัสไปรษณีย์สองสามตัวที่ส่งข้ามเส้นรัฐและมีรหัสไปรษณีย์ / ภาคที่ข้ามเขตเขต มี 153 รหัสไปรษณีย์ในมากกว่าหนึ่งสถานะมีรหัสไปรษณีย์ 9,000 รหัสในเขตมากกว่าหนึ่งเขต มี 11,331 (จากทั้งหมด 857,400) ZIP / กลุ่มที่แบ่งตามเขต ทุกรัฐมีบางส่วนแยกกับเวอร์จิเนียมิชิแกนและโอไฮโอมีขนาดใหญ่เป็นพิเศษ ภาคเส้นทางชนบทตามที่คาดไว้มีส่วนแบ่งค่อนข้างมากของสิงโต กรณีอื่น ๆ ส่วนใหญ่อยู่ในช่วงเซกเตอร์ที่ต่ำกว่า (สงวนไว้สำหรับกล่องที่ทำการไปรษณีย์) และในเซกเตอร์ 99 (สงวนไว้สำหรับการส่งคืนไปรษณีย์และไปรษณีย์ธุรกิจ) จะต้องมีการกำหนดรหัสเคาน์ตีที่ไม่เป็นมาตรฐานสำหรับกรณีที่เลือกเหล่านี้ เราจะต้องตรวจสอบสิ่งเหล่านี้เพิ่มเติมในภายหลัง


0

ด้วย ArcGIS คุณสามารถใช้เครื่องมือเข้าร่วมเชิงพื้นที่ (หรือในสคริปต์) เพื่อค้นหารูปหลายเหลี่ยมรหัสไปรษณีย์ที่ตัดกันด้วยรูปหลายเหลี่ยมสถานะมากกว่าหนึ่ง ในคลาสคุณลักษณะเอาท์พุทจะมีฟิลด์ Join_Count ที่จะระบุหลายสถานะ คุณสามารถทำสิ่งเดียวกันกับรหัสไปรษณีย์และเมือง อาจเป็นไปได้ว่ามีผลบวกปลอมที่รหัสไปรษณีย์ทับซ้อนกันมากกว่าหนึ่งอันเนื่องมาจากความไม่ถูกต้อง / การขาดหรือการแก้ไขชายแดน คุณอาจจะทำบัฟเฟอร์ลบ -100m ของรหัสไปรษณีย์ก่อนที่จะรวมเชิงพื้นที่และดูว่ามันทำอะไร

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/th/arcgisdesktop/10.0/help/index.html#/Spatial_Join/00080000000qq0000/
"ฟิลด์ใหม่สองฟิลด์คือ Join_Count และ TARGET_FID จะถูกเพิ่มไปยังคลาสคุณลักษณะเอาท์พุท คุณสมบัติตรงกับแต่ละคุณสมบัติเป้าหมาย (TARGET_FID) ฟิลด์ใหม่อีกฟิลด์หนึ่งคือ JOIN_FID จะถูกเพิ่มไปยังเอาต์พุตเมื่อระบุ JOIN_ONE_TO_MANY ในพารามิเตอร์การดำเนินการเข้าร่วม "


0

คุณสามารถทำปริภูมิเชิงปริภูมิใน PostGIS และรับรายการกลับของทุกรัฐหรือเมืองและรหัสไปรษณีย์ที่พวกเขาตัดกันซึ่งจะส่งคืนรหัสไปรษณีย์หลาย ๆ ที่ที่รัฐหลายรัฐตัดกันและสำหรับแต่ละเมืองที่ตัดกันไปรษณีย์เดียวกันคุณจะเห็น ผลลัพธ์นั้นเช่นกัน



-2

ในเพนซิลเวเนียที่ทำการไปรษณีย์เขตแดนไม่สอดคล้องกับเขตเทศบาล บางเมืองอาจมีที่ทำการไปรษณีย์หลายแห่งส่งถึงพวกเขา เมื่อเราจัดการที่อยู่ 911 บางเมืองก็ขอให้ PO เปลี่ยนชื่อของพวกเขาเป็นชื่อเขตการปกครอง PO อนุญาตให้พวกเขาทำสิ่งนี้โดยมีเงื่อนไขว่าพวกเขายังคงใช้รหัสไปรษณีย์เก่าของที่ทำการไปรษณีย์ต่อไป หลายคนทำสิ่งนี้ คุณสามารถดูได้จากลิงค์เหล่านี้มีรหัสไปรษณีย์เดียวกันที่ใช้งานในหลายเมือง https://suburbanstats.org/zip-codes/pennsylvania/thornhurst https://suburbanstats.org/zip-codes/pennsylvania/scott-twpโดยทั่วไปจะใช้ "Anytown" ด้วยรหัสไปรษณีย์ที่ถูกต้องซึ่งจะใช้งานได้เนื่องจากคอมพิวเตอร์ที่เรียงลำดับการอ่าน รหัสไปรษณีย์ก่อน

นอกจากนี้คุณยังสามารถเรียกใช้ PO ที่มีเฉพาะตู้ป ณ . และไม่ทำการจัดส่งในพื้นที่ดังนั้นจึงไม่มีรูปหลายเหลี่ยมสำหรับแผนที่ของคุณ PO เหล่านี้มักจะมีขนาดเล็ก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.