c# - 经度 - 纬度方面的多边形点

标签 c# sql sql-server

我们正在研究一种 map 解决方案。 在这里,用户在 map 上绘制了一个多边形,对于给定的点,我们需要确定该点是在多边形内还是在多边形外。

我们根据 http://www.sql-statements.com/point-in-polygon.html 使用一种 SQL 技术直到现在才完成这项任务,但在这段时间里我们发现它在某些领域不起作用。

有人对此有正确的解决方案吗?如果它工作正常,我们也可以在 C# 中尝试解决方案

谢谢。

最佳答案

如果您使用的是 SQL Server 2008,那么您可以使用 STIntersection (geography Data Type) - SQL Server 将为您完成一切。

在这种情况下,我建议使用 SQL Server 2008,因为它提供了对地理数据的 native 支持。在你使用它之前,“STIntersect giving incorrect result for geography Datatype”可能值得一读。该站点的示例:

declare @point geometry
declare @polygon geometry
set @point =  geometry::STGeomFromText('POINT (-88.22 41.50000001)', 4326)
set @polygon = geometry::STGeomFromText('POLYGON ((-88.2 41.5, -88.2 41.6, -88.3 41.6, -88.3 41.5, -88.2 41.5))', 4326)--124
Select @point.STIntersection(@polygon).ToString()

关于c# - 经度 - 纬度方面的多边形点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8500668/

相关文章:

c# - 初始化多个 List<Boolean> 与多个 List<String>

sql - Postgres 使用 `split_part` 索引

sql-server - SSRS 计算行组和列组的计数

c# - wpf TabControl,可以将每个选项卡组织在不同的类中吗?

c# - 开发 Windows Phone 8、SQL Server Express 或 SQL Server Compact 或 SQLite 时最好使用什么?

php - 在mysql中如何使用增量i=1,i++?

sql - 关系代数 - 恰好找到两个值

sql - 获取该月的 2 位数字

sql-server - 如何将前 5 行旋转/转置为列

c# - 使用旧解决方案将 nuget 包添加到 .net 核心项目时如何修复 $(NETStandardImplicitPackageVersion) 错误?