Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL中的地理空间数据_Sql Server_Geospatial_Sqlgeography - Fatal编程技术网

Sql server SQL中的地理空间数据

Sql server SQL中的地理空间数据,sql-server,geospatial,sqlgeography,Sql Server,Geospatial,Sqlgeography,我最近一直在尝试地理数据类型,我很喜欢它。但我无法决定是否应该从当前模式转换为地理类型,该模式将纬度和经度存储在两个单独的数字(9,5)字段中。我计算了这两种类型的大小,表示一个点的Lat/Long方式为28字节,而地理类型为26字节。这在空间上不是一个很大的收获,但在执行地理空间操作(相交、距离测量等)方面却有了巨大的改进,这些操作目前都是使用笨拙的存储过程和标量函数来处理的。我想知道的是指数。地理数据类型是否需要更多的空间来索引数据?我有一种感觉,即使列中存储的实际数据较少,但我认为地理空间

我最近一直在尝试地理数据类型,我很喜欢它。但我无法决定是否应该从当前模式转换为地理类型,该模式将纬度和经度存储在两个单独的数字(9,5)字段中。我计算了这两种类型的大小,表示一个点的Lat/Long方式为28字节,而地理类型为26字节。这在空间上不是一个很大的收获,但在执行地理空间操作(相交、距离测量等)方面却有了巨大的改进,这些操作目前都是使用笨拙的存储过程和标量函数来处理的。我想知道的是指数。地理数据类型是否需要更多的空间来索引数据?我有一种感觉,即使列中存储的实际数据较少,但我认为地理空间索引的工作方式最终将为它们分配更大的空间


S.作为一个旁注,SQL Server 2008(不是R2)不自动搜索地理空间索引,除非明确地告诉使用(索引())子句

我理解您试图在保持两个之一之间做出决定,但您可能需要考虑保持两者。如果将数据导出到形状文件中,通常的做法是让lat lon字段与geom字段一起使用

两者我都会保留。无需空间操作即可轻松查询特定特征的原始坐标。您可以了解原始点,并且能够根据它们创建新的几何体,以防在不同的坐标系中需要它(例如,如果您的几何体位于某个特定投影中,则会在另一个投影中丢失很多精度)。

在我看来,您绝对应该只使用空间类型。空间类型针对空间查询进行了优化,如果您需要空间查询,那么我认为这是一个简单的选择


作为一个副作用,您可以去掉地理函数和过程,因为它们(可能)内置于SQLServer2008中。不过需要注意的是,您可能需要花一些时间优化空间索引,但这取决于您的具体情况

我不想成为“那个家伙”,但试试看,看看会发生什么!如果对整个数据集执行此操作不可行,请选择一个子集并比较这两种方法的子集。不幸的是,尝试不是一种选择,因为我们谈论的是数千万条记录。尝试一个子集并不是一个现实的测试,因为在我的经历中,有些东西在小规模上表现完美是生产中的一场彻底的灾难。你问的是空间,而不是性能(除非我遗漏了什么)。因此,以10000行(例如)为例,比较这两种策略是一个很好的测试。好吧,即使我这样做,那也只能回答是/否。但我真的很想知道为什么。我刚刚读了你关于记录数的评论:P。我认为你永远不会将其导出到不同的共振峰,是吗,数据库很难按原样每天进行备份(因为它每天都在急剧变化)。复制lat/long会不必要地增加大小。是的,但如果我继续“查询原始坐标”,这难道不违背我想要摆脱旧方法的全部原因吗?此外,我们每天要讨论数百万行。如果我不打算使用它,我会讨厌保留重复的数据。好吧,这取决于谁都会读取数据。例如,不同公司的某些IT部门都有独立于开发团队的测试人员。测试人员不理解空间查询。对于他们来说,很容易快速查看内部lat/lon值是什么,而无需提取它。如果你没有很好的理由来存储它,那么我就不会保留副本。是的,在我们公司,数据只在后端使用,从不直接接触用户,而且每个开发人员都知道(或者理解)如何使用地理空间数据。但我想我已经回答了我的问题。是的,那就不必保留了。是的,我就是这么做的。空间索引似乎确实占用了更多的空间,但一旦优化,它们提供的性能提高值额外的磁盘空间。