API将地理编码的纬度,经度反转为人口普查区?


11

我在美国有一堆纬度,经度坐标(主要是城市/城镇质心),因此我想查找包含其的普查区。

例如,

input => nn.nnn, -nn.nnn 
output => 010300

有免费或低成本的API可以帮助您吗?(本质上是Yahoo Placefinder,还有普查区域的其他响应。)

(我知道许多城市都包含多个人口普查区,我希望有些小镇仅包含一个或多个人口普查区的一部分。我现在很乐意忽略这个问题。)


您是否正在考虑某个地区或国家不可知的解决方案?
radek 2012年

Answers:


10

FCC人口普查块转换 API正是你要寻找的。


对。令人尴尬,因为我在项目的另一部分考虑了这一点,并且已经忘记了。谢谢。
Citizentools 2012年

请注意,在2018年,该链接显示“此API已被新的Area和Census Block API所取代,已更新以减少响应时间并支持其他与Area相关的数据元素。因此,该旧API正在停用。” 并链接到geo.fcc.gov/api/census。后人评论
arvi1000 '18

5

在PostGIS中,如果有一张点表,并且@Sminbamangu所引用的人口普查边界信息可以使用以下方法来计算:

SELECT 
       c.census_tract, 
       p.point_id
FROM
       census_boundary as c,
       table_of_points as p
WHERE
       ST_Contains(c.geom, p.geom);

您可以在此处查看说明ST_Contains 。这将返回一个点表以及它们所在的人口普查区。


在Spatialite中用10点和加利福尼亚数据进行了尝试,并在大约0.2秒内完成了操作……+1。
Simbamangu'3

尼斯-我必须探索Spatialite。我6个月前开始使用PostGIS并喜欢它,但这是非常繁重的工作。如果有更多独立的数据集可以在没有互联网的情况下移植,那将是很好的选择。
djq 2012年

2

您可以在本地而不是在线API上进行操作。R的一种解决方案:美国的人口普查边界数据可通过census.gov上的TIGER获得;如果您正在考虑美国,则可以下载美国各州并使用一个函数来获取摘要。例如,使用加利福尼亚和随机(或随机ish)点:

library(maps)
library(maptools)


tractLookup <- function(x, y, state) {
  pt <- SpatialPoints(data.frame(x = x, y = y))
  overlay.pt <- overlay(pt, state) # what index number does pt fall inside?
  return(census$TRACT[overlay.pt]) # give the Tract number from the census layer
}

试试看:

california <- readShapePoly("~/Downloads/US_2000_Census_Tracts/tr06_d00_shp/tr06_d00.shp")
tractLookup(-123.123, 40.789, california)

给出0004,这是正确的。

# Look at the map
plot(census)
map('state', c('California'), lwd = 2, col = 'green', add = F) # optional
points(-123.123, 40.789, col = 'red', lwd = 2)

这可以工作,但是在我的Mac上需要5秒钟,如果您打算做很多事情,这可能会太多。我怀疑有人不久就会考虑使用PostGIS解决方案,它将快一百万倍...


1

正如@Simbamangu所提到的,几乎可以通过市场上的任何台式GIS软件在本地完成此操作。

对于免费和开放源代码,请查看QGIS中的“ 按位置连接属性 ” 。

如果计划随着时间的推移重复执行此操作,可以考虑将数据集放入PostGIS并创建空间连接(请参见在线帮助中的此示例)。然后,您可以在QGIS中可视化结果。

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.