扩展微软 SQL Server 的空间功能

  我经常想,在对空间信息的支持上,由于它缺乏对几何体的存储, MSSQL 总是比别的数据库慢了一拍。在新的 .NET CLR 的支持下,你可以真正地添加你自己的基于 .NET 的对象。尽管我也试了下在 SQL Server 中实现简单几何类型的存储,但有一些限制使我不得不放弃了尝试。首先,用户数据类型不能超过 8000 字节。也就是说,几何体对象不能超过 500 个节点,这对像海岸线这样的对象就显得太少了。另一个问题是 SQL Server 不支持继承,所以你也不能对你的数据类型做比较好的面向对象实现。

  ...所以昨天我试着找到了一个完全不同的更简单的实现。我决定以 Well-Known Binary 的形式(译者注: OpenGIS 的说明书中定义了两个表述空间对象的标准方式:一个是 WKT ( the Well-Known Text )形式,另一个是 WKB ( the Well-Known Binary )形式)存储几何体在一个图像列中。使用图像列的目的是它能够保存大到 2G 的数据,这对大多数的几何对象都足够了。而字节列和用户自定义类型一样,也有 8000 个字节的限制,所以也不够好。除了几何列之外,我还创建了四个实数类型的列,用来存储几何外接矩形框的最大最小坐标值。这能提高基于外接矩形框的查询的效率。其它的列用来存储几何体的属性。

  我在 SharpMap 中实现了这个方法。首先,我建立了一个小的数据库导入程序用来导入 shapefile 文件。它在数据库中建立一个表,然后把几何体及其对象导入其中。 SharpMap 为其提供了必要的数据读取器和 WKB 格式化程序。第二个部分是建立了一个数据提供接口, SharpMap 能够基于这个接口绘制数据。我做这些时多少参照了 PostGreSQL/PostGIS 的数据提供接口,只是用四个外框坐标列来做外接矩形框查询。所有这些工作所发费的时间不超过一个小时,因此,可以说做起来是比较简单的。

  我必须说,对于这种方法的效率我是很惊讶的。它比 shapefile 的数据接口还快一点点,而 shapefile 数据接口曾经是 SharpMap 中最快的数据接口。而 PostGreSQL/PostGIS 相比而言要慢 4 - 6 倍。

  我在这里创建了一个可下载的 web 演示程序。它分为两页:一个是导入到数据库,另一个是从数据库读取数据和绘制图层。所有你要做的是在 \App_Data\ 文件夹中增加一个 SQL Server 2005 Express 数据库并把它命名为 "GeoDatabase.mdf" 。   请作者联系本站,及时附注您的姓名。联系邮箱:edu#chinaz.com(把#改为@)。

时间: 2024-12-31 11:01:11

扩展微软 SQL Server 的空间功能的相关文章

微软SQL Server 2005的30项顶尖特性

下面是微软自称SQL Server 2005"顶尖"的30项新增及改进功能特性.10大顶尖数据库管理特性 特性 描述 数据库镜像 利用新增数据库镜像解决方案扩展日志传送功能.您可以使用数据库镜像特性通过设置自动故障转移至备用服务器的方式来增强SQL Server系统的功能. 在线恢复 利用SQL Server 2005,数据库管理员可以在SQL Server实例运行状态下执行恢复操作.由于只有那些被恢复的数据无法使用,数据库的其余部分仍旧处于在线状态且保持可用,因此,在线恢复特性能够有

微软SQL Server 2000 Reporting Services介绍(四)

server|services|微软 微软SQL Server 2000 Reporting Services介绍(四) [摘要 ] 本文对Reporting Services的一些不太常见的功能进行了分析,最后根据使用情况列举了Reporting Services的一些不足的地方,估计这些不足都会在正式版中解决. [关键字] Reporting Services,.NET Framework. DrillThrough,rdl文件,rds文件 n rdl文件元素 在上一篇文章里简单的分析了rd

微软SQL Server 2008 中文版促销15000元

微软SQL Server 2008是一个能够提供可信的.高效率智能数据平台的软件,它能满足企业各种管理数据的需求.另一方面,SQL Server 2008的价格合理,性价比也较高.日前,有商家正对该款产品型号SQL Servere2008中文标准版展开促销活动,活动期间,售价15000元.建议有意向的用户不妨驻足关注一下. http://www.aliyun.com/zixun/aggregation/11208.html">Microsoft SQL Server 2008 中文标准版

促销 微软SQL Server 2008 中文版15000元

微软SQL Server 2008是一个能够提供可信的.高效率智能数据平台的软件,它能满足企业各种管理数据的需求.另一方面,SQL Server 2008的价格合理,性价比也较高.日前,有商家正对该款产品型号SQL Servere2008中文标准版展开促销活动,活动期间,售价15000元.建议有意向的用户不妨驻足关注一下. http://www.aliyun.com/zixun/aggregation/11208.html">Microsoft SQL Server 2008 中文标准版

Sql Server 2016新功能之Row-Level Security(值得关注)_MsSql

Sql Server 2016 有一个新功能叫 Row-Level Security ,大概意思是行版本的安全策略(原来我是个英语渣_(:з」∠)_) 直接上例子.这个功能相当通过对表添加一个函数作为过滤规则,使得拥有不同条件的用户(或者登录名) 之类的,只能获取到符合条件的数据.相对来说是提供了那么一点的便捷性,当然也增加了数据的安全性,相当于每个用户连接进来只能看到 符合规则的数据(当然,这里的用户只是一个举例.其实是可以通过编写过滤函数来实现的) 举个例子 有三个用户 Sales1 ,Sa

多列复合索引的使用 绕过微软sql server的一个缺陷_MsSql

然而,微软sql server在处理这类索引时,有个重要的缺陷,那就是把本该编译成索引seek的操作编成了索引扫描,这可能导致严重性能下降 举个例子来说明问题,假设某个表T有索引 ( cityid, sentdate, userid), 现在有个分页列表功能,要获得大于某个多列复合索引V0的若干个记录的查询,用最简单表意的方式写出来就是 V >= V0, 如果分解开来,就是: cityid > @cityid0 or (cityid = @cityid0 and (sentdate >

postgres 数据库有没有像sql server 收缩的功能

问题描述 postgres 数据库有没有像sql server 收缩的功能 postgres数据库大了 ,空间快没有了,像整理一下 有没有像sql server 收缩的功能, 或者有其他的什么方法

微软Sql server analysis service数据挖掘技术

原文:微软Sql server analysis service数据挖掘技术 最新在一个项目中要求用到微软SSAS中的数据挖掘功能,虽然以前做项目的时候也经常用到SSAS中的多维数据集 (就是CUBE),但是始终没有对SSAS中的数据挖掘功能进行过了解.所以借着项目需求这股东风最近了解了下SSAS的数据挖掘,这里先写一篇博客做一个简要的归纳.   说到数据挖掘,我们首先需要知道SSAS数据挖掘能干什么,为什么需要进行数据挖掘.我们先来看一个例子假设我们数据库中现在有一张表叫CustomersBo

Sql Server 2016新功能之Row-Level Security(值得关注)

Sql Server 2016 有一个新功能叫 Row-Level Security ,大概意思是行版本的安全策略(原来我是个英语渣_(:з」∠)_) 直接上例子.这个功能相当通过对表添加一个函数作为过滤规则,使得拥有不同条件的用户(或者登录名) 之类的,只能获取到符合条件的数据.相对来说是提供了那么一点的便捷性,当然也增加了数据的安全性,相当于每个用户连接进来只能看到 符合规则的数据(当然,这里的用户只是一个举例.其实是可以通过编写过滤函数来实现的) 举个例子 有三个用户 Sales1 ,Sa