确定哪个美国邮政编码映射到一个以上的州或一个以上的城市?


23

我使用的是邮政编码列表,但我很想知道有多少个(或哪个)邮政编码映射到一个以上的美国州或美国城市?

举例来说,我知道邮递区号42223解析为横跨KY-TN州际线的美国陆军坎贝尔堡。奇怪的是,Google API仅TN针对与该邮政编码相对应的状态返回。


您如何定义“城市”和“邮政编码”?
埃文·卡罗尔

Answers:


22

有13个多州美国人口普查的邮政编码制表区(ZCTA):02861、42223、59221、63773、71749、73949、81137、84536、86044、86515、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

这是我生成它的方式(使用Python中的Pandas):

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)中的数字,而另一个则跳过了一些数字。我使用的是第一个,但是我应该使用的是第二个,所以我列出的州名是错误的(尽管ZCTA很好)。我已经用正确的清单修复了代码和结果。
加百利·格兰特

2
关于FIPS代码中的空白,被跳过的数字在1970年代是为边远地区(美属萨摩亚,运河区,关岛,波多黎各和维尔京群岛)保留的,但后来并没有被使用。en.wikipedia.org/wiki/…–
neuhausr

3
不要忘了邮政编码71757,它横跨六个州,县和多个城市的三个州:57717奥罗拉(Aurora),SD 57717小山(Butte),SD 57717卡特(Carter),MT 57717 Crook,WY 57717 Harding,SD 57717 SD,劳伦斯(SD)
Jeffrey

1
此列表尚不完整。看看我的回答对更好的近似。gis.stackexchange.com/a/223445/6052-
埃文·卡罗尔

@Jeffrey有趣,我想知道为什么未在ZCTA地点列表中列出?
加百利·格兰特

11

真的没有办法告诉这个。因为没有USPS定义 ZipCode边界形状。邮递区号由运营商从特定配送中心交付给街道的边界框定义。

因此,您将需要获取USPS AIS数据并通过ZipCodes提取给定邮局提供的街道,然后将它们加入街道网格。这就是所有商业供应商(诺基亚/ TomTom)所做的,以创建他们用来显示邮政边界的伪形状。

这种不精确的过程是USPS不提供空间数据的原因。


2
准确吗?什么是真相?已经创建了许多拉链边界层,鉴于其未知的要求,这可能会或可能不会满足此特定分析的目的。ESRI免费拉链边界- arcgis.com/home/item.html?id=8d2012a2016e484dafaac0451f9aea24参见gis.stackexchange.com/questions/2682/...
awesomo

2
给定了,但是您还需要了解所做的任何事情,这些都会影响所使用的数据。
DEWright 2013年

7

美国人口普查局根据其中包含的地址(称为邮政编码列表区域(ZCTA))得出邮政编码的近似边界。

他们发布关系文件,描述他们的ZCTA如何映射到其他各个地区。如果查看“ ZCTA到地方”关系文件,则可以看到它们如何映射到城镇。您可以从ZCTA到县关系文件推断它们如何映射到州。

关系文件使用人口普查的地理ID,因此您需要获取一个地名索引文件,以帮助您将数字ID转换为所需的地名或县名。

正如其他答案所指出的那样,邮政编码到地点的任何映射都可能是近似的,但是我对人口普查数据文件有好运。


4

使用PostGIS的2016 TIGER数据

需要特别注意的是,ZCTA数据不是USPS邮政编码。这是一个近似值。美国邮政(USPS)邮递区号真的很恐怖,除了近似值外没有用。每个人,包括除USPS以外的每个政府实体,以及(制定ZCTA的人口普查)都完全忽略了它们。如果USPS想要长大一点,他们将转换为最新的ZCTA并提供权威的GIS多边形。

然后...在这里,我们查询TIGER State和TIGER ZCTA数据集之间的交集。请注意,我们通过ZCTA总面积的1%来确定州。如果ZCTA区域的1%不在状态中,则我们认为这是四舍五入错误,或者有人在人口普查中发指。签出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 Maps中进行所有检查。但是,谷歌地图也不是权威。


1

1994年人口普查文件中提到的州重叠

1994年6月,根据以下美国人口普查局的网站,共有153个邮政编码跨州边界。

如前所述,有一些邮政编码跨州界传递,并且有一些邮政编码/部门跨越县界。有153个邮政编码处于一种以上的状态。一个以上的县有9000个邮政编码。按县划分的ZIP /行业共有11,331个(总数857,400个)。所有州都有一些部门划分,弗吉尼亚州,密歇根州和俄亥俄州的剂量特别大。如预期的那样,农村公路部门占(相对)大部分部门的份额。其他大多数情况属于较低的部门范围(保留用于邮政信箱)和处于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/zh-CN/arcgisdesktop/10.0/help/index.html#/Spatial_Join/00080000000q000000/
“两个新字段Join_Count和TARGET_FID始终添加到输出要素类。Join_Count指示有多少个联接功能与每个目标功能(TARGET_FID)匹配。当在Join Operation参数中指定JOIN_ONE_TO_MANY时,另一个新字段JOIN_FID将添加到输出中。”



-2

在宾夕法尼亚州,邮局界限与市政界限不符。一些乡镇可能有几个邮局派递给他们。当我们使用911寻址时,一些乡镇要求邮政局将其名称更改为乡镇名称,邮政局允许他们在继续使用旧邮局邮政编码的情况下执行此操作。许多这样做。您可以从这些链接中看到几个镇使用了相同的邮政编码。https://suburbanstats.org/zip-codes/pennsylvania/thornhurst https://suburbanstats.org/zip-codes/pennsylvania/scott-twp基本上可以使用带有正确邮政编码的“ Anytown”,因为他们的分类计算机读取邮政编码。

您可能还会遇到仅具有PO框且不进行本地传递的PO,因此地图上没有多边形。这些PO通常很小。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.