.NET 中多边形上的点(经度/纬度)
可能的重复:
多边形中的点又名命中测试
我需要一些帮助来解决我的问题;): 我有一个由 3 个或更多经度/纬度点定义的多边形。 现在我有了另一个经度/纬度点,我需要检查该点是否在多边形区域中。
我需要.NET 中的这个函数。有人可以帮助我吗?
非常感谢您的帮助。
Possible Duplicate:
Point in Polygon aka hit test
I need some help for my problem ;):
I've got a polygon definied with 3 or more longitude/latitude points.
Now I've got another longitude/latitude point and I need to check if this point is in the polygon area or not.
I need this function in .NET. Can anyone help me?
Thank you very much for your help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是一个答案: http://alienryderflex.com/polygon/
您还可以使用 Microsoft 的 Geometry 类。创建两个几何图形(一个点,一个多边形),然后对它们进行交集。如果有交集
http://msdn .microsoft.com/en-us/library/system.windows.media.combinedgeometry.geometrycombinemode.aspx
如果这些方法花费的时间太长,您可以首先将多边形包裹在边界框中,然后测试该点是否在范围内框的最小/最大纬度/经度
注意:如果您的多边形跨越国际日期变更线,您可能需要在这些测试之前添加额外的代码(即,向多边形顶点的经度添加 360 度,并在经度为负数时进行指向)算法起作用)。
Here is one answer: http://alienryderflex.com/polygon/
You could also use Microsoft's Geometry classes. Create two geometries (one point, one polygon), then do an Intersection of them. If there is an intersection
http://msdn.microsoft.com/en-us/library/system.windows.media.combinedgeometry.geometrycombinemode.aspx
If these methods take too long, you could first wrap the polygon in a bounding box and test if the point is within the min/max lat/long of the box
Note: If your polygon crosses international dateline you may need to add additional code up front before these tests (i.e. add 360 degrees to longitude of polygon's vertices and to point if the longitude is negative so the algorithms work).