Bing Maps API - SQL - 几何与地理类型
Posted
技术标签:
【中文标题】Bing Maps API - SQL - 几何与地理类型【英文标题】:Bing Maps API - SQL - geometry vs geography type 【发布时间】:2011-07-15 14:16:03 【问题描述】:我正在使用 Bing Maps AJAX API 和 SQL Server 2008 开发一个映射服务。在我看来,我应该使用地理数据类型还是几何数据类型。我研究了很多,但没有找到满意的答案。以下是有关该主题的一些链接:
SQL 2008 geography & geometry - which to use? http://www.mssqltips.com/tip.asp?tip=1847 https://alastaira.wordpress.com/2011/01/23/the-google-maps-bing-maps-spherical-mercator-projection/如果我比较这两种类型,我会看到以下几点。
专业地理
全球范围内的一致距离计算(时间线!) 数据库的坐标系与使用 Bing 地图 API (WGS84) 向地图添加数据的坐标系相同 精确反地理
计算成本高 数据大小限制在一个半球 缺少函数(STConvexHull()、STRelate()、...)专业几何
计算速度更快 数据大小不受限制反地理
以度为单位的距离单位(如果我们使用 WGS84 坐标)对我来说,问题是我不需要一个快速的框架、一个很好的覆盖范围(整个世界)和强大的功能。所以我更喜欢几何类型。 几何类型的问题是,我必须将我的数据转换为平面投影(Bing Map 使用 SRID=3875),以便获得用于计算的米。但是当我在数据库中使用 Bing 地图投影 (3875) 时,如果我不想在地图中显示它,我必须将我的数据转换回 WGS84。
【问题讨论】:
【参考方案1】:您已经很好地总结了这两种类型之间的差异,并且您已经正确地确定了两个明智的选择是地理 (4326) 或几何 (3857),所以我不太确定是什么任何人都可以提供的更多信息 - 您只需要根据您可用的信息自己做出决定。
我想说的是,虽然几何数据类型可能比地理数据类型稍快(因为它依赖于更简单的平面计算,并且可以从相关区域上的紧密边界框中受益),但这种性能提升您必须取消投影回 WGS84 纬度/经度才能传递回 Bing 地图,这将远远抵消这一事实 - 重新投影是一个昂贵的过程。
您当然可以使用几何数据类型存储 WGS84 角坐标,但这确实是一种 hack,不推荐使用 - 您几乎肯定会在以后遇到困难。
所以,我建议使用 geography 数据类型和 WGS84。通过仔细的索引调整,即使是大型数据集的大多数查询,您仍然应该能够获得亚秒级的响应时间。顺便说一句,SQL Denali 中的地理数据类型取消了“半球内”规则,因此如果您要升级,该限制就会消失。
【讨论】:
以上是关于Bing Maps API - SQL - 几何与地理类型的主要内容,如果未能解决你的问题,请参考以下文章
使用 Bing Maps Quadkeys 作为 Openlayers 3 Tile 源