开源空间信息软件框架陈斌gischen@pku.edu.cn2009.10.19目录n总体结构框架n空间数据库:PostgreSQL+PostGISnWebMapping:MapServer+OpenLayersn开发库:GDAL+OGR+GEOS+PROJ.4n桌面客户端:QGISnGIS套件:GRASSn开发语言和开发环境:PythonqGISbyPython总体结构框架PostgreSQLPostGISMapServerWebBrowserWMSVector/RasterFilesGDALOGRGEOSPROJ.4ApplicationQGISGRASS空间数据库PostgreSQL+PostGISnPostgreSQL是目前功能最强大、最先进的开源数据库管理系统q对象关系数据库管理系统(ORDBMS);q支持Windows,Linux,MacOS等所有主流操作系统;qwww.postgresql.org,最新版本是8.4.1q各种前端管理工具(pgadmin3/phppgadmin)q各种语言的编程接口PostgreSQL特性nSQL支持SQL2003标准超集,支持过程化SQL(PL/pgsql),和各种语言作为存储过程开发语言q脚本语言:PL/Lua,PL/LOLCODE,PL/Perl,plPHP,PL/Python,PL/Ruby,PL/sh,PL/Tcl和PL/Schemeq编译语言:C,C++,Javaq统计语言:PL/Rn多种索引qB-tree,Hash,GiST索引PostgreSQL特性n丰富的数据类型q整数、浮点数、任意精度数、货币类型q文本字符、二进制数据、二进制位串;q日期时间、布尔型、枚举型q基础的几何类型、网络地址类型q支持全文检索的类型qUUID和XML类型q数组类型、复合类型(ROWType)q用户自定义的简单类型(例如Geometry/PostGIS)PostgreSQL特性n用户自定义的对象q索引q简单类型、复合类型、函数和操作符q聚集函数q域类型q类型转换q编码转换n大量扩展模块,和空间信息处理有关的有:qPostGIS:遵循OpenGIS标准的空间数据扩展qpgRouting:基于PostGIS的最短路径算法PostgreSQL特性n编程和访问接口q自有的服务器编程接口(SPI)qODBCqJDBCqPython的DB/APIn管理工具q跨平台的图形化管理客户端pgadmin3q基于Web的Apache/PHP环境的phppgadminPostGIS-空间数据类型扩展nPostGIS是PostgreSQL的扩展,遵循OpenGIS规范,支持空间对象、空间索引、空间操作函数qhttp://postgis.refractions.net,最新版本1.4.0q基于空间对象库GEOS和空间投影库PROJ.4开发q支持桌面GIS软件:GRASS,QGIS,uDig,JUMPq支持中间件服务器:MapServer,GeoServer等q支持开发库:GeoTools,OGRqESRIArcGIS9.3支持PostGIS空间数据类型PostGIS特性n支持OpenGIS中所有空间数据类型qPOINT,LINESTRING,POLYGON,MULTI-POINT,MULTI-LINESTRING,MULTI-POLYGON,GEOMETRYCOLLECTIONq支持采用WKT,WKB和EWKT,EWKB(包含了SRID信息的WKT/WKB)表达几何对象PostGIS特性-空间数据类型n各种几何对象的构造函数qST_PointFromText,ST_PointFromWKB等n访问几何对象属性的函数qST_X,ST_Y,ST_NPoints,ST_NRings等n编辑几何对象的函数q增删节点、缩放坐标、平移、投影变换等n输出几何对象的函数q支持Binary,EWKB,EWKT,GeoJSON,GML,HEXEWKB,KML,SVG,GeoHash,WKTPostGIS特性-空间关系和测量n长度、面积、周长、中心qST_Area,ST_Perimeter等n基于DE-9IM的空间关系qST_Contains,ST_Covers,ST_Crosses,ST_Disjoint,ST_Intersects,ST_Overlaps等q模式矩阵和DE-9IM矩阵处理:ST_RelatetextST_Relate(geometrygeomA,geometrygeomB);booleanST_Relate(geometrygeomA,geometrygeomB,textintersectionMatrixPattern);PostGIS特性-空间操作函数nBuffern点集操作qUnion,Difference,SymDifference,Intersectionn几何体简化qST_Simplify,ST_SimplifyPreserveTopolygyn线性参照系的支持n长事务支持WebMapping:MapServer+OpenLayersnMapServer是采用C开发的CGI程序,用于空间信息的Web发布和交互,开源软件q高级绘图输出n根据比例尺进行几何绘制,地图标注和标注避让;n高度定制化的模板输出;nTrueType字体支持;n图面元素自动化生成(比例尺、参照图、图例)n逻辑或正则表达式生成的专题图q支持众多脚本和开发环境nPHP,Python,Perl,Ruby,Java,and.NETMapServer特性n跨平台支持qLinux,Windows,MacOSX,Solaris等操作系统;n支持众多OGC标准qWMS,WFS,WCS,GML等;n支持众多矢量和栅格数据qGDAL支持的所有栅格格式;qOGR支持的所有矢量格式(ESRIShapefile,PostGIS,ArcSDE,OracleSpatial,MySQL等等)n地...