【发布时间】:2012-06-02 05:13:06
【问题描述】:
如何找到一个点是否存在于给定的一组多边形中? 我有像
这样的坐标polygonA = 1(0,0),2(0,5),3(3,4),4(3,5),5( 2,2)
polygonB = 1(10,10),2(10,15),3(13,14),4(13,15),5(12,12)
我有一个点,因为 (6,4) 现在想搜索这个点是否在这个多边形中的任何一个中,或者两者都在,或者离哪个多边形最近。
如何存储这些数据(多边形)?有系统/数据库/算法来做这个搜索吗?
更新:感谢大家这么快的反应...我想我需要更具体...
如何搜索 = 是的...得到了 algorithms 和 library 的列表。
如何存储 = 基于我的研究 SQL 和 NoSQL db 有它们的解决方案。 NoSQL = MongoDb 似乎最接近我所需要的。但问题是我可以像 "db.places.find({ "loc" : { "$within" : { "$polygon" : polygonB } } })" 那样查询但不能像 db.places.find({ " loc" : { "$within" : { } } }) SQL 检查了 postgre 和 openGIS 以获得一些帮助。但是 colud 不知道它是否可能。
如果有人可以帮助我...在此先感谢。
【问题讨论】:
-
你的多边形是凸的、凹的、自相交的吗?
-
另见answer。
-
@nhahtdh,有什么关系?
-
@Beta - 某些算法效率低下或不适用于某些类型的多边形。这就是为什么它很重要。但是,有些算法涵盖了所有情况(如果我没记错的话),但不如特殊情况算法快。
标签: java postgresql mongodb geometry opengis