Windows更新或者安装应用导致的ArcGIS Server发布服务失败解决方案及WCS影像图层加载到网页地图后的透明度设置
1、前提环境
电脑安装了10.2.2版本的ArcGIS Desktop、ArcGIS Server(可访问http://localhost:6080/arcgis/manager/服务管理器)
2、ArcGIS中发布服务到ArcGIS Server失败的原因及解决方案
通常来说,在ArcGIS Desktop中将矢量要素类可以发布为WFS服务,将栅格影像可以发布为WCS服务,将单个地理处理GP工具或自定义模型(包含多个GP工具)发布为WPS服务,还可将地图文档发布为WMS地图服务,但可能在发布服务时会遇到发布失败或者ArcGIS Server中的服务管理器出现卡顿及反应缓慢、电脑安装其他应用后导致ArcGIS Server服务端口被占用等等问题,这通常是因为电脑安装了Windows更新后导致的。
上图中,ArcGIS Server Manager中的地理处理服务状态为正在停止…,这说明服务器异常,肯定无法发布服务(当然也可以在ArcMap中直接发布服务测试ArcGIS Server是否正常运行)。
解决办法:这时可以考虑安装补丁ArcGIS Server Geoprocessing Service Startup Patch
确保电脑已经安装了ArcGIS Server,选择好对应版本的补丁包,这里选择了ArcGIS-1022-S-GSS-Patch.msp,下载后保存到了ArcGIS Server安装目录下。
双击补丁进行安装,安装完成后需要按照后续步骤重启ArcGIS Server对应的服务.
打开任务管理器,点击其中的服务,找到ArcGIS Server后选中右键,选择重新启动,
然后浏览器访问ArcGIS Server Manager,输入用户名和密码(这里用户名:arcgis 密码:123456)登录进去,可以看到System下的地理处理服务状态为已启动.,说明ArcGIS Server服务器正常运行,可以正常发布服务了。
3、利用ArcMap将tif图像发布为ArcGIS Server上的WCS影像服务
第一步,用ArcMap打开tif图像,在Catalog中右键选择共享为影像服务,
弹出Share as Service窗口,选择Publish a service后点击下一步,
在Publish a Service窗口中,选择本地服务器并输入服务名称后点击下一步,
在publish a Service窗口中可以使用现存的root根目录,也可新建目录,点击Continue,
在Service Editor窗口的Capabilities中选中WCS,
在Item Description中输入Summary、Tags和Desciption,
点击analyze后,在下方查看分析结果
点击preview可以进行预览,
点击Publish进行发布,弹出Copying Data to Server选择tif影像文件后点击OK,
最后,服务发布成功。
此时影像服务发布成功,在浏览器中打开ArcGIS Server Manager查看发布的影像服务,
在功能的影像配置中获取影像服务的REST URL地址:http://localhost:6080/arcgis/rest/services/MLClassification/ImageServer
4、在ArcGIS网页地图中加载WCS影像图层并设置透明度
对于ArcGIS 网页地图来说,发布在ArcGIS Server上的WCS影像服务可以通过url在底图上添加ImageryLayer图层来显示,具体在ArcGIS API for JavaScript中参考ImageryLayer - client side rendering rules,
在具体的ImageryLayer的属性设置中查找到了Opacity属性来设置ImageryLayer的透明度,数值在0~1之间。对于图层的属性设置可以在图层的构造函数初始化时直接赋值。
在ArcGIS 网页地图中加载影像图层效果如下:
网页地图使用的servermap.jsp文件:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>MapLayer</title>
<link rel="stylesheet" href="https://js.arcgis.com/4.16/esri/themes/light/main.css">
<script src="https://js.arcgis.com/4.16/"></script>
<style>
html,
body,
#viewDiv {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
}
</style>
</head>
<body>
<%
String url = request.getParameter("url");
%>
<div id="viewDiv"></div>
</body>
<script>
require([
"esri/Map",
"esri/views/MapView",
"esri/layers/ImageryLayer",
"dojo/domReady!"
],
function(
Map, MapView,
ImageryLayer
) {
/********************
* Create image layer
********************/
var layer = new ImageryLayer({
url: "http://localhost:6080/arcgis/rest/services/MLClassification/ImageServer",
format: "jpgpng", // server exports in either jpg or png format
opacity: 0.5 //影像图层透明度设置
});
/**************************
* Add image layer to map
*************************/
var map = new Map({
basemap: "streets-navigation-vector",
layers: [layer]
});
//map.add(maplayer);
var view = new MapView({
container: "viewDiv",
map: map,
center: [118.536450, 36.684521],
zoom: 15
});
});
</script>
</html>