扩展微软SQLServer的空间功能
来源:互联网 发布:360去广告软件 编辑:程序博客网 时间:2024/05/21 07:57
我经常想,在对空间信息的支持上,由于它缺乏对几何体的存储,MSSQL总是比别的数据库慢了一拍。在新的.NETCLR的支持下,你可以真正地添加你自己的基于.NET的对象。尽管我也试了下在SQLServer中实现简单几何类型的存储,但有一些限制使我不得不放弃了尝试。首先,用户数据类型不能超过8000字节。也就是说,几何体对象不能超过500个节点,这对像海岸线这样的对象就显得太少了。另一个问题是SQLServer不支持继承,所以你也不能对你的数据类型做比较好的面向对象实现。
...所以昨天我试着找到了一个完全不同的更简单的实现。我决定以Well-KnownBinary的形式(译者注:OpenGIS的说明书中定义了两个表述空间对象的标准方式:一个是WKT(theWell-KnownText)形式,另一个是WKB(theWell-KnownBinary)形式)存储几何体在一个图像列中。使用图像列的目的是它能够保存大到2G的数据,这对大多数的几何对象都足够了。而字节列和用户自定义类型一样,也有8000个字节的限制,所以也不够好。除了几何列之外,我还创建了四个实数类型的列,用来存储几何外接矩形框的最大最小坐标值。这能提高基于外接矩形框的查询的效率。其它的列用来存储几何体的属性。
我在SharpMap中实现了这个方法。首先,我建立了一个小的数据库导入程序用来导入shapefile文件。它在数据库中建立一个表,然后把几何体及其对象导入其中。SharpMap为其提供了必要的数据读取器和WKB格式化程序。第二个部分是建立了一个数据提供接口,SharpMap能够基于这个接口绘制数据。我做这些时多少参照了PostGreSQL/PostGIS的数据提供接口,只是用四个外框坐标列来做外接矩形框查询。所有这些工作所发费的时间不超过一个小时,因此,可以说做起来是比较简单的。
我必须说,对于这种方法的效率我是很惊讶的。它比shapefile的数据接口还快一点点,而shapefile数据接口曾经是SharpMap中最快的数据接口。而PostGreSQL/PostGIS相比而言要慢4-6倍。
我在这里创建了一个可下载的web演示程序。它分为两页:一个是导入到数据库,另一个是从数据库读取数据和绘制图层。所有你要做的是在/App_Data/文件夹中增加一个SQLServer2005Express数据库并把它命名为"GeoDatabase.mdf"。- 扩展微软SQLServer的空间功能
- SharpGIS博客翻译2006年5月:扩展微软 SQL Server 的空间功能
- SharpGIS博客翻译2006年5月:扩展微软 SQL Server 的空间功能
- MySQL的空间扩展
- 扩展微软DDK中的NDIS IM驱动的功能:添加一个DeviceIoControl接口
- 扩展微软DDK中的NDIS IM驱动的功能:添加一个DeviceIoControl接口
- 【转帖】扩展微软DDK中的NDIS IM驱动的功能:添加一个DeviceIoControl接口
- 转扩展微软DDK中的NDIS IM驱动的功能:添加一个DeviceIoControl接口
- 扩展微软DDK中的NDIS IM驱动的功能:添加一个DeviceIoControl接口
- 微软终于上道儿了:操作系统不买帐,拿更新的扩展功能最低版本来限制
- extjs的空间htmlEditor源码 浅析,可以重写里面的方法来扩展相关功能
- 扩展的UDDI功能
- 扩展javascriptCore的功能
- 菜单功能的扩展
- 扩展jtree的功能
- 扩展 TableAdapter 的功能
- 微软SQLServer密码管理的危险判断
- 微软SQLServer密码管理的危险判断
- MySQL数据的导出和导入工具:mysqldump
- 实例讲解:.NET如何访问MySQL数据库
- 让MySQL与ASP.NET配合更强大
- 数据备份中可能出错的情况及解决办法
- SQLServer连接失败错误分析与排除(1)
- 扩展微软SQLServer的空间功能
- SQLServer连接失败错误分析与排除(2)
- 了解MYSQL数据库调度与锁定的问题
- 如何提高MySQL性能
- 实例讲解MySQL数据库的查询优化技术
- 在win2003下MySQL数据库每天自动备份
- 防范SQL注入攻击的新办法
- 如何修改遗失的MySQL的ROOT用户密码
- SqlServer2000+SqlServerMobileEdition配置合并复制