0

可能重复:
SQL Server 2008 空间:在多边形中找到一个点

我正在开发一个使用 SQL Server 2008 数据库的应用程序。在这个数据库中,我有一个名为 Session 的表,它有两个字段 Longitude 和 latitude,它们指示用户的位置。在另一个名为 Zone 的表上,我有一个几何类型的 area 属性。如何检查用户的经纬度坐标是否属于某个几何?

谢谢

4

1 回答 1

3

你有一个几何,它在欧几里得几何中存储了一个形状,你想把地球上的一个点与它关联起来,用纬度和经度表示,看看它是否在里面。由于 SQL 存储数据的方式,这不起作用。您可能需要使用地理数据类型来检查这一点 - 纬度和经度是球体上的点(实际上是大地测量数据,因为地球不是一个球体。)

有关它们为何不同的更多信息,请参阅microsoft 的此说明。还有这个关于stackoverflow的答案:GEOMETRY and GEOGRAPHY difference SQL Server 2008

要将数据从几何转换为地理,请尝试: Geography::STGeomFromText(cast(GeomCol as varchar(max)), 4326)

然后你可以使用STIntersects微软在此处记录的方法。

于 2012-06-28T13:33:26.023 回答