目录
1 开源GIS概述 2
1 .1 什么是开源 GIS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2
1 .2 为什么需要开源 GIS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
1 .3 开源GIS项目简介. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
1 .3.1 PostGIS简介 3
1 .3.2 GeoServer简介 6
1 .3.3 OpenLayers简介 7
1 .4 体系结构布署. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8
1 .4.1 基于J2EE的WebGIS体系结构. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8
1 .4.2 WMS规范和WFS规范. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
2 基于PostgreSQL和PostGIS的地图呈现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
2.1 PostgreSQL和PostGIS的安装. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
2.2 PostGIS中的几何类型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13
2.3 PostGIS中空间信息处理的实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15
2.4 PostGIS中的常用函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16
2.5 向PostGIS导入shapefi le数据. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23
2.6 基于PostGIS的地图呈现实例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24
3 OpenLayers实践. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26
3.1 项目介绍. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26
3.2 源代码总体结构分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28
3.3 BaseTypes 定义底层类与定制 JS内置类. . . . . . . . . . . . . . . . . . . . .31
3.4 BaseTypes OpenLayers 中定制JavaScript 内置类. . . . . .33
3.5 空间数据的组织与实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36
GML为
3.6 OpenLayers数据解析—以 例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37
3.7 数据渲染分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40
3.8 地图表现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41
3.9 OpenLayers中的控件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
3.10 OpenLayers事件机制分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48
3.1 1 体系结构. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .50
3.12 GeoServer自带OpenLayers实例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51
3.13 OpenLayers官网经典例子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61
3.13.1 图层叠加. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63
3.13.2 编辑功能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65
3.13.3 书签及样式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68
3.13.4 改变显示内容. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69
3.13.5 动画效果. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
3.13.6 获得属性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
3.13.7 局部放大. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72
3.13.8 编辑功能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75
3.13.9 全屏. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75
数据来源于百度 网易等论坛
基于开源GIS的电子地图开发
1开源GIS概述
1 .1 什么是开源 GIS
顾名思义开源GIS就是开放源代码的GIS软件。开源软件开发者以某种协议发布某些软件的源代码 并允许他人在遵守该协议的基础之上可以自由下载、修改、使用和散布其源代码。开源协议 GNU GPL、 BSD、 LGPL、 MIT、 MS-PL开源网站 open source GIS、 sourceforge、 google code、 apache、 codeplex。
随着商业GIS的发展而发展壮大功能性强、技术强劲背后是来自技术狂热者、科研院所和非盈利机构的大力支持。开放、集成、标准和互操作跨各类操作平台 l inux、windows、mac、mobi le跨各类语言 C、 C++、 Java、 C#、 Python、 Ruby、 Perl、JavaScript、ActionScript 各种层次的产品桌面、服务器、
数据库、客户端、 中间件、工具集。
1 .2 为什么需要开源 GIS
商业软件需要高昂的使用和维护费用 频繁的升级换代和兼容性。 其数据格式无法完全的共享和转换 而且商业软件的跨平台支持不够完善。 与之对比开源软件是完全免费使用的 开源软件的发展足以满足常用的需求 提供做种解决方案。开源GIS项目以及应用领域
桌面 GRASS、QGIS、 UDig
服务器 GeoServer、 MapServer(free)
数据库 PostGIS、 MySQL Spatial、 MS-SQL Spatial
客户端 QGIS、 OpenLayers、WorldKit
工具集 JTS(NTS)、 GEOS、 Shapely、 GDAL/OGR
中间件 GeoTools、 MapTools
其他 WorldWind 、 Ti leCache、 Proj4
开源GIS主要应用于资源管理 (Resource Management) 资源配置(Resource Configuration) 土地信息系统和地籍管理 (Land Information Systemand Cadastral Appl icaiton) 生态、环境管理与模拟 (Environmental Managementand Model ing)以及分布式地理信息应用 (Distributed Geographic InformationAppl ication)等众多领域。
1 .3 开源GIS项目简介
开源GIS项目主要有三个方面 即
·数据库 PostGIS
·服务器 GeoServer
·客户端(B/S) Open Layers
1 .3.1 PostGIS简介
PostG IS是加拿大Refractions公司支持的开源项目它为开源数据库
PostgreSQL提供了空间支持。 PostGIS安装后 Postgre SQL中出现一个模版数据库新建空间数据库时只需以PostGIS为模版即可。 PostGIS在SQL级别上实
现了基本的空间运算功能。另外绝大多数开源GIS软件即使是不严格遵守OpenGIS标准的都支持PostGIS数据表的直接载入读写等功能。毋庸置疑
PostGIS安装和使用
首先下载 http://www.postg resql .org/并安装Postg reSQL8.x版本 目前最新的为8.4。安装完毕后设置默认的用户名和密码添加此用户。然后打开
Appl ication Stack Bui lder选择需要安装的插件 里面选中PostGIS1.5 forPostgreSQL 8.x选择合适的版本。下载后自动安装。安装后可以看到一个模板数据库和一个默认的空间数据库 之后可以根据模板数据库添加一个空间数据库来使用里面实现的大量的空间分析和空间应用的函数。 同时包含一个 shapefi ledbf input loader工具。再登录到PostgreSQL中可以进行空间数据的增删改查。PostGIS中的几何数据类型
1 OGC的WKB 和WKT 格式
PostGIS支持所有OGC规范的“Simple Features”类型。 OGC定义了两种描述几何对象的格式 WKB Wel l-Known Binary和WKT Wel l-Known Text 。WKT是以文本形式描述 WKB是以二进制形式描述。使用WKB和WKT能够很好的与其他系统数据交换 目前大部分支持空间数据存储的数据库构造空间
数据都采用这两种方式。支持的几何对象在Simple Features Geometries 1.0中包括Point Line String Polygon Multi-Polygon Multi Line String Multi Point Geometry Col lection。
2 EWKT、 EWKB 和Canonical格式
OGC中定义的WKT 与WKB只支持二维的几何数据类型并且不支持空间参考。 PostGIS对OGC的数据格式进行扩展得到 EWKT和EWKB格式主要扩展有3DZ、 3DM、 4D坐标和内嵌空间参考支持。 每个有效的WKT 和WKB格式都是有效的 EWKT和EWKB。然而这种数据格式并不稳定 如果与OGC推出的新数据格式冲突那么它将来有可能会改变。而目前 OGC的Simple
Features1.2已经推出支持3D,4D的WKT,WKB格式 EWKT与EWKB的发展方向还需拭目以待。 Canonical格式是一种简单查询结果 没有任何函数调用 并且此格式支持简单的插入、更新和复制是一种 16进制编码的几何对象。
3 SQL-MM 格式
QL多媒体及应用包(SQL-MM)格式定义了一些插值曲线这些插值曲线和EWKT类似也支持3DZ、 3DM、 4D坐标但是不支持嵌入空间参考。
PostGIS中的地理数据类型
在PostGIS最近发布的版本 1.5.0中加入了地理数据类型GeographyType 。这种数据类型直接支持大地坐标 geodetic coordinates 即经纬度。PostGIS几何数据类型的基础是一个平面 平面上两点之间的最短距离是一条直线。因此在计算几何图形的面积、 距离、长度、交集等操作时可以使用笛卡尔数学计算公式和直线向量。 PostGIS地理数据类型的基础是一个球体。球体上两点之间的最短距离是大圆圆弧(great circle arc)。如果要结果更加精确则需要考虑真实世界的球体形状 这样将使计算变得复杂。 因此基于地理数据类型的功能函数少于基于几何数据类型的功能函数。而且这种数据类型现在还只支持 WGS84 SRIDSpatial reference system 4326的经纬度坐标。 PostGIS地理数据类型现在仅支持最简单的要素 OGC规范的“Simple Features”类型。在数据格式方面支持OGC的WKB和WKT格式也可以使用EWKB或EWKT插入数据。
PostGIS对空间数据的读取
现存的GIS软件产生的数据格式很多 PostGIS提供了多种方式支持数据的读取。
1 PSQL语言
Psql语言是PostgreSQL内嵌的一个命令行工具其语法基本上跟标准的SQL语法一致结合标准的SQL语法和一些PostGIS的扩展对PostGIS数据库进行读写操作。
2使用转换工具
①PostGIS自带的转换工具 shp2pgsql、 pgsql2shp可在shapefi le数据与PostGIS数据库之间转换
②使用ogr工具这个工具PostGIS自身并没有提供但它同样是一个开源软件Ogr是GDAL的一个组成部分 GDAL是一个各种GIS数据格式的转换软件库ogr是转换矢量GIS数据的软件库 目前ogr所支持的数据格式有以下几种 ESRIShapefi le,MapInfo Tab fi le,TIGER,s57,DGN,CSV,GML,KML, Interl is,SQLite,ODBC,PostGIS/PostgreSQL,MySQL[1 1] ③使用桌面软件QuantumGIS中的SPIT插件来将shapefi le读到PostGIS数据库中。
1 .3.2 GeoServer简介
GeoServer是OpenGIS Web服务器规范的 J2EE实现利用GeoServer可以方便的发布地图数据允许用户对特征数据进行更新、删除、插入操作通过GeoServer可以比较容易的在用户之间迅速共享空间地理信息。 GeoServer主要特性包括兼容WMS和WFS特性支持PostG IS、 Shapefi le、 ArcSDE、Oracle、 VPF、 MySQL、 MapInfo支持上百种投影能够将网络地图输出为jpeg 、 gif 、 png、 SVG、 KML等格式能够运行在任何基于J2EE/Servlet容器之上嵌入Open Layers支持AJAX的地图客端除此之外还包括许多其他的特性。
客户端Open layers的使用及开发方法
GeoServer中集成了Openlayers也可以使用单独下载的Open Layers软件包。在默认情况下 Openlayers只有基本的缩放Zoom 、拖动Pan功能。如果需要更丰富的服务可以调用open layers. layer的子类完成图层的初始化 在创建好图层后 还可以调用Openlayers提供的open layers.control类为地图添加一些与用户有互动功能的工具栏或者是“按钮” 。 GeoServer支持多种客户端 WMS可以返回GeoRSS和KML用来和其他地图服务互通。
GeoServer服务启动后 在浏览器中输入http://localhost:8080/geoserver/即可以看到操作界面。要完成数据的发布需要进行四个方面的配置。
Server:设置服务器信息和联系信息 ,服务信息包括:最大地理要素数限制、是否显示详细异常信息、数字精度、语言编码、 日志相关联系信息包括:单位名称、地址、联系方式等。
WFS:设置WFS相关信息,包括:是否启用WFS服务、服务层次(基本服务、事务处理层次、完全服务)以及WFS服务器描述信息和Test Suites的使用。
WMS:设置内容包括,是否启用WMS服务、描述信息、 SVG图形表现形式。
Data:数据配置有四部分内容 名称空间、数据、要素类、样式。 GeoServer默认可读取的数据有PostGIS、 shapefi le等几种格式 对ArcSDE GML等格式的支持可通过插件实现。在本文中使用PostGIS加载数据。
1 .3.3 OpenLayers简介
OpenLayers是一个用于开发WebG IS客户端的JavaScript包。 OpenLayers符合行业标准 比如OpenGIS的WMS和WFS规范。 OpenLayers采用面向对象方式开发并使用来自Prototype.js和Rico中的一些组件。 OpenLayers支持的地图来源包括Google Maps、 Yahoo!Map、微软Virtual Earth等。用户还可以用简单的图片地图作为背景图 与其他的图层在Open Layers中进行叠加。 Open Layers支持Open GIS协会制定的WMS和WFS等网络服务规范可以通过远程服务
的方式将以OGC服务形式发布的地图数据加载到基于浏览器的Open Layers客户端中进行显示。 Open Layers可以在浏览器中实现地图浏览的基本效果 比如放大、缩小、平移等常用操作之外还可以进行选取面、选取线、要素选择、
图层叠加等不同的操作。可以对已有的Open Layers操作和数据支持类型进行扩充为其赋予更多的功能。可以为Open Layers添加网络处理服务WPS的操作接口从而利用已有的空间分析处理服务来对加载的地理空间数据进行计算。
Open Layers安装和使用
首先下载 http://openlayers.org/压缩包通过Web服务器发布。 Bui lder文件夹用来打包压缩所有的js文件 doc文件夹存放API文档 examples文件夹存放所有的例子重要的学习途径 l ib是源文件库 test文件夹是一个测试例子 tools存放用来打包的工具 python 。 在浏览器输入发布地址
+/exam p l es/xx.h tm l进入需要了解的例子查看即可。
1 .4 体系结构布署
1 .4.1基于J2EE 的WebGIS体系结构
将WebGIS与J2EE相结合利用J2EE的平台无关性与分布式结构 以EJB
Enterprise JavaBean封装WebGIS的应用功能实现WebGIS应用层的可移植性。对应于J2EE从业务逻辑上的划分将WebGIS分为3层客户层、 中间层、数据层。
1 客户层可以是应用程序、浏览器本文采用浏览器与 OpenLayers相结合为用户提供栅格或者矢量地理信息。
2中间层包括Web层、 Web应用服务层。 Web层采用Tomcat作为Web容器在此容器中提供了JSP JavaServer Pages以及Servlet组件负责客户端与应用服务器的通讯和客户端的请求。
Web应用服务层是系统的核心 它运行在WebGIS应用服务器上 由运行在EJB容器中的实体EJB组件与会话EJB组件组成。本系统的GIS服务器采用
GeoServer1.6.0 由它来处理各种来自于浏览器或者其他应用程序的WMS与WFS请求完成WebGIS空间数据访问和复杂的空间任务并可以通过多种数据源接口直接访问空间数据 将处理的结果以栅格、 矢量或者GML的形式传输到客户端。
3数据层空间数据源可以有多种可以是单独的文件或者是数据库。本文采用了 PostGIS空间数据库存放数据源数据源可由应用服务器内的 EJB通过JDBC访问。 图 4是系统结构图。
1 .4.2 WMS 规范和 WFS 规范
OGC的宗旨是让用户能从任何一个网络、应用程序或计算机平台中方便地获取地理信息和服务通过共同的接口规范让数据、服务提供者、应用系统开发者和信息整合者能在短时间内花最少的费用 让使用者容易获取、 使用数据及服务 [5] 。在OGC完成的正式规范中用于网络客户端与服务器端之间通信的共同接口规范Web地图服务接口规范WMS和Web要素服务实现规范 WFS等在不同程度上解决了地理空间数据和服务的互操作问题。WMS 规范
WMS是OGC 提出的 OpenWeb Services 规范之一。它利用具有空间地理位置信息的数据制作地图。在 WMS规范中将地图定义为地理数据可视化表现通过请求 WMS返回的是地图图像而不是地理数据。
此规范定义了三个基础性操作协议 GetCapabi l ities 、 GetMap 、 GetFeatureInfo。这些协议共同构成了利用 WMS 创建和叠加显示不同来源的远程异构地图服务的基础 [6] 。
1 GetCapabi l ities用来请求获得 WMS的服务级元数据服务器端返回包括版本信息、服务类型、请求内容等元数据使用 XML 形式来表示。
2 GepMap根据请求内容的不同返回不同格式的数据。可以返回常用图片格式的栅格地
RAKsmart 虽然是美国主机商,但是商家的主要客户群还是在我们国内,于是我们可以看到每次的国内节日促销活动期间商家也会发布促销。包括这次年中大促活动,RAKsmart商家也有发布为期两个月的年终活动,其中有商家擅长的独立服务器和便宜VPS主机。服务器包括站群服务器、特价服务器、高达10G带宽不限制流量的美国服务器。商家优惠活动,可以看到对应商品的优惠,同时也可以使用 优惠码 RAKBL9 同时...
亚洲云Asiayun怎么样?亚洲云Asiayun好不好?亚洲云成立于2021年,隶属于上海玥悠悠云计算有限公司(Yyyisp),是一家新国人IDC商家,且正规持证IDC/ISP/CDN,商家主要提供数据中心基础服务、互联网业务解决方案,及专属服务器租用、云服务器、云虚拟主机、专属服务器托管、带宽租用等产品和服务。Asiayun提供源自大陆、香港、韩国和美国等地骨干级机房优质资源,包括B...
瓜云互联一直主打超高性价比的海外vps产品,主要以美国cn2、香港cn2线路为主,100M以内高宽带,非常适合个人使用、企业等等!安全防护体系 弹性灵活,能为提供简单、 高效、智能、快速、低成本的云防护,帮助个人、企业从实现网络攻击防御,同时也承诺产品24H支持退换,不喜欢可以找客服退现,诚信自由交易!官方网站:点击访问瓜云互联官网活动方案:打折优惠策略:新老用户购买服务器统统9折优惠预存返款活动...