我正在尝试编写一个 SQL 查询来确定给定点是否在多边形中。(我使用的是 SQL Server 2008 R2)。
我正在关注本教程(只需复制/粘贴它并更改一些表名),它几乎可以工作,但它根本不精确。例如,让我们考虑一个坐标为 : 的给定点。
如果你用 4 个顶点坐标在这个点周围画一个小多边形(一个近似的正方形):
P = 45.7664, 4.87383
S = 45.97215 4.693909, 45.687 4.674683, 45.73302 5.460205, 46.05227 5.366821, 45.97215 4.693909
下面链接中给出的过程回答了该点不在多边形中,而它是...这是输出(带有我自己的格式文本):(
多边形 20 是上面的多边形)
但是,如果您将正方形放大(在我的测试中放大了 10 倍),则程序回答我的观点在正方形中。
所以,我正在寻找另一种更精确的算法。
这是我的 VERTICE 表,包含我的数据库的每个多边形的所有顶点坐标
我需要检查所有多边形(有几千个),如果传入参数的给定点在多边形中(如果是,是哪个)。我可以自己做循环,但我错过了多边形算法中的正确点。
有人可以帮助我吗?非常感谢。
概括
对应的 SQL 小提琴:http ://sqlfiddle.com/#!3/0caa4/1