如何利用GeoServer发布卫星地图服务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何利用GeoServer发布卫星地图服务相关的知识,希望对你有一定的参考价值。
参考技术A 环境配置由于GeoServer是基于J2EE的开源项目,需要java的运行环境,所以需要安装JDK;其次,要访问geoserver的服务,需要tomcat服务器。
3.1搭建java运行环境
直接安装附件内的JDK1.8即可,安装完成后点击“开始”→“运行”,在弹出的对话框内输入“cmd”进入管理员界面,在界面内输入“java
-version”(注意java和-version之间有一个空格),出现图4所示的界面,则说明java环境已经搭建完成。
说明:如果此处未出现图4所示的界面,说明java运行环境未搭建好,可以去网上查阅配置java环境变量的相关资料。2.创建tomcat服务器
按默认安装tomcat即可,注意记下tomcat的安装目录(安装目录可以任意选择,不一定要安装在C盘)之后需要在安装目录下解压geoserver.war。
配置GeoServer
安装好tomcat后,将附件内的geoserver.war,复制到tomcat的webapps目录下,例如我的tomcat安装在C盘,此处的完整路径为C:\Program
Files\Apache Software Foundation\Tomcat 7.0\webapps在安装目录Tomcat
7.0文件夹内找到bin文件夹,进入并双击“Tomcat7.exe”运行,用以解压geoserver.war压缩包,解压完成后再次回到webapps文件夹,可以看到现在已经生成了一个geoserver文件夹,说明已经解压好了geoserver。geoserver.war为geoserver的工程文件,解压完成后可以将其删除,也可将其留在webapps文件夹内。
安装好tomcat后在浏览器输入http://localhost:8080/geoserver/web/即可打开geoserver,默认的用户名为:admin,密码为:geoserver,登陆后效果如图10。
发布地图服务
1.发布shp格式地图
1.1新建工作空间
点击“工作空间”→“添加新的工作空间”(图11),在出现的页面中添加工作空间的名称(尽量用英文)和对应的url(这里输入的url为http://www.metarnet.com/gis)并将其设置为默认工作空间。
1.2新建数据集
数据准备,在geoserver文件夹内的data文件夹内新建一个文件夹t_shapes(图13)用来存放shp数据,将准备好的矢量数据全部放在此文件夹内(shp文件最好以英文的方式命名)。
点击“所有数据集”→“添加一个新的数据集”,在出现的页面中选择“矢量数据源”→“Directory
of spatial files (shapefiles)”,将整个文件夹的shp文件添加进来。点击“Directory of spatial
files (shapefiles)”后,在出现的页面选择好工作空间,设置好数据源的名称,然后选择数据源的路径。
单击“保存”后,会出现“新图层”界面,可以看到已经加载进入的shp文件图层,点击“发布”,可以选择某个地图进行发布。
在弹出的“编辑图层”界面内设置好名称、标题和关键字,下拉,选择“geoserver提供给客户端的SRS”(即选择坐标系),这里选择“EPSG:4326”(即WGS84坐标)和生成边界框的坐标(可点击自动生成)。
注:这两个部分是必须要填写的,不可缺少。单击“保存”后会出现“所有图层”界面,点击“添加一个新资源”,在“新图层”界面选择之前导入的数据源。
最后,点击“Layer预览”,可以查看到已经发布的图层,点击“OpenLayers”即可预览发布的地图。同时,我们也可以在“所有格式”一栏点击“选择一个”下拉菜单将发布的地图导出成kml、jpg、tif等多种格式。如果想要同时发布多个图层的话,只需要在预览的链接内多增加几个图层就行了,示例:
原链接:
http://localhost:8080/geoserver/TEST/wms?service=WMS&version=1.1.0&request=GetMap&layers=TEST:Build&styles=&bbox=114.1510858193551,26.307060704787773,115.43754023979032,27.769242374236235&width=450&height=512&srs=EPSG:4326&format=application/openlayers
修改后增加的链接:
http://localhost:8080/geoserver/TEST/wms?service=WMS&version=1.1.0&request=GetMap&layers=TEST:Build,TEST:City&styles=&bbox=114.1510858193551,26.307060704787773,115.43754023979032,27.769242374236235&width=450&height=512&srs=EPSG:4326&format=application/openlayers
修改后的链接增加了一个图层,图层名称为City(注:此图层必须为已发布的图层),修改后的地图加载如图。
2.发布tif格式卫星图
类似于发布shp格式的地图,发布tif卫星图之前也要在geoserver的data文件夹下新建一个文件夹,命名“t_raster”。在添加数据集的时候选择“删格数据集”→“GeoTIFF”,其余设置类比发布shp地图。
发布后,在“Layer预览”中找到发布的tif图片,点击“OpenLayers”即可预览,发布的卫星地图。
说明:此处发布的tif图片大小不宜超过2G,超过之后会影响数据的读写。
openlayers6结合geoserver利用WFS服务实现图层删除功能(附源码下载)
内容概览
1.openlayers6结合geoserver利用WFS服务实现图层删除功能
2.源代码demo下载
效果图如下:
本篇主要是在上一篇openlayers6结合geoserver利用WFS服务实现图层新增功能(附源码下载)基础上实现的,openlayers6通过调用geoserver发布的地图服务WFS来达到图层删除记录的目的。与GeoServer的WFS进行基于Rest交互关键就在于请求参数,值得注意的是这些请求最好采用POST方法发送。查询可以采用json,但增加,删除,修改都只能采用XML形式Transaction
- 部分核心代码,完整的见源码demo下载
//叠加geoserver发布的wms图层 var geoserverUrl = ‘http://localhost:8080/geoserver/WebGIS‘; var wmsSource = new TileWMS({ url: geoserverUrl+‘/wms‘, params: {‘LAYERS‘: ‘WebGIS:testLayer‘, ‘TILED‘: true}, serverType: ‘geoserver‘, crossOrigin: ‘anonymous‘ }); var wmsLayer = new TileLayer({ source: wmsSource }); var view = new View({ projection: ‘EPSG:4326‘, center: [113.90271877, 22.95186415], zoom: 13 }) var map = new Map({ target: ‘map‘, layers: [ new TileLayer({ source: new XYZ({ //url: ‘https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png‘ url: ‘http://cache1.arcgisonline.cn/arcgis/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}‘ }) }), wmsLayer ], overlays: [overlay], view: view }); //监听地图鼠标事件 map.on(‘singleclick‘,function(e) { if (e.dragging) { return; } var feature =map.forEachFeatureAtPixel(e.pixel, function(feature) { return feature; }); //console.log(‘feature‘,feature); //console.log(‘e‘,e); if(feature==undefined){ //隐藏气泡窗口 overlay.setPosition(undefined); closer.blur(); } var viewResolution = /** @type {number} */ (view.getResolution()); var url = wmsSource.getFeatureInfoUrl( e.coordinate, viewResolution, ‘EPSG:4326‘, {‘INFO_FORMAT‘: ‘application/json‘}); if (url) { fetch(url) .then(function (response) { return response.json(); }) .then(function (json) { //document.getElementById(‘info‘).innerHTML = html; console.log(‘json‘,json); var coordinate = e.coordinate; if(json.features.length>0){ var properties = json.features[0].properties; var id = json.features[0].id; var elements = ‘名称:‘+properties.estate_num+‘</br>备注:‘+properties.holder_nam; elements += ‘<button type="button" id="deleteBtn">删除</button>‘; content.innerHTML = elements; overlay.setPosition(coordinate); setTimeout(function () { $("#deleteBtn").unbind("click"); $("#deleteBtn").click(function(){ console.log(‘删除按钮点击事件‘); if(id) { deleteLayerRecord(id,callbackDeleteLayersWFSService); } }); }, 500) } }); } }) /*图层删除记录 *@method deleteLayerRecord *@param fid 记录fid值 *@return callback */ function deleteLayerRecord(fid, callback){ var xml = ‘<Transaction xmlns="http://www.opengis.net/wfs" service="WFS" version="1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/WFS-basic.xsd">‘; ……
更多详情见下面链接文章:
文章提供源码,对本专栏感兴趣的话,可以关注一波
以上是关于如何利用GeoServer发布卫星地图服务的主要内容,如果未能解决你的问题,请参考以下文章
新人求助如何在geoserver上发布地图让其他计算机也能访问