【问题标题】:Best Practice to detect whether a point is inside a 2D polygon (vertices of polygon are on a table )检测点是否在 2D 多边形内的最佳实践(多边形的顶点在桌子上)
【发布时间】:2016-11-02 18:16:13
【问题描述】:

我在数据库中有一个表,我在其中保存多边形的顶点,其结构如下:IdPolygon (int) , Latitude (real) , Longitude (real) 。

为了检查一个点是否在一个注册的多边形内,我正在寻找一个纬度和经度范围的“IdPolygon”,然后我循环这个多边形列表以查看该点是否在任何一个内他们。

让我检查一个点是否在银行中注册的任何多边形内的最佳实践是什么,具有更好的性能?

【问题讨论】:

  • 您可能想研究搜索算法并找到适合您需求的算法。
  • 其实顶点列表的信息并不充分。您需要知道它们以什么顺序相互连接。否则,例如,您无法将正五边形与五角星区分开(可以从同一组顶点构造任何一个)。如果你有一个顶点序列,你可以使用缠绕数算法来确定一个点是否在多边形内。
  • 谢谢@JuanTomas。顶点在您的提示之后排序。

标签: c# sql-server-2008 spatial


【解决方案1】:

我建议您使用 sql server 支持的空间类型存储空间数据,例如几何,地理空间。它确实支持索引和空间查询。更多信息请访问https://msdn.microsoft.com/en-us/library/bb933991.aspx

【讨论】:

  • 谢谢。我将更改数据类型和初始策略。
猜你喜欢
  • 1970-01-01
  • 2014-04-26
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
  • 1970-01-01
  • 2010-10-03
相关资源
最近更新 更多