必应地图API - SQL - 几何类型与地理类型的区别

9
我正在使用Bing Maps AJAX API和SQL Server 2008开发一项地图服务。我遇到的问题是应该使用地理数据类型还是几何数据类型。我做了很多研究,但没有找到令人满意的答案。以下是一些关于此主题的链接:

如果我比较这两种类型,我看到以下几点。

地理优势

  • 全球范围内距离计算一致(时间轴!)
  • 数据库的坐标系与使用Bing Maps API添加数据到地图时使用的坐标系相同(WGS84)
  • 精确

反地理学

  • 高计算成本
  • 数据大小限制为一个半球
  • 缺少功能(STConvexHull(),STRelate()...)

几何优势

  • 计算速度更快
  • 数据大小不受约束

反地理学

  • 如果我们使用WGS84坐标,则距离单位为度

对我来说问题在于我不需要一个快速的框架,一个广泛的覆盖范围(整个世界)和高功能性。因此,我更喜欢几何类型。 使用几何类型的问题在于,我必须将我的数据转换为平面投影(Bing Map使用SRID = 3875),以便我得到米数进行计算。但是当我在数据库中使用Bing Maps投影(3875)时,如果我想在地图中显示它,则必须将我的数据转换回WGS84。

1个回答

4
您提供了两种类型之间的差异的相当好的总结,并且正确地确定了两个明智的选择,要么是地理(4326),要么是几何(3857),所以我不太确定还有什么更多信息可以提供 - 您只需要根据可用的信息自行做出决策。
我会说,尽管几何数据类型可能略快于地理数据类型(因为它依赖于简单的平面计算,并且可以从问题区域的紧密边界框中受益),但这种性能提高将被您必须重新投影回WGS84纬度/经度以便传回Bing Maps所抵消 - 重新投影是一个昂贵的过程。
当然,您可以使用几何数据类型存储WGS84角度坐标,但这真的是一种hack,不建议使用 - 您几乎肯定会在以后遇到困难。
因此,我建议使用地理数据类型和WGS84。通过仔细调整索引,即使针对大型数据集的大多数查询,您仍应该能够获得亚秒级响应时间。顺便说一下,在SQL Denali中,地理数据类型的“在半球内”的规则被取消了,因此,如果您进行升级,则限制消失。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接