搜索任意多边形区域的坐标绑定数据数据库
Posted
技术标签:
【中文标题】搜索任意多边形区域的坐标绑定数据数据库【英文标题】:Searching a database of coordinate-bound data for an arbitrary polygonal area 【发布时间】:2009-03-08 19:27:34 【问题描述】:我有一个关系数据库,其中每个条目都标记为带有纬度/经度坐标的点。我让用户能够在地图上标记任意多边形,并希望返回多边形内的所有条目。
实现这一目标的最佳方法是什么?
此外,可能值得指出的是,小错误是可以的(即,如果有一种有效的方法可以将多边形变成一组矩形,那很好)。
【问题讨论】:
顺便说一句——为什么要使用社区 wiki?似乎是一个很好的技术问题,有明确的技术答案。 我看不出它有什么害处,我认为最坏的情况是它不会被触及。 【参考方案1】:使用空间扩展,大多数数据库都有这个。 在 mysql 中,您只能将它们与非事务性的 MyISAM 表一起使用。
http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html
【讨论】:
使用内置支持?!?那一定是骗人的! +1【参考方案2】:一种快速减少要考虑的点数的方法是计算多边形的边界矩形(即多边形中点的 min-x、min-y、max-x、max-y) ,然后选择边界矩形内的点(即 x 在 min-x 和 max-x 之间,y 相同)。
当然不是所有这些点都必须在多边形内,但现在你可以用代码来磨练它。
【讨论】:
【参考方案3】:老套路:
计算连接<point far away>
和<point in question>
的线穿过多边形任何边界段的次数。
【讨论】:
是的,但是如何在 SQL 查询中做到这一点? 也就是说:如果你被简化为这个,你可能不得不在你自己的代码中做。在那种情况下,Jason 的想法可以在 SQL 中实现,并允许您吸入缩减的数据集...以上是关于搜索任意多边形区域的坐标绑定数据数据库的主要内容,如果未能解决你的问题,请参考以下文章
D3js / AngularJS - 拖动和数据绑定rect的坐标
iNeuOS工业互联网操作系统,增加搜索应用多数据源绑定视图背景设置颜色多级别文件夹组合及拆分图元