我正在使用SQL Server 2008数据库的应用程序上工作。在此数据库中,我有一个名为Session的表,该表具有两个字段经度和纬度,用于指示用户的位置。在另一个名为Zone的表上,我有一个area属性,它是几何类型的。如何检查用户的经度和纬度坐标是否属于某个几何?
谢谢
您有一个将几何形状存储在欧几里得几何形状中的几何图形,并且想要将地球上由纬度和经度表示的点与之相关联,以查看其是否在内部。由于SQL存储数据的方式,这将无法正常工作。您可能需要使用“地理”数据类型进行检查- 纬度和经度是球体上的点(实际上是大地测量数据,因为地球不是一个球体。)
有关它们为何不同的更多信息,请参见microsoft的说明。也是关于stackoverflow的答案:GEOMETRY和GEOGRAPHY区别SQL Server 2008
要将数据从几何转换为地理,请尝试:Geography :: STGeomFromText(cast(GeomCol as varchar(max)),4326)
然后,您可以使用STIntersectsMicrosoft在此处记录的方法。
STIntersects