百分求教:如何从数据库中检索出经纬度在一个多边形区域内的数据?

arnange 2006-08-14 10:22:46
问题如下:

数据库中记录了发生在某一地点的事件(记录该地点的经纬度和事件信息),现需求为用户任意指定三到六个点,从数据库中检索出所有发生在该多边形区域内的事件。

本人原来没有做过相关算法,且任意指定的三到六个点能够确定的区域基本上是一个不规则多边形(三角形、四边形相对还好,五边形和六边形又有凹凸之分),特向各位高手请教,多谢!

另:数据库为sybase12.0,数据库表中经度是一个字段,纬度是一个字段。
...全文
410 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
arnange 2006-08-24
  • 打赏
  • 举报
回复
暂时先这样吧,结贴散分,感谢mmmcd(超超)、mathe() () 、zzwu(未名) 三位的回复。
arnange 2006-08-22
  • 打赏
  • 举报
回复
晕,理论上好像是那么回事,还是不知道如何实现
zzwu 2006-08-21
  • 打赏
  • 举报
回复
也就是搜索出与已知地点的经度和纬度的差同时都在要求范围以内的点的事件。
arnange 2006-08-21
  • 打赏
  • 举报
回复
感谢zzwu(未名) ( 三星(高级)) 信誉:109

寻找球面梯形内的所有事件的话如何实现呢?
zzwu 2006-08-17
  • 打赏
  • 举报
回复
问一个为什么:
为什么要寻找球面多边形内部的事件?
而不去寻找球面梯形内的所有事件?
后者要方便的多,也合理得多.
arnange 2006-08-17
  • 打赏
  • 举报
回复
首先感谢mathe() ( 两星(中级)) 信誉:120的答复

"当然我们可以采取一些改善方法.比如先找出多变形所有顶点纬度经度的上下界.
然后可以将数据库中纬度和经度都在上下界范围内的点检索出来,然后再依次判断这些点是否在多边形里面"

这样做也能够把数据筛选出来,不过在数据量非常大的时候每一条都进行计算的话运算时间岂不是很长?

有没有更好的办法能够解决这个问题呢,期待大家的意见
arnange 2006-08-16
  • 打赏
  • 举报
回复
感谢mmmcd(超超)的回复,所述内容对判断一个点是否在该区域范围内是可以的,但如何从数据库中检索出该区域内的所有的点呢?

谢谢
mathe 2006-08-16
  • 打赏
  • 举报
回复
数据库肯定不会提供这样的函数.
一种比较笨的方法就是将所有的数据取出来,然后依次判断是否在多边形区域里面就可以了.

当然我们可以采取一些改善方法.比如先找出多变形所有顶点纬度经度的上下界.
然后可以将数据库中纬度和经度都在上下界范围内的点检索出来,然后再依次判断这些点是否在多边形里面.
mmmcd 2006-08-14
  • 打赏
  • 举报
回复
以某一地点(x,y)为顶点,向某个方向作射线(一般向(-1000,y)的方向)
判断射线跟多边形边的交点个数,如果有奇数个,点在内;偶数个,点在外。
这个结论不论多边形凹凸都成立
注意一些特殊情况(交点在多边形顶点上,射线跟多边形的边重合)

33,029

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧