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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/73780.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/73780.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/73780.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vscode在使用 alt + tab 切換程序窗口時,輸入法總是自動變為中文模式

因為需要在 vscode 中編寫代碼&#xff0c;將輸入法設為英文模式&#xff0c;但是用 alt tab 切換到瀏覽器查看文檔&#xff0c;此時瀏覽器也是英文模式&#xff0c;但是再切回 vscode 后就變為中文模式了&#xff0c;需要使用 shift 鍵切換為英文模式&#xff0c;一次兩次還好…

【Linux加餐-網絡命令】

一、Ping命令 Ping 是一種網絡工具&#xff0c;用于測試主機之間的連通性。它通過發送 ICMP&#xff08;Internet Control Message Protocol&#xff09;回顯請求 報文到目標主機&#xff0c;并等待目標主機返回 ICMP 回顯應答 報文&#xff0c;從而判斷網絡是否通暢以及測量往…

Maven工具學習使用(六)——聚合與繼承

Maven的聚合特性能夠把項目的各個模塊聚合在一起構建,而Maven的繼承特性則能幫助抽取個模塊相同的依賴和插件等配置,在簡化POM的同時,還能促進各個模塊配置的一致性。 一般說來一個項目的子模塊都應該使用同樣的groupId,如果他們一起開發和發布,還應該使用同樣的version,…

vulhub靶場jangow-01-1.0.1

啟動靶機時點shift停在這個界面 點e進入編輯頁面&#xff0c;把ro改成rw signie init/bin/bash Ctrlx保存&#xff0c;ip a查看網卡信息 vim /etc/network/interfaces 把enp0s17改為ens33&#xff0c;保存退出 重啟靶機&#xff0c;nmap掃ip ip為192.168.93.179 nmap掃端口 掃…

C++11QT復習 (四)

Day6-1 輸入輸出流運算符重載&#xff08;2025.03.25&#xff09; 1. 拷貝構造函數的調用時機 2. 友元2.1 友元函數 3. 輸入輸出流運算符重載3.1 關鍵知識點3.2 代碼3.3 關鍵問題3.4 完整代碼 4. 下標訪問運算符 operator[]4.1 關鍵知識點4.2 代碼 5. 函數調用運算符 operator…

數倉架構告別「補丁」時代!全新批流一體 Domino 架構終結“批流縫合”

在數字化轉型的浪潮中&#xff0c;企業對數據處理的需求日益復雜多變&#xff0c;傳統的批處理和流處理架構已難以滿足日益增長的性能和時效性要求。在此背景下&#xff0c;YMatrix CEO 姚延棟發布了深度文章《數倉架構告別「補丁」時代&#xff01;全新批流一體 Domino 架構終…

一文詳解QT環境搭建:ubuntu20.4安裝配置Qt5

隨著軟件開發技術的不斷進步&#xff0c;跨平臺應用程序的需求日益增長&#xff0c;開發者們面臨著如何在不同操作系統之間保持代碼的一致性和效率的問題。Qt作為一個成熟的跨平臺C框架&#xff0c;在這方面提供了卓越的支持&#xff0c;不僅簡化了GUI應用程序的創建過程&#…

安全+低碳+高效:Acrel-3000助力企業打造未來型電能管理體系-安科瑞黃安南

一 背景 電能因為方便傳輸、易于轉換、便于控制等特性&#xff0c;成為廣大企事業單位生產、辦公最主要的能量來源。雙碳背景下&#xff0c;由于電能清潔、高效、零排放的特點&#xff0c;能源消費側將逐步以電代煤、以電代油、以電代氣&#xff0c;形成以電為中心的能源消費體…

Docker 安裝 RabbitMQ

以下是在Docker中安裝RabbitMQ并實現配置、數據、日志文件映射的完整步驟。 步驟 1&#xff1a;創建本地目錄結構 # 創建配置、數據、日志目錄 mkdir -p /root/docker/rabbitmq/{conf,data,logs}# 目錄結構說明&#xff1a; # - conf: 存放自定義配置文件 # - data: 持久化存儲…

SAP-ABAP:SAP數據集成全場景技術指南(BAPI、RFC、IDOC、BATCHJOB、ODATA、WEBSERVICE):從實時交互到批量處理

SAP數據集成全場景技術指南:從實時交互到批量處理 #mermaid-svg-hpPMerJYUerla0BJ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hpPMerJYUerla0BJ .error-icon{fill:#552222;}#mermaid-svg-hpPMerJYUerla0BJ .er…

運維規則之總結(Summary of Operation and Maintenance Rules)

運維規則之總結 在運維領域&#xff0c;經驗和流程往往決定了系統的穩定性與可靠性。一個運維人&#xff0c;總結出了以下10條運維規則&#xff0c;涵蓋了從基礎管理到高級策略的全面內容&#xff0c;旨在幫助運維人員更好地應對各種挑戰&#xff0c;確保系統的平穩運行。 1.…

⑦(ACG-網絡配置)

網絡配置是指對計算機網絡的各種參數進行設置和調整&#xff0c;以實現網絡正常運行和高效通信。網絡配置包括多方面的內容&#xff0c;常見的配置包括&#xff1a; 1. IP地址設置&#xff1a;IP地址是設備在網絡中的身份標識&#xff0c;設置IP地址是網絡配置的基礎&#xff…

Redis學習二

Redis和數據庫數據一致性問題 Redis作為緩存分兩種情形 只讀緩存, 只讀緩存無需考慮數據更新問題, Redis中有則返回Redis中的數據, Redis無則查詢數據庫讀寫緩存 同步直寫策略異步緩寫策略 數據讀取流程: 正常回寫Redis代碼流程: public Object getDataById(String id) {…

深入理解 Linux 文件權限:從 ACL 到擴展屬性,解剖底層技術細節與命令應用

Linux 以其強大而精密的文件權限和屬性管理機制著稱&#xff0c;這一體系不僅是系統安全的關鍵基石&#xff0c;還為靈活性和擴展性提供了堅實支撐。從傳統的九位權限模型到訪問控制列表&#xff08;ACL&#xff09;、擴展文件屬性&#xff08;Extended Attributes&#xff09;…

劍指Offer35- - 鏈表

1. 題目描述 這題題意感覺說的不是很清楚&#xff0c;容易讓人產生歧義&#xff01;其實題意很簡單&#xff0c;給你一個鏈表 head&#xff0c;你深拷貝它&#xff0c;然后返回即可&#xff0c;注意不能修改原鏈表 /* // Definition for a Node. class Node { public:int val;N…

C 語言常用關鍵字詳解:static、const、volatile

C 語言常用關鍵字詳解&#xff1a;static、const、volatile 文章目錄 C 語言常用關鍵字詳解&#xff1a;static、const、volatile1. static 關鍵字1.1 用于局部變量示例&#xff1a; 1.2 用于全局變量示例&#xff1a; 1.3 用于函數示例&#xff1a; 2. const 關鍵字2.1 用于局…

Centos7本地部署阿里Qwen2-7B模型

1.從hagging face下載模型 2.把下載的模型文件&#xff0c;放到/usr/local/Qwen2-7B目錄下 3.創建虛擬環境&#xff0c;安裝依賴 1.環境安裝 sudo yum update -y sudo yum install -y python3 python3-pip git 2.創建虛擬環境并激活 python3 -m venv qwen2_env source qwen2_…

群暉監控套件通過ONVIF協議添加海康攝像頭

1. 首先登錄錄像機 通道管理 找到每個攝像頭的IP地址 2. 登錄某個攝像頭 配置 3. 添加用戶名&#xff08;注意不能是admin&#xff09; 設置賬戶密碼 用戶類型選管理員 4. 群暉里面添加攝像頭&#xff0c;自動搜索&#xff0c;添加剛剛那個IP的攝像頭 5. 驗證…

【C++】 —— 筆試刷題day_8

一、求最小公倍數 題目解析 題目很簡單&#xff0c;給定兩個數a和b求它們的最小公倍數。 算法思路 對于求兩個數的最小公倍數問題&#xff0c;想必已經非常熟悉了&#xff1b; 在之前學校上課時&#xff0c;記得老師提起過&#xff0c;最小公倍數 兩個數的乘積 除以最大公約數…

MTK Android12-Android13 設置系統默認語言

Android 系統&#xff0c;默認語言 文章目錄 需求&#xff1a;場景 參考資料實現方案實現思路編譯腳本熟悉-平臺熟悉mssi_64_cnkernel-4.19 解決方案修改文件-實現方案 源碼分析PRODUCT_LOCALES 引用PRODUCT_DEFAULT_LOCALE 定義get-default-product-locale 方法定義PRODUCT_DE…