可能的重复:
SQL Server 2008 Spatial:在多边形中找到一个点 https://stackoverflow.com/questions/11054149/sql-server-2008-spatial-find-a-point-in-polygon
我正在开发一个使用 SQL Server 2008 数据库的应用程序。在这个数据库中,我有一个名为 Session 的表,其中有两个字段“经度”和“纬度”,这两个字段指示用户的位置。在另一个名为“区域”的表上,我有一个几何类型的区域属性。如何检查用户的经度和纬度坐标是否属于某个几何图形?
谢谢
您有一个几何体,它存储欧几里得几何中的形状,并且您希望将地球上的一个点(由纬度和经度表示)与其关联,以查看它是否在内部。由于 SQL 存储数据的方式,这是行不通的。您可能需要使用地理数据类型来检查这一点 - 纬度和经度是球体上的点(实际上是大地测量数据,因为地球不完全是一个球体。)
有关它们为何不同的更多信息,请参阅微软的这个解释 http://msdn.microsoft.com/en-us/library/bb964711.aspx。 stackoverflow 上还有这个答案:SQL Server 2008中GEOMETRY和GEOGRAPHY的区别 https://stackoverflow.com/questions/4991827/geometry-and-geography-difference-sql-server-2008
要将数据从几何转换为地理,请尝试:
地理::STGeomFromText(cast(GeomCol as varchar(max)), 4326)
然后您可以使用STIntersects
方法,由微软记录here http://msdn.microsoft.com/en-us/library/bb933962.aspx.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)