Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server-从经度和纬度到几何体数据类型_Sql_Sql Server 2008_Sqlgeography - Fatal编程技术网

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提供的快速答案和附加信息。