10th 二月 2007
地图服务器的比较与选择,似乎是个永不过时的主题,OSGeo的讨论组里也常涉及到相关的话题。一般说来,构建基于FOSS的地图数据中心,除去服务器之外都有较固定的解决方案,浏览器的地图客户端可以选用Ka-Map或Openlayers,而数据库方面Postgresql+PostGIS的使用常常是不二之选。
先看历史悠久产品成熟的MapServer。Mapserver在国内用户广泛,其内核使用C++编写,基于CGI脚本实现,页面调用支持PHP、JSP等多种语言,并且对OGC的WMS和WFS规范提供支持。Map文件是Mapserver工程中关键的结构配置文件,定义了地图范围、数据源、地图图层、投影方式以及符号标记等内容。如果在Linux平台下快速配置MapServer地图服务器,使用Maptools发布的 FGS(FOSS GIS Suite)套件无疑是最佳方案,套件集成了整套的MapServer、Apache、PHPMapScript以及GDAL库等众多内容,并且提供安装后就可直接浏览的地图DEMO。
另一款开源服务器GeoServer也是非常好的选择,基于Java和Geotools库开发的Geoserver功能全面且遵循OGC开放标准,并由同时拥有PostGIS与uDig的Refractions公司提供支持。GeoServer对发布WFS-T和WMS服务提供便捷的支持,并以XML文件描述所有地图服务。GeoServer的开发组很活跃,邮件咨询的问题很快会得到 Jody Garnett和组内其他成员的回复,GeoServer对OGC规范提供了全面的支持,除WMS和WFS之外,即将加入的FROGS(Framework for Open Geospatial Services)项目将着重提供对WPS规范的支持。
比较来说,Mapserver对WMS的支持更为高效,而Geoserver则更擅长于结合WFS规范的属性查询。当然,对于使用者来说,最主要的区别还是传统CGI脚本与J2EE在技术上的分歧。但就发展趋势来看,J2EE的架构明显要占据优势,并且Geoserver拥有基于Eclipse RCP平台的开源客户端uDig。随着Geoserver的版本更新,相信其有实力成为今后开源WebGIS解方案的主流选择。
Posted in 兴趣爱好, 聚焦GIS | 3 Comments »
7th 二月 2007
JavaWPS is an open source Java GIS middleware providing implementations of Open Geospatial Consortium (OGC) specification WPS(Web Processing Service). JavaWPS is also associated with the GRASS GIS project that provides hundreds of geospatial functions that could be invoked with interfaces of JavaWPS.
JavaWPS code will be built using the latest Java tools and environments and its modular architecture allows extra functionality to be easily incorporated. JavaWPS code will be released under the GNU Lesser General Public License (LGPL). References to JavaWPS project will be the python project PyWPS, 52North WPS and Grass SOAP project. JavaWPS will focus on the implementations of functions that come from GRASS GIS and provide convenient way to publish GRASS GIS functions as services on the internet.
Web Processing Service interface specification provides mechanisms to identify the spatially-referenced data required by the calculation, initiate the calculation, and manage the output from the calculation so that it can be accessed by the client. And WPS is targeted at processing both vector and raster data. Therefore, three important core functions (GetCapabilities, DescribeProcess, Execute) will be realized according to the standards in WPS specification.
JavaWPS will be the first Open Source project of OSGeo China. JavaWPS homepage at JavaForge is available at http://javawps.javaforge.com/ and Project Summary is also located at JavaForge. Source code of JavaWPS could be checked out with anonymous authorication via the following SVN address: Url: http://svn.javaforge.com/svn/JavaWPS/
User: anonymous ; Password: anon
Anyone who wants to make contribution to JavaWPS project is warmly welcome. Please register at JavaForge first to get the SVN code commit authorization. For further information, please feel free to contact with: gaoang # lreis.ac.cn or see Release Notes for details.
Posted in 编程语言, 聚焦GIS | 4 Comments »
4th 二月 2007
开放源码在科学计算方面的应用十分广泛,科研工作者往往更喜欢使用具有免费许可以及良好可编程特性的开放源码项目,而不是具有严格知识产权保护措施的商业软件。当然,轻松便捷的集成性以及友善的社区支持等各方面优势,也是促使科学计算向开源领域靠拢的重要因素。
Python语言的科学计算库,最完善的要算SciPy,SciPy旨在实现MATLAB可以完成的所有功能,并且简化与其它应用的集成,同时保持免费自由的许可协议提供给用户调用。用于二维绘图方面的Python函数库还有Matplotlib,它利用Python的数值计算模块Numeric及Numarray帮助用户编程实现高质量的二维图形。同时Matplotlib可以很好的支持TeX 排版命令,用以显示图形中嵌入的数学公式,这一点带给使用Tex进行文章写作的用户很大便利。Python语言生来具有优良的开源传统,其应用也日趋广泛,在浏览Google帮助中心和Job Opportunities页面时,或许会注意到,列出分类信息的业务逻辑会交由static.py和topic.py进行处理,也就是说部分代码是用Python语言完成的。据说Google爬虫程序最初也使用Python编写,如果想一探究竟,可以通过爬虫网站抓取记录进一步分析。
如果习惯使用C++语言,标准库STL(Standard Template Library)和应用广泛的Boost库同样也附带有数学计算的函数。但更多第三方科学计算库赋予了C++卓越的科学计算功能。Ricepig同学推荐的Blitz++库是一个高效的数值计算函数库,其目的是利用C++的模板技术实现同时具有C++的便捷语法和Fortran语言高效执行的数值计算环境。类似的开源项目还有不少,用于处理并行环境下的高性能计算的C++库FreePOOMA、提供各种矩阵运算和线性代数计算的高性能泛型组件库MTL(Matrix Template Library)、源自GNU包含1000多个函数的强大C/C++数值计算库GSL(GNU Scientific Library)、以及应用于计算几何方面的C++库CGAL(Computational Geometry Algorithms Library)和CGAL的Python版本函数库CGAL-PYTHON,无疑都带给有计算需求的用户一笔巨大财富。
有了这些科学计算函数库的帮助,编写与数学计算相关的程序将不再是那么令人头疼的事情,大量现成的优秀算法都可以在函数库中得以参照借鉴。我们所要做的,只是摆脱商业软件条条框框的束缚,善于使用这些天赐利器,得心应手的去打造自己的应用。
Posted in 思维记录, 诸子百家 | 2 Comments »
3rd 二月 2007
在地理空间信息领域中,以统一的标准和规范来实现各种GIS功能间的互操作,是分布式计算环境下进行共享与服务化的关键问题。开放地理信息系统协会(OGC)一直在推进相关应用互操作规范和协议的制定,目前处于RFC阶段的OGC最新成果是Web Processing Service (WPS)协议,WPS致力于实现GIS功能的服务化调用,在获得广泛认可后将会作为新的标准发布。
在进行介绍之前,需要先搞清楚服务的准确定义是什么?可以这样解释,服务就是由客户端调用而由服务器端执行的一系列处理任务。(Service refers to a processing task that is invoked by a client and executed by a server.)而Web服务,简言之就是建立在Internet或Intranet上提供给客户端调用的并在服务端执行的各种业务逻辑。
WPS有别与已有用于实现Web地图访问和查询的WMS和WFS规范,其最大的创新之处在于可以通过网络为客户端提供一系列GIS操作的服务调用接口,可以实现从简单的空间分析操作到复杂的全球气候变化模型计算的几乎所有功能。WPS是基于XML的传输协议,通过Web为客户端提供空间数据处理相关的GIS函数功能,函数调用过程所必需的三种描述为:GetCapabilities:请求得到可用数据处理过程的元数据描述信息;DescribeProcess:得到执行处理过程需要的输入输出类型和参数描述信息;Execute:提供输入数据和必要参数调用执行处理过程。WPS的调用流程首先要得到所需参数的标识符和输入项,然后为输入项载入处理过程和计算数据。数据可以通过网络传送,也可以直接利用服务器上已有的数据,而WPS规范提供了空间参考数据的识别机制,并规范统一的输入参数和计算输出结果。
目前已有的WPS实例,包括Python语言实现的PyWPS项目及其Demo实现,主要是调用Grass自带的栅格或矢量功能来进行地理信息操作,并且Demo还展示了通过WPS调用实现的最短路径查询操作。在国内的技术跟踪方面,已由GUCAS的宋现锋老师实现通过PyWPS项目调用的R统计语言的功能展示。希望等有时间,编写基于Java的Web Service来实现WPS规范,用以服务化Grass GIS已提供的数百个空间操作API函数。
Posted in 编程语言, 聚焦GIS | 4 Comments »
2nd 二月 2007
印象里SUN的软件产品接触都比较少,主要是感觉针对企业级的产品定位往往对于一般用户实用性并不强,然而SUN的Java集成开发环境Netbeans却改变了自己一贯的看法。
同样,在Sun开源政策的支持下,Netbeans遵循 CDDL 开源协议,NetBeans可以在Solaris、Windows、Linux和 Macintosh OS X等各种平台下进行开发,作为全功能的Java IDE,编写、编译、调试和部署Java桌面和移动应用都十分顺手,并且Web可视化开发以及C和C++语言的开发包都包括在新一代的Netbeans中,用来在Windows平台上构建本地代码。值得一提的是,Netbeans国际化十分出色,不仅IDE环境可以切换为中文界面,附带的所有帮助文档也是中文撰写。
针对Web Service的企业应用在Netbeans环境下开发十分便捷,Web容器可使用已集成的Tomcat,同时Netbeans企业包(Enterprise Pack)中提供的Application Server也是不错的选择。目前已经测试Netbeans平台下生成并发布WebService的流程,感觉比用Eclipse、Axis和WST结合实现的解决方案要方便不少。让我感到惊喜的是,Netbeans下不仅可以将Java代码生成Service发布,还可将已有的WSDL描述文件逆向生成Java接口,发布为Service进行接口调用。在目前火热的SOA领域,Netbeans对基于BPEL的Web Services商业过程语言也提供支持,开发者可以轻松定义组件之间协作的工作流,集成在应用当中。
Netbeans确实带来了不少惊喜,记得06年软件技术大会时,和Sun的白剑波老师说起Netbeans的发展及其与Eclispe的比较,大致认为,Netbeans如果要超过Eclipse的势头,仅靠Sun提供插件开发包是远不够的,还需要众多第三方插件提供商的支持,在迁移Eclispe平台上优秀插件的同时,开发更多独具特色的Netbeans插件,来丰富用户的选择。 希望Netbeans带来的好感可以持续下去,并且在后续的版本中体验到更多的令人着迷的功能。
Posted in 兴趣爱好, 编程语言 | 52 Comments »