我有大量的(并且正在增长的)地理空间数据(lat,lon)点(存储在mongodb中,如果有帮助的话)。 我想生成一个等值区域图(http://vis.stanford.edu/protovis/ex/choropleth.html),它需要知道包含该点的状态。有没有一个数据库或算法可以做到这一点,而无需调用外部API(即我知道像geopy和谷歌地图API这样的东西)。
答案 0 :(得分:3)
实际上,您链接的网络应用包含您需要的数据 -
如果您查看每个州的http://vis.stanford.edu/protovis/ex/us_lowres.js,则border []包含一条描述状态的[lat,long]折线。加载此数据并检查多边形点 - http://en.wikipedia.org/wiki/Point_in_polygon
每Reverse Geocoding Without Web Access你可以通过预先计算每个状态的边界框来加快速度,并且只测试点边框中的多边形点。
答案 1 :(得分:1)
Here如何在FORTRAN中执行此操作。还记得FORTRAN吗?我也不。无论如何,它看起来很简单,因为每个州都有自己的范围。
编辑有人指出,你的起点是LAT-LONG,而不是邮政编码。
将纬度转换为政治分割的算法称为“地图”。说真的,这是allan普通地图,是某个范围内每个点到它所属的分区的映射。所有48个连续状态的详细数字地图将是一个大数据库,然后您需要一些(相当简单的)代码来确定每个状态(描述为概述边界的一系列线段)是否给定点在其中或者出去。
答案 2 :(得分:1)
您可以尝试使用Geonames数据库。它有长/纬,以及城市,邮政和其他位置类型的数据。它也是免费的。
但是如果你需要在本地托管它或将其导入你自己的数据库,USGS和NGA提供了一个包含lat / lon的城市的综合列表。它是定期更新,免费且可靠的。
答案 3 :(得分:0)
不确定数据的质量,但请注意:http://www.boutell.com/zipcodes/
答案 4 :(得分:0)
如果您不介意非常原始解决方案,则可以调整点击地图here。