我正在使用一个使用SQL Server 2008数据库的应用程序。在这个数据库中,我有一个名为Session的表,它有两个字段Longitude和latitude,用于指示用户的位置。在另一个名为Zone的表上,我有一个几何类型的area属性。如何检查用户的经度和纬度坐标是否属于某个几何?
谢谢
答案 0 :(得分:3)
您有一个几何图形,它以欧几里德几何图形存储一个形状,并且您希望将一个由纬度和经度表示的地球上的点与它相关联,以查看它是否在内部。由于SQL存储数据的方式,这将不起作用。您可能需要使用地理数据类型来检查 - 纬度和经度是球体上的点(实际上是大地测量数据,因为地球不是一个球体。)
有关它们不同的详细信息,请参阅this explanation from microsoft。还有关于stackoverflow的答案:GEOMETRY and GEOGRAPHY difference SQL Server 2008
要将数据从几何转换为地理位置,请尝试: Geography :: STGeomFromText(cast(GeomCol as varchar(max)),4326)
然后,您可以使用由here记录的STIntersects
方法。