Menentukan kode pos AS mana yang dipetakan ke lebih dari satu negara bagian atau lebih dari satu kota?


23

Saya menggunakan daftar kode pos, dan saya ingin tahu berapa banyak (atau yang) kode pos dipetakan ke lebih dari satu negara bagian AS atau kota AS?

Misalnya saya tahu bahwa Kode Pos 42223diputuskan untuk Angkatan Darat AS, Fort Campbell yang mengangkangi garis negara KY-TN. Anehnya, API Google hanya mengembalikan TNuntuk keadaan yang sesuai dengan zip itu.


Bagaimana Anda mendefinisikan "kota", dan "kode pos"?
Evan Carroll

Jawaban:


22

Ada 13 Wilayah Tabulasi Kode ZIP Kode Sensus AS (ZCTA) multi-negara: 02861, 42223, 59221, 63673, 71749, 73949, 81137, 84536, 86044, 86515, 88063, 89439 & 97635.

Seperti yang disebutkan orang lain, ada beberapa cara berbeda untuk mengetahui area yang dicakup oleh Kode ZIP, tetapi ZCTA adalah yang paling mudah, dan satu-satunya versi resmi yang saya ketahui.

Jadi contoh 42223 Anda menjangkau perbatasan negara bagian, tetapi sepertinya itu sebenarnya antara Maryland dan Virginia. bahwa antara Kentucky dan Tennessee.

Berikut daftar lengkap dengan status:

 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

Inilah cara saya membuatnya (dengan Pandas dengan 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)

Sunting : Tampaknya Sensus memiliki dua kode dua digit yang berbeda untuk negara. Keduanya adalah angka yang diberikan berdasarkan urutan abjad negara bagian, tetapi yang satu tampaknya menerapkan angka langsung dari 1-51 (50 negara + DC), sementara yang lain melewatkan beberapa angka . Saya menggunakan yang pertama, sementara saya seharusnya menggunakan yang kedua, jadi nama negara yang saya cantumkan salah. Saya telah memperbarui kode dan hasilnya dengan daftar yang benar.

Edit : pemetaan negara baru yang dikonfirmasi oleh OpenCongress API: https://gist.github.com/gabrielgrant/89f883d093e2abf129ad


2
Terima kasih banyak untuk menangkap @JesseCrocker ini - Sepertinya Sensus (membingungkan) memiliki dua kode dua digit yang berbeda untuk negara bagian. Keduanya adalah angka yang diberikan berdasarkan urutan abjad negara bagian, tetapi yang satu tampaknya menerapkan angka langsung dari 1-51 (50 negara + DC), sementara yang lain melewatkan beberapa angka . Saya menggunakan yang pertama, tetapi saya seharusnya menggunakan yang kedua, jadi nama negara yang saya cantumkan salah (meskipun ZCTA bagus). Saya telah memperbaiki kode dan hasilnya dengan daftar yang benar.
Gabriel Grant

2
Mengenai kesenjangan dalam kode FIPS, angka-angka yang dilewati dicadangkan pada 1970-an untuk wilayah-wilayah terpencil (Samoa Amerika, Zona Kanal, Guam, Puerto Riko, dan Kepulauan Virgin), tetapi kemudian tidak digunakan untuk mereka. en.wikipedia.org/wiki/…
neuhausr

3
Jangan lupa kode pos 57717 yang mencakup tiga negara bagian enam, kabupaten, dan beberapa kota: 57717 Aurora, SD 57717 Butte, SD 57717 Carter, MT 57717 Crook, WY 57717 Harding, SD 57717 Lawrence, SD
Jeffrey

1
Daftar ini tidak hampir selesai. Lihatlah jawaban saya untuk perkiraan yang jauh lebih baik. gis.stackexchange.com/a/223445/6052
Evan Carroll

@ Jeffrey menarik, saya bertanya-tanya mengapa itu tidak tercantum dalam daftar tempat ZCTA?
Gabriel Grant

11

Sebenarnya tidak ada cara untuk mengatakan ini; karena tidak ada bentuk batas ZipCode yang ditentukan oleh USPS. Kode Pos ditentukan oleh kotak Streets yang dikirimkan oleh operator dari pusat distribusi tertentu.

Jadi, Anda perlu mengambil data USPS AIS dan mengekstrak dengan ZipCodes jalan-jalan yang dikirimkan oleh Kantor Pos yang diberikan, lalu Gabung dengan ini grid jalan. Inilah yang dilakukan oleh semua vendor komersial (Nokia / TomTom) untuk membuat bentuk Psuedo yang mereka gunakan untuk menunjukkan batas-batas pos.

Proses tidak tepat ini adalah alasan mengapa USPS tidak menyediakan data spasial.


2
Apakah ada yang akurat? Apa itu kebenaran? Banyak lapisan batas zip telah dibuat, yang mungkin atau mungkin tidak memenuhi tujuan analisis khusus ini mengingat persyaratan yang tidak diketahui. Batas zip gratis Esri - arcgis.com/home/item.html?id=8d2012a2016e484dafaac0451f9aea24 Lihat juga gis.stackexchange.com/questions/2682/…
awesomo

2
Diberikan, tetapi Anda juga perlu memahami apa pun yang Anda lakukan implikasi dari data yang Anda gunakan.
DEWright

7

Biro Sensus AS memperoleh perkiraan batas untuk kode ZIP berdasarkan alamat yang terkandung di dalamnya, yang disebut Area Tabulasi Kode ZIP (ZCTAs).

Mereka menerbitkan file hubungan yang menggambarkan bagaimana ZCTA mereka memetakan ke berbagai geografi lainnya. Jika Anda memeriksa file hubungan ZCTA ke Place Anda dapat melihat bagaimana mereka memetakan ke kota-kota. Anda dapat menyimpulkan bagaimana mereka memetakan ke negara bagian dari ZCTA ke Counties file hubungan .

File hubungan menggunakan ID geografi Sensus, jadi Anda ingin mengambil file gazetteer untuk membantu Anda mengonversi angka ID menjadi tempat atau nama county yang Anda harapkan.

Seperti jawaban lain yang telah dinyatakan, pemetaan kode ZIP apa pun ke tempat-tempat cenderung merupakan perkiraan, tetapi saya sudah beruntung dengan file data Sensus.


4

Data TIGER 2016 dengan PostGIS

Sebagai peringatan khusus, data ZCTA bukan USPS Zip Codes. Ini hanya perkiraan saja. Kode Pos USPS benar-benar mengerikan dan tidak berguna kecuali untuk perkiraan. Semua orang, termasuk setiap entitas pemerintah selain USPS, dan (Sensus untuk membuat ZCTA) mengabaikan mereka sepenuhnya. Jika USPS ingin sedikit tumbuh, mereka hanya akan mengonversi ke ZCTA terbaru dan memberikan poligon GIS yang resmi.

Lalu ... Di sini kami meminta persimpangan antara data TIGER State dan TIGER ZCTA. Catatan, kami memenuhi syarat negara bagian dengan 1% dari total area ZCTA. Jika 1% dari area ZCTA tidak ada di negara bagian, kami menganggap itu adalah kesalahan pembulatan, atau seseorang yang gemuk memainkan sesuatu di Sensus. Lihat 56168atau bahkan 83832untuk kode pos yang kami pangkas dengan selektivitas yang ditambahkan ini.

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;

Inilah resulsetnya

 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)

Anda harus dapat memeriksa semuanya di Google Maps. Namun, Google Maps juga tidak resmi.


1

State Overlaps disebutkan dalam Dokumen Sensus 1994

Pada Juni 1994, menurut situs Biro Sensus AS berikut ada 153 kode pos yang melintasi batas negara.

Seperti yang disebutkan sebelumnya, ada beberapa Kode ZIP yang memberikan melintasi garis negara, dan ada beberapa ZIP / sektor yang melintasi garis county. Ada 153 Kode Pos di lebih dari satu negara.Ada 9.000 Kode Pos di lebih dari satu daerah. Ada 11.331 (dari total 857.400) ZIP / sektor yang dibagi berdasarkan wilayah. Semua negara bagian memiliki beberapa sektor yang terpisah, dengan Virginia, Michigan dan Ohio memiliki dosis yang lebih besar. Sektor rute pedesaan, seperti yang diharapkan, berisi (relatif) bagian terbesar dari sektor terbagi. Sebagian besar kasus lainnya berada di kisaran sektor yang lebih rendah (dicadangkan untuk kotak pos) dan di Sektor 99 (dicadangkan untuk pengembalian kepala kantor pos dan surat bisnis). Harus ada beberapa penugasan kode county non-standar yang terjadi untuk kasus-kasus yang dipilih ini. Kami harus menyelidiki lebih lanjut hal ini di kemudian hari.


0

Dengan ArcGIS Anda dapat menggunakan alat join spasial (atau dalam skrip) untuk menemukan poligon kode pos yang bersilangan dengan lebih dari satu poligon status. Di kelas fitur output, akan ada bidang Join_Count yang akan menunjukkan beberapa status. Anda dapat melakukan hal serupa dengan ritsleting dan kota. Kemungkinan akan ada positif palsu di mana ritsleting secara tidak sengaja tumpang tindih lebih dari satu karena ketidakakuratan / kekurangan atau resolusi perbatasan. Anda mungkin bisa melakukan buffer negatif -100m dari ritsleting sebelum penggabungan spasial dan melihat apa yang dilakukannya.

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/
"Dua bidang baru, Join_Count dan TARGET_FID, selalu ditambahkan ke kelas fitur output. Join_Count menunjukkan jumlah bergabung fitur cocok dengan setiap fitur target (TARGET_FID). Bidang baru lainnya, JOIN_FID, ditambahkan ke output ketika JOIN_ONE_TO_MANY ditentukan dalam parameter Bergabung Operasi. "


0

Anda dapat melakukan perpotongan spasial di PostGIS dan mendapatkan kembali daftar setiap negara bagian atau kota dan kode pos yang mereka potong, yang akan mengembalikan banyak kode pos tempat banyak negara berpotongan, dan untuk setiap kota yang memotong zip yang sama, Anda akan melihat hasil itu juga.



-2

Di Pennsylvania batas kantor pos tidak sejajar dengan batas kota. Beberapa kota mungkin memiliki beberapa Kantor Pos yang mengantarkannya. Ketika kami melakukan 911 menangani, beberapa kota meminta PO untuk mengubah nae mereka ke nama kotapraja, PO memungkinkan mereka untuk melakukan ini dengan syarat mereka terus menggunakan kode pos Kantor Pos lama. Banyak yang melakukan ini. Anda dapat melihat dari tautan ini kode pos yang sama digunakan untuk beberapa kota. https://suburbanstats.org/zip-codes/pennsylvania/thornhurst https://suburbanstats.org/zip-codes/pennsylvania/scott-twp Pada dasarnya menggunakan "Anytown" dengan kode pos yang tepat akan berfungsi karena komputer sorting mereka membaca kode pos terlebih dahulu.

Anda juga dapat mengalami PO yang hanya memiliki kotak PO dan tidak melakukan pengiriman lokal sehingga tidak ada poligon untuk peta Anda. PO ini biasanya kecil.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.