GeoServer学习手册.docx
- 文档编号:22793661
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:49
- 大小:47.04KB
GeoServer学习手册.docx
《GeoServer学习手册.docx》由会员分享,可在线阅读,更多相关《GeoServer学习手册.docx(49页珍藏版)》请在冰豆网上搜索。
GeoServer学习手册
GeoServerEclipse搭建
矢量数据库搭建
安装数据库
sudo?
apt-getinstall?
postgresqlpostgresql-contribpostgispostgresql-9.1-postgis
安装完毕,我们需要更改postgres用户的密码,否则我们就没法使用这个数据库服务器。
以postgres这个系统用户的身份运行psql命令,在终端中输入如下:
sudosupostgres-cpsqltemplate1
这时候会出现新的提示符,输入下面两个命令,用新密码替换<***password***>:
ALTERUSERpostgresWITHPASSWORD'<***password***>';
?
b)创建用户及数据库
postgres#CREATEUSERzuefirWITHPASSWORD'xxxx';
postgres#CREATEDATABASEosm;
postgres#GRANTALLPRIVILEGESONDATABASEosmtozuefir;
c)为数据库添加空间扩展
CREATE?
EXTENSIONpostgis;
--EnableTopology
CREATE?
EXTENSIONpostgis_topology;
--fuzzymatchingneededforTiger
CREATE?
EXTENSIONfuzzystrmatch;
--地理编码
CREATE?
EXTENSIONpostgis_tiger_geocoder;
--用于存储属性tags,key-value
CREATE?
EXTENSIONhstore;
修改PostgreSQL数据库的默认用户postgres的密码
2.PostgreSQL登录(使用psql客户端登录)
root@server2-virtual-machine:
~#sudo-upostgrespsql
//其中,sudo-upostgres是使用postgres用户登录的意思
//PostgreSQL数据默认会创建一个postgres的数据库用户作为数据库的管理员,密码是随机的,所以这里
//设定为'postgres'
3.修改PostgreSQL登录密码:
postgres=#ALTERUSERpostgresWITHPASSWORD'postgres';
//postgres=#为PostgreSQL下的命令提示符
4.退出PostgreSQLpsql客户端
postgres=#\q
[代码说明]
‘#’和’#'之前的字符是系统提示符,’postgres=#’是psql客户端的提示符,红色字符为输入命令(本文其它部分亦如此);
[功能说明]
PostgreSQL数据默认会创建一个postgres的数据库用户作为数据库的管理员,密码是随机的,我人需要修改为指定的密码,这里设定为’postgres’
修改linux系统的postgres用户的密码
1.删除PostgreSQL用户密码
root@server2-virtual-machine:
~#sudopasswd-dpostgres
passwd:
passwordexpiryinformationchanged.
//passwd-d是清空指定用户密码的意思
2.设置PostgreSQL用户密码
PostgreSQL数据默认会创建一个linux用户postgres,通过上面的代码修改密码为'postgres’(这取决于
第二步中的密码,只要与其相同即可)。
现在,我们就可以在数据库服务器上用postgres帐号通过psql或者pgAdmin等等客户端操作数据库了。
root@server2-virtual-machine:
~#sudo-upostgrespasswd
输入新的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,并在文档末尾加上以下内容
#toallowyourclientvisitingpostgresqlserver
4.重启PostgreSQL数据库
root@server2-virtual-machine:
~#/etc/init.d/postgresqlrestart
管理PostgreSQL用户和数据库
1.登录postgreSQL数据库
2.创建新用户zhaofeng,但不给建数据库的权限
postgres=#createuser“zhaofeng”withpassword‘123456’nocreatedb;
//注意用户名要用双引号,以区分大小写,密码不用
3.建立数据库,并指定所有者
postgres=#createdatabase“testdb”withowner=”zhaofeng”;
4.在外部命令行的管理命令
root@server2-virtual-machine:
~#-upostgrescreateuser-D-Ptest1
//-D该用户没有创建数据库的权利,-P提示输入密码,选择管理类型y/n
root@server2-virtual-machine:
~#-upostgrescreatedb-Otest1db1
//-O设定所有者为test1
安装postgresql数据库pgAdmin3客户端管理程序
root@server2-virtual-machine:
~#apt-getinstallpgadmin3
添加PostGIS功能到数据库,执行如下命令
psql-Upostgres-dosm-f“你PostgreSQL安装路径/share/contrib/postgis-2.1/postgis.sql”
添加EPSG:
900913支持
psql-Upostgres-dosm-f“本地的文件路径/900913.sql”
900913.sql没有可以在osm2pgsql的github中下载到
添加OSM数据到数据库
新打开一个命令行进入osm2pgsql的x64目录中,执行如下命令:
osm2pgsql-Upostgres-dosm-s-S./default.style./china.osm
一般情况下会报一个”Errorreadingstylefileline151(fields=4)flag‘phstore’isinvalidinnon-hstoremode“的错误,
这说明确实hstore表示所以我们需要添加这个标识。
点击pgAdminIII工具栏中的SQL标识
在弹出的SQL编辑器中输入:
createextensionhstore;命令点击顶部工具栏中的
这时还需要为命令添加一个“–hstore“选项完整的执行命令是:
“osm2pgsql-Upostgres-dosm–hstore-s-S./default.style./china.osm“这样就正确了。
后面导入可以不添加S./default.style
GeoServer导入eclipse
下载GeoServer源码
cd进入src目录
mvncleaninstall
成功之后生成导入eclipse的文件
mvneclipse:
eclipse
GeoServer二次开发
GeoServer相关概念的介绍
Geoserver是一个功能齐全,遵循OGC开放标准的开源WFS-T和WMS服务器。
利用Geoserver可以把数据作为maps/images来发布(利用WMS来实现)也可以直接发布实际的数据(利用WFS来实现),同时也提供了修改,删除和新增的功能(利用WFS-T)。
GeoServer,顾名思义,是一个Server.它是开源的,允许用户查看和编辑地理数据。
这是地理信息系统(GIS)领域。
GeoServer是符合OGC规范的一个全功能的WFS-T和WMSserver。
GeoServer能够发布的数据类型:
l地图或影象——应用WMS,
l实时数据——应用WFS,
l用户更新、删除和编辑的数据——应用WFS-T。
相关概念的:
WMS:
WebMapService(Web地图服务)
l?
利用具有地理空间位置信息的数据制作地图。
其中将地图定义为地理数据可视的表现。
这个规范定义了三个操作:
n?
GetCapabitities?
返回服务级元数据,它是对服务信息内容和要求参数的一种描述;
n?
GetMap?
返回一个地图影像,其地理空间参考和大小参数是明确定义了的;
n?
GetFeatureInfo(可选)返回显示在地图上的某些特殊要素的信息
WFS:
WebFeatureService(Web要素服务)
l?
Web?
地图服务返回的是图层级的地图影像,
l?
Web要素服务(WFS)返回的是要素级的GML编码,并提供对要素的增加、修改、删除等事务操作,是对Web地图服务的进一步深入。
OGCWeb要素服务允许客户端从多个Web要素服务中取得使用地理标记语言(GML)编码的地理空间数据,定义了五个操作:
n?
GetCapabilites?
返回Web要素服务性能描述文档(用XML描述);
n?
DescribeFeatureType?
返回描述可以提供服务的任何要素结构的XML文档;
n?
GetFeature?
一个获取要素实例的请求提供服务;
n?
Transaction?
为事务请求提供服务;
n?
LockFeature?
处理在一个事务期间对一个或多个要素类型实例上锁的请求。
WFS-T:
WebMapService-Transactional.允许用户以可传输的块编辑地理数据。
WCS:
WebCoverageService(Web覆盖服务)
Web?
覆盖服务(WCS)面向空间影像数据,它将包含地理位置值的地理空间数据作为“覆盖(Coverage)”在网上相互交换。
l?
网络覆盖服务由三种操作组成:
GetCapabilities,GetCoverage和DescribeCoverageType:
n?
GetCapabilities?
操作返回描述服务和数据集的XML文档。
n?
GetCoverage操作是在GetCapabilities确定什么样的查询可以执行、什么样的数据能够获取之后执行的,它使用通用的覆盖格式返回地理位置的值或属性。
n?
DescribeCoverageType?
操作允许客户端请求由具体的WCS服务器提供的任一覆盖层的完全描述。
GML:
?
GeographyMarkupLanguage.?
一种用于描述地理数据的XML。
OGC——OpenGeospatialConsortium——开放地理信息联盟
总之,GeoServer?
是您需要显示地图在网页的那些工具的当中一个,用户可以缩放并且移动。
可以与一些客户端联合使用,比如:
MapBuilder(forwebpages),UDig,GVSig,等等。
对标准的使用允许信息从GeoServer?
到其它地理信息可以很容易地被结合。
如果你对GeoServer发出一个WMS请求,你就可能得到如下的一张图:
查看Demo
在welcome界面中单击demopage链接,进入页面后单击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
外文官网
Geotools是开源的Java代码库,在GIS中提供对地理空间数据的标准操作。
简单说,它就是一个中间件,提供的功能符合OGC规范,且与GeoAPI有密切的联系。
它支持的数据格式有Shapefile、GML、WFS、PostGIS、OracleSpatial、ArcSDE、MySQL、GeoMedia、MapInfo等。
利用Geotools能够实现:
l?
格网覆盖Gridcoverages——栅格数据,
l?
坐标系统转换CoordinateTransformation,
l?
数据渲染Renderers,
l?
格式化Styling——符号化数据集等功能。
WFS地址
把下面地址中的HighwayInterchange改成自己创建的featuretype的名字,在浏览器中查看,WFS的URL,
下面地址的youtian改成自己的FeatureType名字,就是自己的WFS地址
Openlayers
Openlayersdom结构
OpenLayers项目分析——
(一)项目介绍
(OpenLayersJavaScriptMappingLibrary)
(一)项目介绍
OpenLayers?
是由MetaCarta公司开发的,用于WebGIS客户端的JavaScript包,目前的最高版本是2.5V,通过BSDLicense?
发行。
它实现访问地理空间数据的方法都符合行业标准,比如OpenGIS的WMS和WFS规范,OpenLayers采用纯面向对象的JavaScript方式开发,同时借用了Prototype框架和Rico库的一些组件。
采用OpenLayers作为客户端不存在浏览器依赖性。
由于OpenLayers采用JavaScript语言实现,而应用于Web浏览器中的DOM(文档对象模型)由JavaScript实现,同时,Web浏览器(比如IE,FF等)都支持DOM?
。
OpenLayersAPIs采用动态类型脚本语言JavaScript编写,实现了类似与Ajax功能的无刷新更新页面,能够带给用户丰富的桌面体验(它本身就有一个Ajax类,用于实现Ajax功能)。
目前,OpenLayers所能够支持的Format有:
XML、GML、GeoJSON、GeoRSS、JSON、KML、WFS、WKT(Well-KnownText)。
在OPenlayers.Format名称空间下的各个类里,实现了具体读/写这些Format的解析器。
OpenLayers所能够利用的地图数据资源“丰富多彩”,在这方面提供给拥护较多的选择,比如WMS、WFS、GoogleMap、KaMap、MSVirtualEarth、WorldWind等等。
当然,也可以用简单的图片作为源。
第一次使用OpenLayers:
拷贝目录下的OpenLayer.js、根目录下的lib目录、根目录下的img目录到你网站的Scripts目录下(当然,这个只是例子,您网站的目录结构您自己说得算,只要保证OpenLayers.js,/lib,/img在同一目录中即可)。
然后,创建一个index.html作为查看地图的页面,导入OpenLayers.js和你将要创建的js。
我们以加载WMS和GML文件为例。
varlon=5;//x-axiscoodinateinmapunits
varlat=40;//y-axiscoordinateinmapunits
varzoom=5;//numberofzoomlevels
varmap,layer;//声明变量map、layer;等同于varmap=null;varlayer=null;
map=newOpenLayers.Map('map');
//实例化一个地图类OpenLayers.Map
//以WMS的格式实例化图层类OpenLayers.Layer
map.addLayer(layer);
map.zoomToExtent(newOpenLayers.Bounds(-3.922119,44.335327,
4.866943,49.553833));
//在Map对象上加载Layer对象,并用map.zoomToExtent函数使地图合适地显示
//再在刚加载的WMS文件上,加载一GML文件
剩下的工作就是,加上一些控件OpenLayers.Control之类的东西,比如LayerSwitcher等。
它们会在地图浏览的“窗口”上增加一些工具栏或是“按钮”,增加互动性和功能性。
当然,Openlayers中的东西远不止这些,至于它的框架分析、APIs实现机制,会在后续文章中说出。
写这个的过程,也是一个学习的过程,其中难免有不妥之处,热烈欢迎大家批评指正,相互交流。
OpenLayers?
项目完整分析——
(二)源代码总体结构分析
(二)源代码总体结构分析
通过前面的项目介绍,我们大概已经知道Openlayers是什么,能够做什么,有什么意义。
接下来我们分析它怎么样,以及怎样实现的等问题。
这个图是从它的文档上截取的,旨在从感官上认识一下OpenLayers的类。
下面分别介绍(文档中的类是按字母顺序排列的,也按这个顺序说吧):
我们看到在类的顶层“高高在上”的是OpenLayers,它为整个项目实现提供名称空间(JavaScript语言没有名称空间一说,但是它确实有自己的机制实现类似的功能,后面会说明),它直接拥有一常量VERSION_NUMBER,以标识版本。
Ajax:
顾名思义,用于实现Ajax功能,只是OpenLayers的开发者们把它单独写到一个类里了,其中用到了Prototype.js框架里的一些东西。
同时,设计的时候也考虑了跨浏览器的问题。
BaseTypes:
这里定制了OpenLayers中用到的string,number?
和?
function。
比如,OpenLayers.String.startsWith,用于测试一个字符串是否一以另一个字符串开头;OpenLayers.Number.limitSigDigs,用于限制整数的有效数位;OpenLayers.Function.bind,用于把某一函数绑定于对象等等。
Console:
OpenLayers.Console,此名称空间用于调试和把错误等输出到“控制台”上,需要结合使用../Firebug/firebug.js。
Control:
我们通常所说的控件类,它提供各种各样的控件,比如上节中说的图层开关LayerSwitcher,编辑工具条EditingToolbar等等。
加载控件的例子:
class=newOpenLayers.Map('map',{controls:
[]});
Events:
用于实现OpenLayers的事件机制。
具体来说,OpenLayers中的事件分为两种,一种是浏览器事件,例如mouseup,mousedown之类的;另外一种是自定义的,如addLayer之类的。
OpenLayers中的事件机制是非常值得我们学习的,后面将具体讨论。
Feature:
我们知道:
Feature是geography?
和attributes的集合。
在OpenLayers中,特别地OpenLayers.Feature?
类由一个marker?
和一个lonla组成。
OpenLayers.Feature.WFS与OpenLayers.Feature.Vector继承于它。
Format:
此类用于读/写各种格式的数据,它的子类都分别创建了各个格式的解析器。
这些格式有:
XML、GML、GeoJSON、GeoRSS、JSON、KML、WFS、WKT(Well-KnownText)。
Geometry:
怎么翻译呢,几何?
是对地理对象的描述。
它的子类有Collection、Curve、LinearRing、LineString、MultiLineString、MultiPoint、MultiPolygon、Point、Polygon、Rectangle、Surface,正是这些类的实例,构成了我们看到的地图。
需要说明的是,Surface?
类暂时还没有实现。
Handler:
这个类用于处理序列事件,可被激活和取消。
同时,它也有命名类似于浏览器事件的方法。
当一个handler?
被激活,处理事件的方法就会被注册到浏览器监听器listener?
,以响应相应的事件;当一个handler被取消,这些方法在事件监听器中也会相应的被取消注册。
Handler通过控件control被创建,而control通过icon表现。
Icon:
在计算机屏幕上以图标的形式呈现,有url、尺寸size和位置position3个属性。
一般情况,它与?
OpenLayers.Marker结合应用,表现为一个Marker。
Layer:
图层。
Map:
网页中动态地图。
它就像容器,可向里面添加图层Layer和控件Control。
实际上,单个Map是毫无意义的,正是Layer和Control成就了它。
Marker:
它的实例是OpenLayers.LonLat?
和OpenLayers.Icon的集合。
通俗一点儿说,Icon附上一定的经纬度就是Marker。
Popup:
地图上一个小巧的层,实现地图“开关”功能。
使用例子:
Class=newOpenLayers.Popup("chicken",
newOpenLayers.LonLat(5,40),
newOpenLayers.Size(200,200),
"examplepopup",
true);
map.addPopup(popup);
Renderer:
渲染类。
在OpenLayers中,渲染功能是作为矢量图层的一个属性存在的,我们称之为渲染器,矢量图层就是通过这个渲染器提供的方法将矢量数据显示出来。
以SVG和VML为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GeoServer 学习 手册