ArcGIS 10.8.1之后发布栅格数据的MapServer 动态工作空间 替换数据源渲染问题
背景
经过测试,Server 10.8.1、11.0、11.1发布相关服务设置动态空间之后,前端都无法自动读取同名的clr色彩映射表文件进行渲染,服务都是由ArcGIS Pro进行发布。
原因
基于ArcMap发布的服务才支持,但是10.8.1之后不支持ArcMap发布服务。自动读取clr色彩映射表文件,需要ArcMap Runtime后台支持,已废弃,可以加载切换数据源,但是不支持渲染,需要采用新的开发方式。

首先,如何发布服务并开启动态空间?
通过Pro发布服务后在Manager设置开启即可。

测试示例代码:
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>加载ArcGIS Server服务</title><!-- <link rel="stylesheet" href="https://js.arcgis.com/4.25/esri/themes/light/main.css"><script src="https://js.arcgis.com/4.25/"></script> --><link rel="stylesheet" href="https://js.arcgis.com/4.32/esri/themes/light/main.css" /><script src="https://js.arcgis.com/4.32/"></script><style>#viewDiv {height: 100vh;width: 100%;}</style>
</head>
<body><div id="viewDiv"></div><script>require(["esri/Map","esri/views/MapView","esri/layers/MapImageLayer"], function(Map, MapView, MapImageLayer) {// 创建一个地图实例const map = new Map({basemap: "streets"});// 创建一个地图视图实例const view = new MapView({container: "viewDiv",map: map,center: [120.0916129,30.2487992],zoom: 8});// 定义 token//const tkstr = "iN8hBNamZvCpIeo_-QD-dHAg8afm1y4ZUWuj1RmswuM";// 创建一个动态地图服务图层const dynamicLayer = new MapImageLayer({//url: "http://xxxx:6080/geoscene/rest/services/demstyletest/MapServer",url: "http://xxxx:6080/geoscene/rest/services/demstyletest/MapServer",sublayers: [{id: 0,source: {type: "data-layer",dataSource: {type: "raster",workspaceId: "kkk123",dataSourceName: "aster84.tif"}}}]});// 将地图服务图层添加到地图中map.add(dynamicLayer);});</script>
</body>
</html>
动态空间路径下即使,存放了同名clr色彩映射表,也是不支持读取渲染的。


解决方案
1. 导出为 RGB 方案的栅格数据
这种方法主要针对较为固定的成果数据,如果渲染也是动态的则无法满足。
具体方法可以参考:https://www.cnblogs.com/wigis/p/11065631.html
2. 将数据作为在线数据资源,使用ImageTileLayer加载
这种方法主要针对用户查看的栅格数据,tif栅格数据可以放在Tomcat或其他服务器都可以,渲染通过前端设置render控制,示例代码可以参考:
<html><head><meta charset="utf-8" /><meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" /><title>hello</title><style>html,body,#viewDiv {padding: 0;margin: 0;height: 100%;width: 100%;}</style><linkrel="stylesheet"href="https://js.arcgis.com/4.30/esri/themes/light/main.css"/><script src="https://js.arcgis.com/4.30/"></script><script>require(["esri/config","esri/WebMap","esri/views/MapView","esri/views/SceneView","esri/layers/ImageryTileLayer","esri/layers/TileLayer","esri/layers/support/RasterFunction","esri/renderers/RasterShadedReliefRenderer","esri/smartMapping/raster/support/colorRamps","esri/renderers/RasterStretchRenderer","esri/rest/support/MultipartColorRamp","esri/rest/support/AlgorithmicColorRamp","esri/Color",], function(esriConfig,Map, MapView, SceneView,ImageryTileLayer, TileLayer, RasterFunction, RasterShadedReliefRenderer, colorRamps, RasterStretchRenderer, MultipartColorRamp, AlgorithmicColorRamp, Color) {const colorRamp = new MultipartColorRamp({colorRamps: [new AlgorithmicColorRamp({fromColor: new Color([20, 100, 150, 255]),toColor: new Color([70, 0, 150, 255])}),new AlgorithmicColorRamp({fromColor: new Color([70, 0, 150, 255]),toColor: new Color([170, 0, 120, 255])}),new AlgorithmicColorRamp({fromColor: new Color([170, 0, 120, 255]),toColor: new Color([230, 100, 60, 255])}),new AlgorithmicColorRamp({fromColor: new Color([230, 100, 60, 255]),toColor: new Color([255, 170, 0, 255])}),new AlgorithmicColorRamp({fromColor: new Color([255, 170, 0, 255]),toColor: new Color([255, 255, 0, 255])})]});const stretchRenderer = new RasterStretchRenderer({colorRamp: colorRamp,type: "raster-stretch",bandIds: [0], // 使用第一个波段stretchType: "min-max", // 最小值-最大值拉伸statistics: [[0, 255]], // 波段的最小值和最大值gamma: [1] // Gamma 值});let layer = new ImageryTileLayer({url: "http://localhost/data/red.tif",renderer: stretchRenderer})const map = new Map({layers: [layer]});const view = new MapView({map: map,container: "viewDiv"});function updateImageTileLayerUrl(newUrl) {// 移除旧图层map.remove(layer);// 创建新图层let newLayer = new ImageryTileLayer({url: newUrl,renderer: stretchRenderer});// 将新图层添加到地图map.add(newLayer);}let btn = document.getElementById("click")btn.onclick = () => {updateImageTileLayerUrl("http://127.0.0.1:5500/static/fanred.tif")}})</script></head><body><div id="viewDiv"></div><button id="click">change</button></body>
</html>

2. 发布单景栅格数据的 ImageServer
需要通过代码层面,替换服务下的同名栅格数据源,同样,渲染也需要通过前端renderer控制。可以参考:
https://blog.csdn.net/suntongxue100/article/details/130303795?spm=1011.2415.3001.5331
相关文章:
ArcGIS 10.8.1之后发布栅格数据的MapServer 动态工作空间 替换数据源渲染问题
背景 经过测试,Server 10.8.1、11.0、11.1发布相关服务设置动态空间之后,前端都无法自动读取同名的clr色彩映射表文件进行渲染,服务都是由ArcGIS Pro进行发布。 原因 基于ArcMap发布的服务才支持,但是10.8.1之后不支持ArcMap发…...
Java集合框架深度剖析:从数据结构到实战应用
引言 Java集合框架是Java开发中的核心组件之一,其设计目标是提供高性能、高复用性的数据容器。无论是数据处理、缓存设计还是高并发场景,集合框架都扮演着关键角色。本文将从List、Map、Set三大核心接口出发,深入剖析其主流实现类࿰…...
【MySQL】监控MySQL
目录 使用状态变量监控MySQL 使用性能模式(Performance Schema)监控MySQL 1.性能模式 2.性能模式设置表 3.sys模式 使用状态变量监控MySQL 使用 show status 语句评估系统运行状况。 可以添加范围修饰符global或session来显示全局或本地状态信息。…...
涅槃上岸,入陕进军,复试全程流程开启!
复试决胜局,整装待发,上岸西电! 线下复试注意事项、全流程、录取后西安旅游提前告知! 过两天考研复试笔试、机试(如果有)、面试就要开始了,我们需要准备很多东西,学长从以下几个方面…...
msyql--基本操作之运维篇
检查 root 用户的权限 查看该用户针对这个数据库的权限 -- 如果在终端连接mysql时需要 mysql -u root -p -- 查看用户权限 SELECT user, host FROM mysql.user WHERE user root;可以看的出来root有他的访问权限,如过没有localhost或者% 说明没有访问权限 添加…...
鸿蒙开发:openCustomDialog关闭指定Dialog
前言 本文基于Api13 openCustomDialog弥补了CustomDialogController在使用上存在的诸多限制,实现了可以在任意位置上弹出,可以说是非常的方便;但是,在使用的时候遇到了一些小阻碍,比如一个页面中可能存在多个弹窗&…...
es6 fetch
对比XHR 🛠️ fetch 所有配置项 fetch(url, {// 核心配置 method: GET, // HTTP 方法: GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONSheaders: { // 请求头(支持 Headers 对象或普通对象)Content-Type: applicati…...
Apache Tomcat RCE漏洞(CVE-2025-24813)
一,漏洞描述 该漏洞在于 Tomcat 在处理不完整PUT请求上传时,会使用了一个基于用户提供的文件名和路径生成的临时文件。 二,漏洞条件 1,默认 Servlet 启用了写权限(默认禁用) 2,启用了部分PUT…...
Apache HttpClient使用
一、Apache HttpClient 基础版 HttpClients 是 Apache HttpClient 库中的一个工具类,用于创建和管理 HTTP 客户端实例。Apache HttpClient 是一个强大的 Java HTTP 客户端库,用于发送 HTTP 请求并处理 HTTP 响应。HttpClients 提供了多种方法来创建和配…...
智能汽车图像及视频处理方案,支持视频星轨拍摄能力
美摄科技作为智能汽车图像及视频处理领域的先行者,正以革新性的技术引领着行业的未来发展。美摄科技智能汽车图像及视频处理方案,一个集高效性、智能化、画质增强于一体的创新解决方案,旨在重塑智能汽车图像画质的新标准,并支持前…...
【微服务架构】本地负载均衡的实现(基于随机算法)
前言 负载均衡 概念:一种将网络流量或业务请求均匀分配到多个服务器或服务实例上的技术,旨在提高系统的可用性、性能和可伸缩性。作用: 提高性能:通过将请求分散到多个实例上,避免单个实例因请求过多而过载ÿ…...
C盘急救实录:从爆红到畅快
极速救援通道(懒人专享) 老规矩,先上王炸方案!”小番茄C盘清理器”直达链接:https://cclean-cdn.xkbrowser.com/cleanmaster/FanQieClean_13046_st.exe 这个神器有三绝: 智能扫描引擎:能识别23…...
从零开始理解基于深度学习的语义分割模型:RCA与RCM模块的实现
从零开始理解基于深度学习的语义分割模型:RCA与RCM模块的实现 随着深度学习技术的发展,图像分割任务取得了长足的进步。本文将从一个具体的PyTorch代码实例出发,带大家了解一种 novel 的语义分割网络架构——RCA(Rectangular Self-Calibration Attention)和 RCM(Rectang…...
openGl片段着色器的含义
片段着色器的含义及代码中的应用说明: 1. 片段着色器的基本概念 片段着色器(Fragment Shader)是OpenGL着色器管线中的关键组件,主要用于计算屏幕空间中每个片段(对应像素)的最终颜色。它是图形渲染流程的…...
ROS2 部署大语言模型节点
4GB GPU的DeepSeek-Coder 1.3B模型,并且它已经被量化或优化过。以下是具体的步骤: 安装必要的依赖项: pip install transformers torch grpcio googleapis-common-protos创建一个新的ROS 2包: cd ~/ros2_ws/src ros2 pkg creat…...
UART转APB模块ModelSim仿真
一、简介 之前介绍过一个UART转AHB模块,这个代码的框架有个好处,就是FPGA内总线接口比较容易修改成其他总线接口。下图是UART转AHB模块中子模块uart_ahb_mst的框图,主要有三个状态机: (1) UART_RX_FSM将接收…...
【LeetCode 题解】算法:4.寻找两个正序数组的中位数
1. 引言:挑战 LeetCode 经典算法题 在算法这片广袤无垠的天地里,一道道经典题目宛如夜空中熠熠生辉的星辰,持续吸引着开发者们投身其中,不断探索。今天,我们继续将目光聚焦于 LeetCode 平台上一道极具代表性的题目&am…...
基于 SGLang 部署 Qwen2.5 7B 模型
本文将详细介绍如何使用 SGLang 快速部署 Qwen2.5 7B 模型,并深入探讨 SGLang 的关键性能优化技术,以及预期可以达到的延迟和吞吐量。 1. SGLang 框架介绍 SGLang 旨在解决 LLM 服务中的核心挑战: 高延迟: LLM 推理通常需要较长的计算时间,导致响应延迟高。低吞吐量: 由…...
Cesium 自定义路径导航材质
cesium 自定义路径导航纹理图片随便更换,UI 提供设计图片即可达到效果; 打开小马的weix 关注下 搜索“技术链” 回复关键词《《路径》》获取原始代码; 拿到就能用轻松解决!帮忙点个关注吧!...
JDBC 连接字连接 KingbaseES支持主从负载均衡参数说明。
JDBC 连接字符串是用于连接 KingbaseES(人大金仓数据库)的,支持主从负载均衡。让我们逐一解析各个参数的作用,并探讨如何调整到最优。 参数解析 jdbc:kingbase8://10.10.14.19:54321/xxx_onlinejdbc:kingbase8://:指定…...
Java运行时的堆、栈和方法区
目录 1. 堆(Heap)存储内容与线程关系 2. 栈(Stack)存储内容与线程关系 3. 方法区(Method Area)存储内容与线程关系变动 1. 堆(Heap) 存储内容 对象实例(对象实例的全部数…...
【江协科技STM32】BKP备寄存器RTC实时时钟(学习笔记)
BKP备寄存器 BKP简介 BKP(Backup Registers)备份寄存器BKP可用于存储用户应用程序数据。当VDD(2.0~3.6V)电源被切断,他们仍然由VBAT(1.8~3.6V)维持供电。当系统在待机模式下被唤醒࿰…...
卷积神经网络 - 参数学习
本文我们通过两个简化的例子,展示如何从前向传播、损失计算,到反向传播推导梯度,再到参数更新,完整地描述卷积层的参数学习过程。 一、例子一 我们构造一个非常简单的卷积神经网络,其结构仅包含一个卷积层和一个输出…...
亮数据爬取API爬取亚马逊电商平台实战教程
前言 在当今数据驱动的商业环境中,企业需要快速、精准地获取互联网上的公开数据以支持市场分析、竞品调研和用户行为研究。然而,传统的手动网页爬取方式面临着诸多挑战:IP封锁、验证码干扰、网站结构频繁变更,以及高昂的运维成本…...
[CLS] Token 在 ViT(Vision Transformer)中的作用与实现
[CLS] Token 在 ViT(Vision Transformer)中的作用与实现 1. 什么是 [CLS] Token? [CLS](classification token)是Transformer模型中一个可学习的嵌入向量,最初在 BERT(Bidirectional Encoder …...
基于网启PXE服务器的批量定制系统平台
项目概述 1.需求 公司新购了一批服务器和台式机,需要为台式机和服务器安装系统,一部分需要安装国产OpenEuler,一部分要求安装CentOS 7.9,同时也要满足定制化需求,即按要求分区安装相应软件。 2.使用开源软件 &…...
Reactor/Epoll为什么可以高性能?
在 Reactor 模式中使用 epoll_wait 实现低 CPU 占用率的核心原理是 事件驱动的阻塞等待机制,而非忙等待。以下通过分步骤解析其工作原理和性能优势: void network_thread() {int epoll_fd epoll_create1(0);epoll_event events[MAX_EVENTS];// 添加U…...
-JavaEE 应用Servlet 路由技术JDBCMybatis 数据库生命周期
#JavaEE-HTTP-Servlet& 路由 & 周期 参考: https://blog.csdn.net/qq_52173163/article/details/121110753 1 、解释 Servlet 是运行在 Web 服务器或应用服务器上的程序 , 它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数…...
在本地Windows机器加载大模型并生成内容
本篇演示在本地机器下载和加载大模型并获取AI产生的内容。简单起见,使用的大模型是Qwen2.5-0.5B-Instruct,整个模型的所有文件不到1G。 Qwen2.5-0.5B-Instruct 是阿里巴巴云 QWen 团队基于 Transformer 架构开发的轻量级指令调优语言模型,专…...
热门面试题第14天|Leetcode 513找树左下角的值 112 113 路径总和 105 106 从中序与后序遍历序列构造二叉树 (及其扩展形式)以一敌二
找树左下角的值 本题递归偏难,反而迭代简单属于模板题, 两种方法掌握一下 题目链接/文章讲解/视频讲解:https://programmercarl.com/0513.%E6%89%BE%E6%A0%91%E5%B7%A6%E4%B8%8B%E8%A7%92%E7%9A%84%E5%80%BC.html 我们来分析一下题目&#…...
