Xác định bản đồ mã vùng nào của Hoa Kỳ tới nhiều tiểu bang hoặc nhiều thành phố?


23

Tôi đang sử dụng danh sách mã zip và tôi tò mò muốn biết có bao nhiêu (hoặc cái) mã bản đồ tới nhiều tiểu bang hoặc thành phố của Hoa Kỳ?

Chẳng hạn, tôi biết rằng Mã Zip 42223giải quyết cho Quân đội Hoa Kỳ, Fort Campbell, đứng trên dòng trạng thái KY-TN. Điều kỳ lạ là API Google chỉ trả về TNtrạng thái tương ứng với mã zip đó.


Bạn định nghĩa "thành phố" và "mã zip" như thế nào?
Evan Carroll

Câu trả lời:


22

Có 13 Khu vực lập mã ZIP của Tổng điều tra dân số Hoa Kỳ (ZCTA): 02861, 42223, 59221, 63673, 71749, 73949, 81137, 84536, 86044, 86515, 88063, 89439 & 97635.

Như những người khác đã đề cập, có một vài cách khác nhau để tìm ra khu vực được bao phủ bởi Mã ZIP, nhưng ZCTA là dễ nhất và là phiên bản chính thức duy nhất mà tôi biết.

Vì vậy, ví dụ của bạn về 42223 vượt qua biên giới tiểu bang, nhưng có vẻ như nó thực sự nằm giữa Maryland và Virginia. giữa Kentucky và Tennessee.

Đây là danh sách đầy đủ với các trạng thái:

 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

Đây là cách tôi tạo ra nó (với 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)

Chỉnh sửa : Có vẻ như Tổng điều tra có hai mã hóa hai chữ số khác nhau cho các tiểu bang. Cả hai đều là các số được gán dựa trên thứ tự bảng chữ cái của tiểu bang, nhưng một số dường như áp dụng các số trực tiếp từ 1-51 (50 tiểu bang + DC), trong khi các số khác bỏ qua một số số . Tôi đã sử dụng cái đầu tiên, trong khi tôi nên sử dụng cái thứ hai, vì vậy tên trạng thái tôi liệt kê là sai. Tôi đã cập nhật mã và kết quả với danh sách chính xác.

Chỉnh sửa : ánh xạ trạng thái mới được xác nhận bởi API OpenCongress: https://gist.github.com/gabrielgrant/89f883d093e2abf129ad


2
Cảm ơn rất nhiều vì đã nắm bắt được @JesseCrocker này - Có vẻ như Điều tra dân số (khó hiểu) có hai mã hóa hai chữ số khác nhau cho các tiểu bang. Cả hai đều là các số được gán dựa trên thứ tự bảng chữ cái của tiểu bang, nhưng một số dường như áp dụng các số trực tiếp từ 1-51 (50 tiểu bang + DC), trong khi các số khác bỏ qua một số số . Tôi đã sử dụng cái đầu tiên, nhưng đáng lẽ tôi nên sử dụng cái thứ hai, vì vậy tên trạng thái tôi liệt kê là sai (mặc dù ZCTA là tốt). Tôi đã sửa mã và kết quả với danh sách chính xác.
Gabriel Grant

2
Liên quan đến các lỗ hổng trong mã Code, các số bị bỏ qua được dành riêng vào những năm 1970 cho các vùng lãnh thổ xa xôi (Samoa thuộc Mỹ, Vùng Canal, đảo Guam, Puerto Rico và Quần đảo Virgin), nhưng cuối cùng không được sử dụng cho chúng. vi.wikipedia.org/wiki/ từ
neuhausr

3
Đừng quên mã zip 57717 bao gồm ba tiểu bang sáu, hạt và nhiều thành phố: 57717 Aurora, SD 57717 Butte, SD 57717 Carter, MT 57717 Crook, WY 57717 Harding, SD 57717 Lawrence, SD
Jeffrey

1
Danh sách này chưa hoàn thành. Kiểm tra câu trả lời của tôi cho một xa xấp xỉ tốt hơn. gis.stackexchange.com/a/223445/6052
Evan Carroll

@Jeffrey thú vị, tôi tự hỏi tại sao điều đó không được liệt kê trong danh sách địa điểm ZCTA?
Gabriel Grant

11

Thực sự không có cách nào để nói điều này; kể từ khi có không phải là một hình dạng đường biên mã bưu điện được xác định bởi các USPS. ZipCodes được xác định bởi một hộp Đường giới hạn được phân phối bởi các nhà mạng từ một trung tâm phân phối cụ thể.

Vì vậy, bạn sẽ cần lấy dữ liệu USIS AIS và trích xuất bằng ZipCodes các đường phố được gửi bởi một Bưu điện cụ thể, sau đó Tham gia các mạng lưới đường phố này. Đây là những gì tất cả các nhà cung cấp thương mại làm (Nokia / TomTom) để tạo ra hình dạng Psuedo mà họ sử dụng để hiển thị ranh giới bưu chính.

Quá trình không chính xác này là lý do tại sao USPS không cung cấp dữ liệu không gian.


2
Có gì chính xác không? Sự thật là gì? Rất nhiều lớp ranh giới zip đã được tạo, có thể hoặc không thể phục vụ mục đích của phân tích cụ thể này với các yêu cầu chưa biết. Ranh giới zip miễn phí của Esri - arcgis.com/home/item.html?id=8d2012a2016e484dafaac0451f9aea24 Xem thêm gis.stackexchange.com/questions/2682/ cho
awesomo

2
Đưa ra, nhưng bạn cũng cần phải hiểu bất cứ điều gì bạn đang làm ý nghĩa của dữ liệu bạn sử dụng.
DEWright

7

Cục điều tra dân số Hoa Kỳ đưa ra các ranh giới gần đúng cho các mã ZIP dựa trên các địa chỉ có trong chúng, được gọi là Vùng mã hóa mã ZIP (ZCTA).

Họ xuất bản các tệp quan hệ mô tả cách ZCTA của họ ánh xạ tới các khu vực địa lý khác nhau. Nếu bạn kiểm tra tệp quan hệ ZCTA để đặt, bạn có thể thấy cách chúng ánh xạ tới các thành phố và thị trấn. Bạn có thể suy luận cách họ ánh xạ tới các trạng thái từ tệp quan hệ ZCTA đến Quận .

Các tệp mối quan hệ sử dụng ID địa lý điều tra dân số, vì vậy bạn sẽ muốn lấy tệp gazetteer để giúp bạn chuyển đổi ID số thành tên địa danh hoặc tên quận mà bạn mong đợi.

Như các câu trả lời khác đã nêu, mọi ánh xạ mã ZIP đến các địa điểm có khả năng là gần đúng, nhưng tôi đã rất may mắn với các tệp dữ liệu Điều tra dân số.


4

Dữ liệu Tiger 2016 với PostGIS

Là một cảnh báo đặc biệt, dữ liệu ZCTA không phải là Mã Zip USPS. Đó là một xấp xỉ của nó. Mã Zip USPS thực sự khủng khiếp và không hữu ích ngoại trừ gần đúng. Tất cả mọi người, bao gồm mọi thực thể chính phủ khác ngoài USPS và (Điều tra dân số để tạo ZCTA) hoàn toàn bỏ qua chúng. Nếu USPS muốn lớn lên một chút, họ sẽ chuyển đổi sang ZCTA mới nhất và cung cấp các đa giác GIS có thẩm quyền.

Sau đó ... Ở đây chúng tôi truy vấn các giao điểm giữa các bộ dữ liệu của TIGER State và TIGER ZCTA. Lưu ý, chúng tôi đủ điều kiện cho các tiểu bang bằng 1% tổng diện tích ZCTA. Nếu 1% khu vực ZCTA không ở trong tiểu bang, chúng tôi cho rằng đó là lỗi làm tròn hoặc ai đó béo ngón tay cái gì đó trong Điều tra dân số. Kiểm tra 56168hoặc thậm chí 83832để biết mã zip mà chúng tôi đang cắt tỉa với tính chọn lọc được thêm này.

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;

Đây là sự phục hồi

 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)

Bạn sẽ có thể phát hiện kiểm tra tất cả những thứ này trong Google Maps. Tuy nhiên, Google Maps cũng không có thẩm quyền.


1

Sự chồng chéo nhà nước được đề cập trong Tài liệu điều tra dân số năm 1994

Vào tháng 6 năm 1994, theo trang web của Cục điều tra dân số Hoa Kỳ sau đây, có 153 mã zip vượt qua các biên giới nhà nước.

Như đã đề cập trước đó, có một vài Mã ZIP phân phối trên các dòng trạng thái và có một vài ZIP / ngành vượt qua các dòng quận. Có 153 mã ZIP ở nhiều bang.Có 9.000 mã ZIP tại nhiều quận. Có 11.331 (trong tổng số 857.400) ZIP / ngành được chia theo quận. Tất cả các bang có một số khu vực phân chia, với Virginia, Michigan và Ohio có liều lượng đặc biệt lớn hơn. Các khu vực tuyến đường nông thôn, như dự kiến, bao gồm (tương đối) phần của các lĩnh vực phân chia. Hầu hết các trường hợp khác là trong phạm vi khu vực thấp hơn (dành riêng cho hộp thư bưu điện) và trong Khu vực 99 (dành riêng cho bưu điện và trả lại thư kinh doanh). Phải có một số chuyển nhượng mã quận không chuẩn xảy ra cho các trường hợp được chọn này. Chúng tôi sẽ phải điều tra thêm vào những ngày sau đó.


0

Với ArcGIS, bạn có thể sử dụng công cụ nối không gian (hoặc trong tập lệnh) để tìm đa giác mã zip nào giao nhau với nhiều đa giác trạng thái. Trong lớp tính năng đầu ra, sẽ có trường Join_Count sẽ chỉ ra nhiều trạng thái. Bạn có thể làm một điều tương tự với khóa và thành phố. Có khả năng sẽ có những kết quả dương tính giả trong đó các khóa vô tình trùng nhau nhiều hơn một do sự thiếu chính xác / thiếu biên giới hoặc độ phân giải. Bạn có thể có thể thực hiện bộ đệm âm -100m của các khóa trước khi nối không gian và xem điều đó làm gì.

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/
"Hai trường mới, Join_Count và TARGET_FID, luôn được thêm vào lớp tính năng đầu ra. các tính năng phù hợp với từng tính năng đích (TARGET_FID). Một trường mới khác, THAM GIA, được thêm vào đầu ra khi THAM GIA_ONE_TO_MANY được chỉ định trong tham số Hoạt động tham gia. "



-2

Ở Pennsylvania, ranh giới bưu điện không phù hợp với ranh giới thành phố. Một số thị trấn có thể có một số Bưu điện giao hàng cho họ. Khi chúng tôi đang thực hiện địa chỉ 911, một số thị trấn đã yêu cầu PO đổi tên nae thành tên thị trấn, PO cho phép họ làm điều này với điều kiện họ tiếp tục sử dụng mã zip của Bưu điện cũ. Nhiều người đã làm điều này. Bạn có thể thấy từ các liên kết này, cùng một mã zip được sử dụng cho một số thị trấn. https://suburbanstats.org/zip-codes/pennsylvania/thornhurst https://suburbanstats.org/zip-codes/pennsylvania/scott-twp Về cơ bản sử dụng "Anytown" với mã zip phù hợp sẽ hoạt động vì việc đọc sắp xếp máy tính của họ mã zip đầu tiên.

Bạn cũng có thể chạy vào PO chỉ có hộp PO và không thực hiện phân phối cục bộ để không có đa giác cho bản đồ của bạn. Những PO này thường nhỏ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.