【问题标题】:SQL Server - From longitude and latitude to geometry data type [duplicate]SQL Server - 从经度和纬度到几何数据类型[重复]
【发布时间】:2012-06-28 13:23:14
【问题描述】:

可能重复:
SQL Server 2008 Spatial: find a point in polygon

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

谢谢

【问题讨论】:

  • 查看 [this SO question][1] 的答案。 [1]:stackoverflow.com/questions/11054149/…
  • 答案混淆了地理和几何 - 答案的注释稍微修正了答案,但并没有真正解释为什么 SQL 使用不相称的不同数据类型。

标签: sql sql-server-2008 sqlgeography


【解决方案1】:

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

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

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

然后您可以使用STIntersects 方法,由 microsoft here 记录。

【讨论】:

  • 非常感谢 David 的快速回答和其他信息。
猜你喜欢
  • 1970-01-01
  • 2014-12-03
  • 2019-02-24
  • 2013-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-29
相关资源
最近更新 更多