数据基于开源gis的电子地图开发

石家庄市电子地图  时间:2021-03-03  阅读:()

目录

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 SRIDSpatial 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便宜美国/日本/中国香港VPS主机 低至月$1.99 可安装Windows

RAKsmart 商家这几年还是在做事情的,虽然他们家顺带做的VPS主机并不是主营业务,毕竟当下的基础云服务器竞争过于激烈,他们家主营业务的独立服务器。包括在去年开始有新增多个数据中心独立服务器,包括有10G带宽的不限流量的独立服务器。当然,如果有需要便宜VPS主机的他们家也是有的,比如有最低月付1.99美元的美国VPS主机,而且可选安装Windows系统。这里商家有提供下面六款六月份的活动便宜V...

欧路云(22元) 新增美国Cera线路VPS主机且可全场8折

欧路云(oulucloud) 商家在前面的文章中也有陆续介绍过几次,这不今天有看到商家新增加美国Cera线路的VPS主机,而且有提供全场八折优惠。按照最低套餐最低配置的折扣,月付VPS主机低至22元,还是比较便宜的。不过我们需要注意的是,欧路云是一家2021年新成立的国人主机商,据说是由深圳和香港的几名大佬创建。如果我们有介意新商家的话,选择的时候谨慎且月付即可,注意数据备份。商家目前主营高防VP...

hostodo:2021美国独立日7折优惠促销NVMe硬盘的VPS,低至$13/年,还送DirectAdmin授权

7月4日是美国独立日,大致就是国庆节的意思吧。hostodo今年提前搞了个VPS大促销活动,4款便宜VPS,相当于7折,续费不涨价,本次促销不定时,不知道有多少货,卖完为止。VPS基于KVM虚拟,NVMe阵列,1Gbps带宽,自带一个IPv4+/64 IPv6,solusvm管理,送收费版DirectAdmin授权,VPS在用就有效! 官方网站:https://www.hostodo.com ...

石家庄市电子地图为你推荐
百度沸点颁奖典礼百度沸点2010年颁奖典礼什么时候举行主页改不了为什么我电脑的主页改不了了?神雕侠侣礼包大全神雕侠侣陈晓礼包兑换码怎么获得xp系统停止服务XP停止服务后该怎么办?创维云电视功能创维新出的4K超高清健康云电视有谁用过,功能效果怎么样?商标注册查询官网如何在网上查询商标是否注册?商标注册查询官网怎么查商标有没有注册iphone6上市时间苹果6什么时候出来网站地图制作网站地图 怎么制作?首页无法修改主页为什么无法修改
最好的虚拟主机 域名投资 韩国vps俄罗斯美女 赵容 荷兰服务器 la域名 42u机柜尺寸 私有云存储 免费个人空间 服务器托管什么意思 美国在线代理服务器 如何用qq邮箱发邮件 服务器监测 免费mysql数据库 华为云服务登录 789 杭州电信宽带优惠 国外免费网盘 SmartAXMT800 主机托管 更多