如何利用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发布web地图服务

利用GeoServer建立本地二维地图服务器

新人求助如何在geoserver上发布地图让其他计算机也能访问

openlayers6结合geoserver实现地图矢量瓦片(附源码下载)

geoserver发布地图服务WMTS

GeoServer中WMSWFS的请求规范(转载)