我想建立一个地理位置数据库,并希望能够识别位于其他位置的位置。例如,帝国大厦将有一个地理坐标,但我的数据库可以告诉我它落在曼哈顿,它位于纽约州的纽约市内等等。
我一直在看OpenStreetMap这似乎有一个相当不错的数据库但是我可以说,我需要创建一组代表每个区域的多边形结构,然后检测一个坐标是否在内部给定区域的多边形。有更好的方法可以做到这一点,还是有数据源已经计算了所有这些?
答案 0 :(得分:3)
试试Yahoo! http://developer.yahoo.com/geo/geoplanet/data/
的GeoPlanet数据它已经组织成一个层次结构,国家,管理部门和地方。
您还可以使用http://developer.yahoo.com/yql/console/上的YQL API的“地理”方法扩展数据
答案 1 :(得分:1)
您也可以查看Geonames数据库。虽然它没有使用分层方法进行分类,但您可以从中获取信息。
如果您真的想深入构建可以分析数据的地理数据库,请查看将数据加载到免费/开源PostgreSQL/PostGIS堆栈中。有了它,您实际上可以编写回答问题的SQL,例如"向我显示所有点[在一个城市/县/州边界]"或" [距Y位置X距离]"。
了解有关PostGIS的更多信息的好地方是BostonGIS网站,GIS.StackExchange页面,当然还有手册,但是他们已经阅读了这些内容......
答案 2 :(得分:0)
我非常确定 Google地图API的区域定义为多边形。我指的是地区,州,城市,邮政编码,或任何可以定义为“地区”的东西
你必须进行点击测试(谷歌地图可能已经有了这个功能)一个点,看它是否在多边形内。
你也可以使用GeoLocation函数的查找地址来查找一个点所在的区域,然后使用它。