有客户提出如下要求:
基于WEB
提供电子地图的基本功能(无非是缩放、鹰眼,拖曳,标注[文本,简单的点,面])
GIS数据与业务数据整合,业务数据存储在SQL SERVER 2005中
这里问题的关键就是SQL SERVER 2005了。
SQL SERVER算是商业数据库中对空间数据支持的最晚的一个了吧,
所以才有大名鼎鼎的MsSqlSpatial,在SQL SERVER 2008未出来之前,赢得了无数名声。
但是微软做了一个表面对自己有利,但可能对自己造成一个长达5-10年的不利影响,只在SQL SERVER 2008支持空间数据功能。
其实即使是中国这个微软产品的狂热拥趸的市场,无论是政府采购还是企业采购,如果选择SQL SERVER作数据库,SQL SERVER 2005也占据绝大多数市场, 在我看来SQL SERVER 2005版本刚刚进入成熟期,2008版本还不够成熟,你不见2008 的HOTFIX一个接一个,SP1出来后还是不停的有补丁的补丁出现, 对比SQL 2000, 保守估计SQL SERVER 2005的生命周期应该也有7-10年吧。
总而言之,我觉得这个是微软的一个小气的商业败笔。如果他把空间数据打包成一个类似POSTGRESQL的POSTGIS的扩展补丁免费发放,同时兼容SQL 2005/2008,将大大巩固和提高他的产品的占有率,对于微软来说,这不是一个多大的技术难题吧。
好了,这是个幻想,抱怨过了,还是要提出一个解决的方案:
最终,基于SQL SERVER 2005 (+MsSqlSpatial)+ POSTGIS整合。
当然如果是极小型的应用,你可以合法直接用SQL SERVER 20008的EXPRESS版,当然同时会具备EXPRESS版的种种限制。
至于非法的,我就不说了,我还是很拥护合法的东西的。
对于开源的GIS数据库,POSTGRESQL 的POSTGIS算是比较有名了,几乎所有的WEB GIS平台都支持了,除了那些二百五。
最终证明,这个选择在经济上是正确的,在技术上是痛苦的。
我们的整个架构是JAVA EE平台的,GEOSERVER也顺理成章的当选了。
但是,GEOSERVER 所使用的GEOTOOLS至今未提供一个好用的SQL SERVER的gt2-jdbc-sqlserver包,老的GEOSERVER1的版本
倒是有人写了个,但是未看到被正式纳入版本,只能算是个通房小丫头,并且老的GEOSERVER1所具备的混乱架构不太适合二次开发。
对比一下GEOSERVER 2和1就会感到这种差距,GEOSERVER 2 基于的GEOTOOLS的版本也是做了巨大的升级的,参照老的版本作新的版本是完全行不通的。仔细看了gt2-jdbc-sqlserver的源码,新的gt2-jdbc-sqlserver包完全与MsSqlSpatial不搭边,而且由于刚开 发出来,有很多低级的BUG。
所以为了使得GIS数据与业务数据整合, 必须要写一个MsSqlSpatial的gt2-jdbc实现。
略去其中种种的痛苦不说,中间我甚至有些放弃了,向客户提出升级到SQL SERVER 2008,不过还是被驳回了,主要是SQL 2005已经采购了,而且客户的客户是都是用的这个版本的SQL SERVER。只好悻悻的继续痛苦并痛苦着。
当然,结局不是杯具,我终于写出了这个版本gt2-jdbc实现,实现了最初的目的,为党和国家省下了一大笔钱。
我被幸福了。