首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该使用SqlGeometry还是SqlGeography?

我应该使用SqlGeometry还是SqlGeography?
EN

Stack Overflow用户
提问于 2012-06-14 21:40:12
回答 3查看 2.7K关注 0票数 7

我们在这个问题上有一点内部冲突,似乎不能得出一个令人满意的结论。

我们只会储存纬度和经度,可能还有简单的多边形。我们所需要的只是计算两个点之间的距离(可能的话,看一个点是否在多边形内),而整个数据都在如此接近的范围内,从而使平面估计可以接受。

由于我们的需求非常宽松,有一半的开发团队建议使用SqlGeometry类型,这显然更简单。不过,我很难接受这一点,因为我们正在存储地理数据,这似乎是将它们存储在SqlGeography中是正确的做法。而且,我没有发现任何实质性的证据表明SqlGeometry数据类型比SqlGeography类型更容易处理。

有没有人建议在这种相对简单的情况下哪种类型更合适?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-15 16:28:24

这不是比较特性、准确性或简单性的问题--这两种空间数据类型用于处理不同类型的数据。

作为一个类推,假设您为包含每一行唯一标识符的列选择了最佳的数据类型。如果该UID仅包含整数值,则使用int,而如果它是一个6个字符的字母数字值,则使用char(6)。如果它有可变长度的unicode值,您可以使用nvarchar代替,对吗?

同样的逻辑也适用于空间数据--您根据该列包含的值选择适当的数据类型;如果使用地理(即纬度/经度)坐标,则使用SqlGeography数据类型。就这么简单。

您可以使用SqlGeometry存储纬度/经度值,但这就像使用nvarchar(max)存储整数一样.我向你保证这会导致进一步的问题(例如,当你所有的面积计算结果都是以度平方来衡量)。

票数 7
EN

Stack Overflow用户

发布于 2012-06-15 14:46:31

SqlGeography类型的可用方法比SqlGeometry少(特别是在Sql 2008中)。

SqlGeography参考

SqlGeometry参考

例如,假设您希望在Sql2008中获得多边形的质心。在几何学上,你有一种固有的方法,但在地理上却没有。

此外,它还存在以下限制:

  • 你的地理不能超过一个半球
  • 在创建多边形时,环的顺序很重要。

而且,大多数可用的API和库(据我所知)比地理信息处理几何图形更好。

也就是说,如果距离计算必须是精确的,你有很长的距离,并且在世界各地都有坐标,那么地理可能会更适合。否则,根据您对问题的描述,您将很好地得到几何类型的服务。

关于你的问题:“这样做更容易吗?”那得看情况。无论如何,根据经验,对于简单的场景,我通常选择SqlGeometry。

不管怎么说,IMHO你不应该太担心那个决定。创建另一种类型的新列并在必要时迁移数据相对容易。

票数 5
EN

Stack Overflow用户

发布于 2016-08-02 16:16:50

四年后,很明显,我们应该将数据存储在SqlGeometry而不是SqlGeography中。

为什么?

我们从立法地区地图中导入信息,他们的数据存储在SqlGeometry中。当确定某一特定的lat/long是否在某一立法区域边界内时,当该点接近两个边界时,我们会得到不一致的结果。

这就要求我们做更多的工作,以确定“靠近”边界的地点,并手工核实这些地点是否被分配到适当的地区。不太理想。

故事的寓意:,如果您依赖任何数据,请考虑它存储的类型,以帮助指导您的决策。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11041756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档