收藏 分销(赏)

开源空间信息软件.pdf

上传人:xrp****65 文档编号:5693941 上传时间:2024-11-15 格式:PDF 页数:45 大小:1.08MB 下载积分:10 金币
下载 相关 举报
开源空间信息软件.pdf_第1页
第1页 / 共45页
开源空间信息软件.pdf_第2页
第2页 / 共45页


点击查看更多>>
资源描述
开源空间信息软件框架陈斌2009.10.19目录n总体结构框架n空间数据库:PostgreSQL+PostGISnWeb Mapping:MapServer+OpenLayersn开发库:GDAL+OGR+GEOS+PROJ.4n桌面客户端:QGISnGIS套件:GRASSn开发语言和开发环境:PythonqGIS by Python总体结构框架PostgreSQLPostGISMapServerWeb BrowserWMSVector/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数组类型、复合类型(ROW Type)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:/,最新版本1.4.0q基于空间对象库GEOS和空间投影库PROJ.4开发q支持桌面GIS软件:GRASS,QGIS,uDig,JUMPq支持中间件服务器:MapServer,GeoServer等q支持开发库:GeoTools,OGRqESRI ArcGIS 9.3支持PostGIS空间数据类型PostGIS特性n支持OpenGIS中所有空间数据类型qPOINT,LINESTRING,POLYGON,MULTI-POINT,MULTI-LINESTRING,MULTI-POLYGON,GEOMETRY COLLECTIONq支持采用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_Relatetext ST_Relate(geometry geomA,geometry geomB);boolean ST_Relate(geometry geomA,geometry geomB,text intersectionMatrixPattern);PostGIS特性-空间操作函数nBuffern点集操作qUnion,Difference,SymDifference,Intersectionn几何体简化qST_Simplify,ST_SimplifyPreserveTopolygyn线性参照系的支持n长事务支持Web Mapping:MapServer+OpenLayersnMapServer是采用C开发的CGI程序,用于空间信息的Web发布和交互,开源软件q高级绘图输出n根据比例尺进行几何绘制,地图标注和标注避让;n高度定制化的模板输出;nTrueType字体支持;n图面元素自动化生成(比例尺、参照图、图例)n逻辑或正则表达式生成的专题图q支持众多脚本和开发环境nPHP,Python,Perl,Ruby,Java,and.NETMapServer特性n跨平台支持qLinux,Windows,Mac OS X,Solaris等操作系统;n支持众多OGC标准qWMS,WFS,WCS,GML等;n支持众多矢量和栅格数据qGDAL支持的所有栅格格式;qOGR支持的所有矢量格式(ESRI Shapefile,PostGIS,ArcSDE,Oracle Spatial,MySQL等等)n地图投影支持qPROJ.4支持的一千多种投影的实时转换OpenLayersnOpenLayers是一个用于Web Mapping客户端开发的Javascript包q采用了Ajax技术实现无刷新动态页面;q支持多种数据源的整合n图像文件,WMS,WFS,GML,KML,Google Map,Yahoo Map,Microsoft Virtual Earth,WorldWind,KaMap,GeoRSS,MapServer,MapGuideq图层控制和缩放控制q概览图、图面标记OpenLayers-例子 var map,layer,velayer;function init()map=new OpenLayers.Map(map);yahooLayer=new OpenLayers.Layer.Yahoo(Yahoo);map.addLayer(yahooLayer);layer=new OpenLayers.Layer.WMS(OpenLayers WMS,http:/ OpenLayers.LonLat(-5,40),4);map.addControl(new OpenLayers.Control.LayerSwitcher();Yahoo Base Layer Example OpenLayers-例子Web BrowserMapServer+OpenLayersOpenLayers开发库:GDAL+OGRnGDAL是一个操作各种栅格地理数据格式的库q包括读取、写入、转换、处理各种栅格数据格式;q它使用单一的抽象数据模型支持大多数的栅格数据;q支持格式:http:/www.gdal.org/formats_list.htmlnOGR是操作矢量格式地理数据的库q格式:http:/www.gdal.org/ogr/ogr_formats.htmln众多的GIS软件都使用GDAL/OGR库,包括开源和商用软件GDAL数据模型nGDAL抽象数据模型包括q数据集(dataset),坐标系统,仿射地理坐标转换(Affine Geo Transform),大地控制点(GCPs),元数据(Metadata),栅格波段(Raster Band),颜色表(Color Table),子数据集域(Subdatasets Domain),图像结构域(Image_StructureDomain),XML域(XML:Domains)。OGR体系结构nGeometry类q包括OGRGeometry等类封装了OpenGIS的矢量数据模型,并提供了一些几何操作,WKB和WKT格式之间的相互转换,以及空间参考系统(投影);nSpatial Reference类qOGRSpatialReference封装了投影和基准面的定义。nFeature类qOGRFeature封装了一个完整feature的定义,包括一个geometry和geometry的一系列属性。OGR体系结构nFeature Definition类qOGRFeatureDefn里面封装了feature的属性,类型、名称及其默认的空间参考系统等。nLayer类qOGRLayer是一个抽象基类,表示数据源类OGRDataSource里面的一层要素(feature)。nData Source类qOGRDataSource是一个抽象基类,表示含有OGRLayer对象的一个文件或一个数据库。nDrivers类qOGRSFDriver对应于每一个所支持的矢量文件格式。OGR数据模型OGC OGM开发库:GEOS+PROJ.4nGEOS是一个几何拓扑操作库,是JTS(JTS Topology Suite)的C+移植q支持空间关系判定:Equals,Disjoint,Intersects,Touches,Crosses,Within,Contains,Overlapsq和空间操作:Buffer,ConvexHull,Intersection,Union,Difference,SymDifferencenPROJ.4是地图投影库q功能主要有经纬度坐标与地理坐标的转换,坐标系的转换,包括基准变换等nPostGIS采用GEOS+PROJ.4!开发库:GEOS/ShapelynShapely是GEOS的Python接口n示例 from shapely.geometry import Point point=Point(-106.0,40.0)#longitude,latitude point.buffer(10.0)from shapely.geometry import asLineString a=array(1.0,2.0,3.0,4.0)line=asLineString(a)line.wktLINESTRING(1.0000000000000000 2.0000000000000000,3.0000000000000000 开发库:PROJ.4/pyprojnpyproj是PROJ.4的Python接口n示例 from pyproj import Proj p=Proj(proj=utm,zone=10,ellps=WGS84)#use kwargs x,y=p(-120.108,34.36116666)print x=%9.3f y=%11.3f%(x,y)x=765975.641 y=3805993.134 print lon=%8.3f lat=%5.3f%p(x,y,inverse=True)lon=-120.108 lat=34.361 p2=Proj(+proj=utm+zone=10+ellps=WGS84)#use proj4 string x,y=p2(-120.108,34.36116666)print x=%9.3f y=%11.3f%(x,y)x=765975.641 y=3805993.134桌面客户端QGISnQGIS是一个用户界面友好的桌面地理信息系统q可运行在Linux、Unix、Mac OSX和Windows等平台之上;q基于跨平台的图形工具Qt软件包,采用C+语言开发;q支持多种矢量、栅格和数据库数据源nGDAL/OGR,PostGIS,SpatiaLite,WMS,WFSq丰富的显示、管理、分析、查询的功能;n投影转换,图层控制,专题图,图面整饰,统计查询n地图编辑,栅格数据配准,GPS工具n通过GRASS插件和fTools插件实现丰富的空间分析功能q除了核心功能以外,QGIS支持插件扩展QGIS界面QGIS插件n核心插件(Core Plugins)q由QGIS开发组维护,包含在所有的QGIS发行版中,开发语言为C+或PythonQGIS插件n外部插件(External Plugins)q由爱好者们开发,开发语言为Python,由核心插件Plugin Installer加载QGIS插件开发n开发环境qQGIS,Python,QT,PyQT,PyQT开发工具n采用PyQT开发图形界面n与QGIS界面和功能组件交互n由插件管理器装入n插件的图形界面与用户进行交互准备QT GUI资源n准备外部资源(图标等):例:qrc文件:icon.pngn通过pyrcc4命令生成描述资源的py文件qpyrcc4-o resources.py source.qrc插件类实现代码插件初始化代码插件管理器装入运行运行结果开源GIS套件:GRASS GISnGRASS GIS(Geographic Resources Analysis Support System地理资源分析支持系统)qGRASS 最初被美军建筑工程研究实验室设计为一个军用的土地管理支持软件。该系统于 1999 年使用 GNU GPL 发布,距今已有24年的历史。q1985:v1.0,1990:v4.x版,现在是v6.5版本。nGRASS是在Linux系统开发的基于GPL协议的一个开源软件,具备数据管理、图像处理、数字制图、空间数据管理、图像处理、数字制图、空间建模和数据可视化建模和数据可视化等功能。它是用标准C语言编写的一套基于文件结构的平台。nGRASS 将地理数据和属性数据存储在自身的数据库中。也支持外部数据库如 Oracle 数据库,PostgreSQL。开源GIS套件:GRASS GISn目前GRASS已经覆盖了大多数GIS操作函数,超过300个经典的算法,是开源版的ArcGISq是Unix平台的第一个GIS软件,支持平台 Linux,Windows(通过Cygwin)。nGRASS支持的功能:q数据导入/导出;q二维栅格数据;三维栅格数据(真三维);q矢量数据,目前已扩展到三维;q空间分析;q地图成图;数据可视化(二维、2.5维和三维)n地理空间分析是 GRASS GIS 的主要的强项之一。GRASS GIS:主要模块及功能n栅格分析模块q具有栅格向矢量转换、基于栅格单元与定制的数据查询、颜色表修改、矢量与点数据格式转换、专家系统分析、点的插值、相邻关系矩阵分析、栅格叠加、栅格单元的重新划分、重采样、单元值比例缩放、单元统计分析、基于矢量线的表面生成等功能。n矢量分析模块q具有等高线生成、矢量向栅格或点数据转换、数字化、矢量动态标注、矢量层的叠加等功能。n点数据分析模块q具有Delaunay三角剖分、高程点插值、泰森多边形生成、地形图分析(包括坡度、坡向等)等功能。n图像处理模块q具有色彩合成、边缘检测、频率过滤、傅立叶变换和反变换、IHS到RGB 的转换和反转换、图像校正、正射影像校正、辐射线改正、重采样、分辨率增强、基于纹理的分类、形状检测等功能。GRASS GIS:主要模块及功能nDTM分析模块q具有等高线生成、最优路径分析、坡度坡向分析、基于高程点或等高线的地表面生成等功能。n屏幕绘制模块q具有3D表面、色彩分配、地图叠加、点数据图、栅格图、矢量图以及图形图像的缩放等功能。n附加模块q具有数据库接口(包括与Informix,Oracle,Postgres等接口)、水淹没分析、景观结构分析、比例变换等功能。n三维分析模块q具有三维数据输入、三维图形计算、三维插值、三维可视化等功能。GRASS GIS界面GRASS GIS界面开发语言和开发环境:PythonnPython是一个动态脚本语言q开源,跨平台(windows,mac,linux/unix,win-ce)q多种发行版本nCPython:传统的C语言实现;nJython:Java实现;nIronPython/Python.NET:基于.NET的实现q灵活,高效,简洁,丰富的标准库,强大的扩充性n众多成功应用qBitTorrent,Google,Disney,SciPy,ZOPE采用Python进行GIS开发n矢量栅格数据读写:GDAL/OGRnPostgreSQL/PostGIS连接:pgdb,psycopgnOracle/Spatial连接:cx_Oraclen地图投影PROJ.4:pyprojn空间操作GEOS:shapelyn网络拓扑:networkxn数据矩阵分析:numpyn科学计算工具包和开发库:SciPyn跨平台图形界面开发:PyQt4,wxPythonn2D/3D可视化:matplotlib,pyVTKn桌面端开发:qgis plugins
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 环境建筑 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服