扩展微软 SQL Server 的空间功能

2016-02-19 19:16 4 1 收藏

想要天天向上,就要懂得享受学习。图老师为大家推荐扩展微软 SQL Server 的空间功能,精彩的内容需要你们用心的阅读。还在等什么快点来看看吧!

【 tulaoshi.com - 编程语言 】

  我经常想,在对空间信息的支持上,由于它缺乏对几何体的存储, 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 的数据提供接口,只是用四个外框坐标列来做外接矩形框查询。所有这些工作所发费的时间不超过一个小时,因此,可以说做起来是比较简单的。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

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

  我在这里创建了一个可下载的 web 演示程序。它分为两页:一个是导入到数据库,另一个是从数据库读取数据和绘制图层。所有你要做的是在 App_Data 文件夹中增加一个 SQL Server 2005 Express 数据库并把它命名为 "GeoDatabase.mdf" 。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

来源:http://www.tulaoshi.com/n/20160219/1620561.html

延伸阅读
SQL Server 2005相对于SQL Server 2000改进很大,有些还是非常实用的。举几个例子来简单说明 这些例子我引用了Northwind库。 1. TOP 表达式 SQL Server 2000的TOP是个固定值,是不是觉得不爽,现在改进了。 --前n名的订单 declare @n intset @n = 10select TOP(@n) * from Orders 2. 分页 不知各位过去用SQL Server 2000是怎么...
环境:win2k+sqlserver 2K+查询分析器 SQLSERVER服务实例名称:mainserver 需要备份的数据库名称: msdb 本地机器名称(Client端):david 本地用户:zf 密码:123 本地域名:domain 本地提供备份需求的文件夹:e:est 第一步: 建立共享文件夹 在程序代码中调用(或者CMD窗口) net share tes...
标签: SQLServer
     今天客户反映数据库文件空间增长过快 ,需要分析数据库表存放空间分配情况,临时写了以下过程, 与大家共享。 /******************************** 功能:获取表的空间分布情况  ycsoft 2005-07-13 **********************************/ if not exists (select * from dbo.sysobjects where id = object_id(N'[db...
如果你先安装Microsoft Visual Studio 2005 Bata1版,然后再安装SQL Server 2005 Bata2版,在安装的时候会提示你删除原来的SQL Server组件(即使从来没装过SQL Server也会提示)。其原因是Visual Studio 2005 Bata1版的CLR version是2.0.40607.16,SQL Server 2005 Bata2版的CLR version是2.0.40607.42。 解决办法:先删除Visual Stu...
我们在设计一个VB窗体时,常常放上许多控件,为了使这些控件看上去整整齐齐,我们不得不设置一大堆Left、Top、Height、Width属性,您是否已经感到厌烦并想转向Powerbuilder或Delphi等别急,让我们现在就来扩展一下VB的功能。 VB4.0提供了一个新功能:Add-Ins,利用这一功能我们就可以把自己的程序加到VB4的系统菜单Add-Ins里去,作为VB...

经验教程

362

收藏

92
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部