• 从Grid控件到GIS软件


    故事从很久以前的1993年说起,这一年,盖茨大叔的微软发布了Visual Basic 3.0,VB 3.0增加了最新的ODBC2.0的支持,Jet数据引擎的支持,通过Grid控件和数据控件能够创建出色的数据窗口应用程序,从此,VB一路走红,终于成为这个世界使用人数最多的语言。

    话题还要更久远些,1970的6月,IBM圣约瑟研究实验室的高级研究员埃德加·考特 (Edgar Frank Codd) 在Communications of ACM 上发表了《大型共享数据库数据的关系模型》一文,注定了信息时代的数据都是保存在一个一个的二维的数据表里,而这个时代都会围绕这些关系数据库运转,犹如心脏。

    为了显示关系数据,就必须有Grid控件,Grid控件也就成了所有RAD开发工具的标配。如VB,如Delphi,以及无数第三方控件。

    以上是闲话。数据要显示在Grid里,最简单的办法是通过代码把这个Grid画出来,比如在VB里,很多很多人使用Textbox或者Label控件来模拟 Grid(天知道谁教他们那么搞),或者在VC里一五一十的在paint方法里用GDI画一个Grid。这些都是史前人类的做法,虽然还有很多人这样搞。

    终于,程序员说,要Grid,于是就有无数的Grid控件。所有的控件都满足,数据来源或者是一个数据库连接,例如ADO的Recordset;或者 Grid暴露接口,程序按照需要填充;或者使用原始的方法,2重for循环,一个单元格一个单元格填充。第一种办法在于简单,第二种办法在于灵活,而且不牺牲效率,程序可以自己按需获取需要的数据并填充这些Grid。如果有一个Grid控件说,要使用我,必须把数据转换为我的私有格式,那么他肯定会死的很难看,并且成为饭后的谈资,哪怕这个控件的效率有多高。

    回到GIS世界,如果有人说,MapX的显示效率比较高,效果比较好,能不能使用ArcGIS的底层分析功能,通过MapX来显示地图呢。

    可以吗?

    不可以吗?

    答案是,这样不是不可以,但是,要使用一种史前人类的做法,我们需要把ArcGIS的数据通过n次遍历,然后通过代码动态添加到MapX里,和前面提到的第三种使用Grid控件的方法类似,对于Grid控件,这种时候,一般都是显示百十条数据。

    空间技术相关领域一直是一个特殊世界,这个世界里,大家往来困难,有些人和别人老死不相往来,例如地图挤死。这种事情就好像你在美国有个亲戚,要让他给你讲讲ArcGIS的使用,你必须坐飞机到美国,然后听他讲完后再飞回来。没有电话、没有书信、更没有QQ和MSN。

    终于,在伟大的ArcGIS 9.2里,增强了数据互操作的功能,这个功能可以让ArcGIS无须转换格式,直接读取(或写入)百十种其他数据格式,终于向开放世界前进了一大步。

    所谓没有无缘无故的爱,也没有无缘无故的恨,搞GIS的也不会无缘无故就这样白痴或者混蛋。那么,是什么造成了现在的局面呢,惟一的答案大概就只能是空间数据的特殊性。GIS并不是惟一可以表达空间数据的东东,CAD是古已有之的东东,而且现在还混的比GIS好。有这样的前辈,GIS就更强调海量数据管理、空间分析等着眼点,反过来,CAD在绘图、成图方面的优势导致了很多GIS数据是CAD做出来,然后转换为GIS格式。

    在CAD领域,不知道什么时候开始,AutoDesk就一家独大了,而AutoCAD格式就成了类似行业标准的东西(AutoCAD格式是否开放?)。和现在的MS Office成为Office市场的标准一样。

    早些年的GIS,是类似Matlab、SPSS这样的东东,属于学术范围内的研究工具,或者特殊部门的特殊工具,无所谓开放或者不开放,那时候,使用GIS 的都是高手,兴之所至,写个程序把这个binary文件转换为另一个文件格式手到擒来。这样的高手,后来就索性做了GDAL,OGR。但随着行业的发展,对空间信息的需求也增加了,GIS更多的用来构建所谓的信息系统,而不是作为类似Office或者AutoCAD这样的工具,不过,没有和其他信息技术领域,GIS选择了另外一条道理,一条包办底层数据库、中间分析引擎、上层显示等等的一体化解决方案。

    如果一家独大,也许这条路还可以走通,前面说过的ArcGIS Reader会成为一个行业标配,但实际上没有谁在这个市场可以成为主导。需求和供应开始产生矛盾,矛盾的焦点主要在于数据,在于互操作。

    于是,人们说行业需要标准,就有了OGC规范。

    这个世界有被很好执行的规范,比如北京的交通规则,也有没有怎么执行的规范,如武汉的交通规则,还有OGC规范。一筐筐的规范就那样放着,很多人看着可惜,有能力的,就把这些东西加入了开源GIS。

    现在,我们看到PostGIS越来越好,看到主流的数据库系统都开始增加自己空间数据支持,看到有了专门空间数据运算的JTS和NTS,有数据发布的GeoServer,有数据显示的OpenLayers,所以,我们有理由相信,这个行业的Grid控件会越来越好用。


    对于传统的GIS软件提供商,前面也许有2条路,要么,适应时代潮流;要么向Matlab、SAS这样的专业软件发展,为地理信息科学研究服务。

    最后,声明一下,本文杜绝任何转载,需要转载请联系3snews或者Mars。
  • 相关阅读:
    java项目数据库从oracle迁移到mysql 中 java部分的一些修改
    mysql表名等大小写敏感问题、字段类型timestamp、批量修改表名、oracle查询历史操作记录等
    navicat premium相关应用(将oracle数据库迁移到mysql等)
    Java byte 类型的取值范围是-128~127
    idea中debug:
    chrome里面模拟手机上打开网页的场景方法
    Dealloc weak nil
    用七牛sdk传递图片到七牛服务器
    iOS block 本质研究
    UIWebView JSContext相关问题
  • 原文地址:https://www.cnblogs.com/maweifeng/p/714068.html
Copyright © 2020-2023  润新知