GeoServer 学习手册

GeoServer 学习手册
GeoServer 学习手册

GeoServer Eclipse 搭建

矢量数据库搭建

安装数据库

sudo apt-get install postgresql postgresql-contrib postgis postgresql-9.1-postgis

安装完毕,我们需要更改postgres用户的密码,否则我们就没法使用这个数据库服务器。以postgres 这个系统用户的身份运行psql命令,在终端中输入如下:

sudo su postgres -c psql template1

这时候会出现新的提示符,输入下面两个命令,用新密码替换<***password***>:

ALTER USER postgres WITH PASSWORD ' <***password***> ';

b)创建用户及数据库

postgres# CREATE USER zuefir WITH PASSWORD 'xxxx';

postgres# CREATE DATABASE osm;

postgres# GRANT ALL PRIVILEGES ON DATABASE osm to zuefir;

c)为数据库添加空间扩展

CREATE EXTENSION postgis;

-- Enable Topology

CREATE EXTENSION postgis_topology;

-- fuzzy matching needed for Tiger

CREATE EXTENSION fuzzystrmatch;

-- 地理编码

CREATE EXTENSION postgis_tiger_geocoder;

-- 用于存储属性tags,key-value

CREATE EXTENSION hstore;

修改PostgreSQL数据库的默认用户postgres的密码

2.PostgreSQL登录(使用psql客户端登录)

root@server2-virtual-machine:~# sudo -u postgres psql

//其中,sudo -u postgres 是使用postgres 用户登录的意思

//PostgreSQL数据默认会创建一个postgres的数据库用户作为数据库的管理员,密码是随机的,所以这里

//设定为'postgres'

3.修改PostgreSQL登录密码:

postgres=# ALTER USER postgres WITH PASSWORD 'postgres';

//postgres=#为PostgreSQL下的命令提示符

4.退出PostgreSQL psql客户端

postgres=# \q

[代码说明]

‘#’和’#'之前的字符是系统提示符,’postgres=#’是psql客户端的提示符,红色字符为输入命令(本文其它部分亦如此);

[功能说明]

PostgreSQL数据默认会创建一个postgres的数据库用户作为数据库的管理员,密码是随机的,我人需要修改为指定的密码,这里设定为’postgres’

修改linux系统的postgres用户的密码

1.删除PostgreSQL用户密码

root@server2-virtual-machine:~# sudo passwd -d postgres

passwd: password expiry information changed.

//passwd -d 是清空指定用户密码的意思

2.设置PostgreSQL用户密码

PostgreSQL数据默认会创建一个linux用户postgres,通过上面的代码修改密码为'postgres’(这取决于

第二步中的密码,只要与其相同即可)。

现在,我们就可以在数据库服务器上用postgres帐号通过psql或者pgAdmin等等客户端操作数据库了。

root@server2-virtual-machine:~#sudo -u postgres passwd

输入新的UNIX 密码:

重新输入新的UNIX 密码:

passwd:已成功更新密码

修改PostgresSQL数据库配置实现远程访问

root@server2-virtual-machine:~# vi /etc/postgresql/9.1/main/postgresql.conf

1.监听任何地址访问,修改连接权限

#listen_addresses = ‘localhost’改为listen_addresses = ‘*’

2.启用密码验证

#password_encryption = on改为password_encryption = on

3.可访问的用户ip段

root@server2-virtual-machine:~# vi /etc/postgresql/9.1/main/pg_hba.conf,并在文档末尾加上以下内容

# to allow your client visiting postgresql server

host all all 0.0.0.0 0.0.0.0 md5

4.重启PostgreSQL数据库

root@server2-virtual-machine:~# /etc/init.d/postgresql restart

管理PostgreSQL用户和数据库

1.登录postgre SQL数据库

root@server2-virtual-machine:~# psql -U postgres -h 127.0.0.1

2.创建新用户zhaofeng,但不给建数据库的权限

postgres=# create user “zhaofeng”with password ‘123456’nocreatedb;

//注意用户名要用双引号,以区分大小写,密码不用

3.建立数据库,并指定所有者

postgres=# create database “testdb”with owner=”zhaofeng”;

4.在外部命令行的管理命令

root@server2-virtual-machine:~# -u postgres createuser -D -P test1

//-D该用户没有创建数据库的权利,-P提示输入密码,选择管理类型y/n

root@server2-virtual-machine:~# -u postgres createdb -O test1 db1

//-O设定所有者为test1

安装postgresql数据库pgAdmin3客户端管理程序

root@server2-virtual-machine:~# apt-get install pgadmin3

添加PostGIS功能到数据库,执行如下命令

psql -U postgres -d osm -f “你PostgreSQL安装路径/share/contrib/postgis-2.1/postgis.sql”添加EPSG: 900913支持

psql -U postgres -d osm -f “本地的文件路径/900913.sql”

900913.sql没有可以在osm2pgsql的github中下载到

添加OSM数据到数据库

下载github上的osm2pgsql中的default.style文件并拷贝到本地osm2pgsql的x64目录中,把下载的chain.osm.bz2文件解压得到的chain.osm文件也拷贝到osm2pgsql的x64目录中。

新打开一个命令行进入osm2pgsql的x64目录中,执行如下命令:

osm2pgsql -U postgres -d osm -s -S ./default.style ./china.osm

一般情况下会报一个”Error reading style file line 151 (fields=4) flag ‘phstore’is invalid in non-hstore mode“的错误,

这说明确实hstore表示所以我们需要添加这个标识。点击pgAdmin III 工具栏中的SQL标识

在弹出的SQL编辑器中输入:create extension hstore;命令点击顶部工具栏中的

这时还需要为命令添加一个“–hstore “选项完整的执行命令是:“osm2pgsql -U postgres -d osm –hstore -s -S ./default.style ./china.osm “这样就正确了。

后面导入可以不添加S ./default.style

GeoServer导入eclipse

下载GeoServer 源码https://www.360docs.net/doc/8f451808.html,/

cd 进入src目录

mvn clean install

成功之后生成导入eclipse的文件

mvn eclipse:eclipse

GeoServer二次开发

GeoServer相关概念的介绍

Geoserver是一个功能齐全,遵循OGC开放标准的开源WFS-T和WMS服务器。利用Geoserver可以把数据作为maps/images来发布(利用WMS来实现)也可以直接发布实际的数据(利用WFS来实现),同时也提供了修改,删除和新增的功能(利用WFS-T)。

GeoServer, 顾名思义,是一个Server. 它是开源的,允许用户查看和编辑地理数据。这是地理信息系统(GIS) 领域。GeoServer 是符合OGC 规范的一个全功能的WFS-T 和WMS server。

GeoServer能够发布的数据类型:

l 地图或影象——应用WMS,

l 实时数据——应用WFS,

l 用户更新、删除和编辑的数据——应用WFS-T。

相关概念的:

WMS: Web Map Service(Web地图服务)

l 利用具有地理空间位置信息的数据制作地图。其中将地图定义为地理数据可视的表现。这个规范定义了三个操作:

n GetCapabitities 返回服务级元数据,它是对服务信息内容和要求参数的一种描述;

n GetMap 返回一个地图影像,其地理空间参考和大小参数是明确定义了的;

n GetFeatureInfo(可选)返回显示在地图上的某些特殊要素的信息

WFS: Web Feature Service(Web要素服务)

l Web 地图服务返回的是图层级的地图影像,

l Web要素服务(WFS)返回的是要素级的GML编码,并提供对要素的增加、修改、删除等事务操作,是对Web地图服务的进一步深入。OGC Web要素服务允许客户端从多个Web要素服务中取得使用地理标记语言(GML)编码的地理空间数据,定义了五个操作:

n GetCapabilites 返回Web要素服务性能描述文档(用XML描述);

n DescribeFeatureType 返回描述可以提供服务的任何要素结构的XML文档;

n GetFeature 一个获取要素实例的请求提供服务;

n Transaction 为事务请求提供服务;

n LockFeature 处理在一个事务期间对一个或多个要素类型实例上锁的请求。

WFS-T: Web Map Service-Transactional. 允许用户以可传输的块编辑地理数据。

WCS:Web Coverage Service(Web覆盖服务)

Web 覆盖服务(WCS)面向空间影像数据,它将包含地理位置值的地理空间数据作为“覆盖(Coverage)”在网上相互交换。

l 网络覆盖服务由三种操作组成:GetCapabilities,GetCoverage和DescribeCoverageType:

n GetCapabilities 操作返回描述服务和数据集的XML文档。

n GetCoverage操作是在GetCapabilities确定什么样的查询可以执行、什么样的数据能够获取之后执行的,它使用通用的覆盖格式返回地理位置的值或属性。

n DescribeCoverageType 操作允许客户端请求由具体的WCS服务器提供的任一覆盖层的完全描述。

GML: Geography Markup Language.一种用于描述地理数据的XML。OGC——Open Geospatial Consortium——开放地理信息联盟

总之,GeoServer 是您需要显示地图在网页的那些工具的当中一个,用户可以缩放并且移动。可以与一些客户端联合使用,比如:MapBuilder (for web pages), UDig, GVSig,等等。对标准的使用允许信息从GeoServer 到其它地理信息可以很容易地被结合。

如果你对GeoServer发出一个WMS请求,你就可能得到如下的一张图:

查看Demo

在welcome界面中单击demo page链接,进入页面后单击WFS-T链接就可以启动一个名叫MapBuilder的基于Javascript的地图地图编辑器。启动MapBuilder后我们可以看到一张样图,那就就从它开始吧!用其提供的工具对图进行修改。自己练习。

关于geoserver开发

geoserver只能用j2ee开发

geoserver是符合ogc wms/wfs/wcs标准的地图服务器,建设一套完整的webgis系统还需要客户端配合,mapbuilder和openlayers是非常好的两个选择。对于较大的项目,空间数据库也是必不可少的,geoserver支持商业的oracle、db2,开源的postgis、mysql。

扯得更远一点,geoserver支持google map和google earth。

Geotools

外文官网https://www.360docs.net/doc/8f451808.html,/

Geotools是开源的Java代码库,在GIS中提供对地理空间数据的标准操作。简单说,它就是一个中间件,提供的功能符合OGC规范,且与GeoAPI有密切的联系。它支持的数据格式有Shapefile、GML、WFS、PostGIS、Oracle Spatial、ArcSDE、MySQL、GeoMedia、MapInfo等。

利用Geotools能够实现:

l 格网覆盖Grid coverages——栅格数据,

l 坐标系统转换Coordinate Transformation,

l 数据渲染Renderers,

l 格式化Styling——符号化数据集等功能。

WFS地址

把下面地址中的HighwayInterchange改成自己创建的featuretype的名字,在浏览器中查看,WFS的URL,

http://localhost:8080/geoserver/wfs?request=getfeature&service=wfs&version=1.0.0&typ ename=States

下面地址的youtian改成自己的FeatureType名字,就是自己的WFS地址

http://localhost:8080/geoserver/wms/kml_reflect?layers=youtian

Openlayers

Openlayers dom结构

OpenLayers项目分析——(一)项目介绍

(OpenLayers JavaScript Mapping Library)

(一)项目介绍

网址:https://www.360docs.net/doc/8f451808.html,/

OpenLayers 是由MetaCarta公司开发的,用于WebGIS客户端的JavaScript包,目前的最高版本是2.5 V,通过BSD License 发行。它实现访问地理空间数据的方法都符合行业标准,比如OpenGIS的WMS和WFS规范,OpenLayers采用纯面向对象的JavaScript 方式开发,同时借用了Prototype框架和Rico库的一些组件。

采用OpenLayers作为客户端不存在浏览器依赖性。由于OpenLayers采用JavaScript 语言实现,而应用于Web浏览器中的DOM(文档对象模型)由JavaScript实现,同时,Web浏览器(比如IE,FF等)都支持DOM 。

OpenLayers APIs采用动态类型脚本语言JavaScript编写,实现了类似与Ajax功能的无刷新更新页面,能够带给用户丰富的桌面体验(它本身就有一个Ajax类,用于实现Ajax 功能)。

目前,OpenLayers所能够支持的Format有:XML、GML、GeoJSON、GeoRSS、JSON、KML、WFS、WKT(Well-Known Text)。在OPenlayers.Format名称空间下的各个类里,实现了具体读/写这些Format的解析器。

OpenLayers所能够利用的地图数据资源“丰富多彩”,在这方面提供给拥护较多的选择,比如WMS、WFS、GoogleMap、KaMap、MSVirtualEarth、WorldWind等等。当然,也可以用简单的图片作为源。

第一次使用OpenLayers:

先到它的官方网站https://www.360docs.net/doc/8f451808.html,下载他的压缩包,解压后可以看到其中的一些目录和文件,拷贝目录下的OpenLayer.js、根目录下的lib目录、根目录下的img目录到你网站的Scripts目录下(当然,这个只是例子,您网站的目录结构您自己说得算,只要保证OpenLayers.js,/lib,/img在同一目录中即可)。然后,创建一个index.html作为查看地图的页面,导入OpenLayers.js和你将要创建的js。

我们以加载WMS和GML文件为例。