SQL Server-从经度和纬度到几何体数据类型
可能重复:SQL Server-从经度和纬度到几何体数据类型,sql,sql-server-2008,sqlgeography,Sql,Sql Server 2008,Sqlgeography,可能重复: 我正在开发一个使用SQLServer2008数据库的应用程序。在这个数据库中,我有一个名为Session的表,它有两个字段Longitude和latitude,用于指示用户的位置。在另一个名为Zone的表中,我有一个类型为geometry的area属性。如何检查用户的经纬度坐标是否属于某个几何体 谢谢您有一个几何体,它以欧几里德几何体的形式存储形状,您希望将地球上的一个点(由纬度和经度表示)与之关联,以查看它是否在内部。由于SQL存储数据的方式,这将不起作用。您可能需要使用地理数据
我正在开发一个使用SQLServer2008数据库的应用程序。在这个数据库中,我有一个名为Session的表,它有两个字段Longitude和latitude,用于指示用户的位置。在另一个名为Zone的表中,我有一个类型为geometry的area属性。如何检查用户的经纬度坐标是否属于某个几何体
谢谢您有一个几何体,它以欧几里德几何体的形式存储形状,您希望将地球上的一个点(由纬度和经度表示)与之关联,以查看它是否在内部。由于SQL存储数据的方式,这将不起作用。您可能需要使用地理数据类型来检查这一点-纬度和经度是球体上的点(实际上是大地测量数据,因为地球不是一个球体) 有关它们为何不同的更多信息,请参阅。此外,关于stackoverflow的回答如下: 要将数据从几何图形转换为地理图形,请尝试: 地理::STGeomFromText(cast(GeomCol作为varchar(max)),4326)
然后,您可以使用microsoft提供的
STIntersects
方法。您有一个几何体,它将形状存储在欧几里德几何体中,您需要将地球上的一个点(由纬度和经度表示)与之关联,以查看它是否在内部。由于SQL存储数据的方式,这将不起作用。您可能需要使用地理数据类型来检查这一点-纬度和经度是球体上的点(实际上是大地测量数据,因为地球不是一个球体)
有关它们为何不同的更多信息,请参阅。此外,关于stackoverflow的回答如下:
要将数据从几何图形转换为地理图形,请尝试:
地理::STGeomFromText(cast(GeomCol作为varchar(max)),4326)
然后,您可以使用microsoft提供的
STIntersects
方法。请参阅[此SO问题][1]的答案。[1] :答案将地理和几何学混为一谈-答案的注释稍微修正了答案,但没有真正解释SQL使用不同的不一致数据类型的原因。请参阅[此问题][1]的答案。[1] :答案将地理和几何混为一谈-答案的注释稍微修正了答案,但没有真正解释SQL使用不同的不一致数据类型的原因。非常感谢David提供的快速答案和附加信息。非常感谢David提供的快速答案和附加信息。