亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

ArcGIS 柵格函數(shù)在線調(diào)用詳解

894974231 / 1732人閱讀

摘要:使用柵格函數(shù)支持直接在前端使用柵格函數(shù)來(lái)重新渲染影像服務(wù)。針對(duì)數(shù)據(jù)在柵格函數(shù)模版編輯器中使用渲染地貌函數(shù),并且設(shè)計(jì)好結(jié)果的渲染方式。配置柵格函數(shù)模版可以在兩種情況下進(jìn)行。

ArcGIS 柵格函數(shù)在線調(diào)用詳解

導(dǎo)讀:ArcGIS從10.0版本開始引用鑲嵌數(shù)據(jù)集,并且第一次在影像中加入柵格函數(shù)(raster functions),使得影像的呈現(xiàn)和信息提取與GIS緊密的結(jié)合起來(lái),簡(jiǎn)單的影像功能都可以在ArcGIS中實(shí)現(xiàn)(當(dāng)然了,如果是專業(yè)的影像處理,還是建議在ENVI這類專業(yè)的遙感軟件下進(jìn)行)。ArcGIS軟件向來(lái)注重一體化,因此,在桌面軟件ArcMap中實(shí)現(xiàn)的功能都會(huì)逐漸遷移到服務(wù)器中。本文著重從桌面端功能介紹轉(zhuǎn)移到服務(wù)器端及Web開發(fā),旨在說(shuō)明ArcGIS軟件的柵格函數(shù)技術(shù)路線。 BY 李遠(yuǎn)祥

ArcMap中的柵格函數(shù)調(diào)用

在ArcMap中可以對(duì)任何影像格式,包括柵格數(shù)據(jù)集、柵格目錄和鑲嵌數(shù)據(jù)集。在菜單欄--【窗口】--【影像分析】中可以調(diào)出影像分析面板,如下圖所示

影像分析面板可以實(shí)現(xiàn)常見的圖像處理功能,如果是熟悉Photoshop等軟件,那就會(huì)發(fā)現(xiàn)一些非常數(shù)據(jù)的名詞,如對(duì)比度、亮度、透明度、銳化、平滑、交互式拉伸等。但其最大的特色是柵格函數(shù),隨著每個(gè)版本的更新,柵格函數(shù)會(huì)逐漸增加。

在【影像分析】面板中選中影像數(shù)據(jù)之后,可以找到柵格函數(shù)的入口,包含了非常多的處理函數(shù),如下圖所示

這些函數(shù)不同于ToolBox工具,Toolbox工具的特點(diǎn)就是每處理完一次都會(huì)生成一個(gè)新的柵格數(shù)據(jù)作為結(jié)果,整個(gè)過(guò)程會(huì)進(jìn)行影像計(jì)算、重采樣等,并占多帶帶占用存儲(chǔ),一般處理時(shí)間比較長(zhǎng)。柵格函數(shù)的性質(zhì)是動(dòng)態(tài)處理,函數(shù)與柵格數(shù)據(jù)的關(guān)系是引用關(guān)系,有點(diǎn)類似于PS里面的濾鏡。在引用函數(shù)調(diào)用的時(shí)候不會(huì)生成新的數(shù)據(jù),ArcMap會(huì)根據(jù)函數(shù)的設(shè)定動(dòng)態(tài)對(duì)影像進(jìn)行渲染,而且性能相當(dāng)高。同時(shí)函數(shù)也是可以進(jìn)行相互疊加的。

例如下圖針對(duì)Landsat數(shù)據(jù)進(jìn)行波段提取,提取第四波段??梢栽跂鸥窈瘮?shù)中直接使用【波段提取函數(shù)】,如下圖

將波段組合設(shè)置為4,結(jié)果即馬上生成一個(gè)動(dòng)態(tài)的渲染圖層,至顯示第四波段數(shù)據(jù),如下圖所示

如果是DEM數(shù)據(jù),柵格函數(shù)還支持如坡度、坡向、山體陰影等操作。如下圖就是對(duì)DEM進(jìn)行的山體陰影的操作。

imageserver 中的影像

將影像發(fā)布為影像服務(wù),同樣也支持柵格函數(shù)。影像服務(wù)發(fā)布需要ArcGIS Server 的imageserver 授權(quán)。柵格數(shù)據(jù)集、柵格目錄和鑲嵌數(shù)據(jù)集都支持直接發(fā)布為影像服務(wù)。在ArcMap的目錄中右鍵選擇影像,可以將其發(fā)布成影像服務(wù),如下圖:

影像服務(wù)的發(fā)布過(guò)程與一般的地圖服務(wù)Mapservice的向?qū)ь愃?,不過(guò)在其服務(wù)設(shè)置方面有自己的特點(diǎn),如下圖所示:

通過(guò)rest地址訪問(wèn)已發(fā)布的影像服務(wù),可以看到其影像服務(wù)的功能。其中一項(xiàng)就是柵格函數(shù)

影像服務(wù)的調(diào)用與傳統(tǒng)的mapservice類似,不過(guò)采用的是 ArcGISImageServiceLayer 接口。調(diào)用代碼如下

        var map;
        require([
                    "esri/map",
                    "esri/layers/ArcGISImageServiceLayer",
                    "esri/layers/ImageServiceParameters",
                    "dojo/domReady!"],
                function(Map,ArcGISImageServiceLayer,ImageServiceParameters) {
                    map = new Map("mapDiv");                                                
                    var imgParams = new ImageServiceParameters();
                    imgParams.onData = 0;
                    
                    var layerUrl = "http://localhost:6080/arcgis/rest/services/LC441821/ImageServer";
                    var imageServiceLayer = new ArcGISImageServiceLayer(layerUrl,{
                        imageServiceParameters:imgParams,
                        opacity:0.75
                    });
                    map.addLayer(imageServiceLayer);
                    map.centerAt([113.34, 23.51]);
                });

這里除了使用接口加載影像服務(wù)之外,還使用了ImageServiceParameters 接口去設(shè)置影像服務(wù)的參數(shù)。例如上述代碼使用的 imgParams.onData = 0; 就是設(shè)置影像的onData 。

ImageServiceParameters 是非常重要的影像服務(wù)接口,它涉及到影像服務(wù)的多種設(shè)置,柵格函數(shù)影像函數(shù)的設(shè)置最終也會(huì)落在該接口對(duì)應(yīng)的參數(shù)中。

ArcGIS JavaScript API 使用柵格函數(shù)

imageservice 支持直接在前端使用柵格函數(shù)來(lái)重新渲染影像服務(wù)。ArcGIS JavaScript API 中集成了柵格函數(shù)的調(diào)用接口--RasterFunction 。 RasterFunction 不能多帶帶使用,需要配合ArcGISImageServiceLayer和ImageServiceParameters 接口。

目前前端能支持的柵格函數(shù)類型不是特別多,從官方的在線幫助可以看到其具體能支持的類型和數(shù)量。支持的柵格函數(shù)可以訪問(wèn)此處 。下圖是前端支持的柵格函數(shù)

ArcGIS在10.0版本之后每一個(gè)版本都加入了新的柵格函數(shù),如上圖顯示的信息。所以在前端調(diào)用柵格函數(shù)之前,先要查詢一下當(dāng)前的ArcGIS Server 版本是否支持對(duì)應(yīng)的柵格函數(shù)。

筆者建議在使用 JavaScript API 調(diào)用柵格函數(shù)之前,先在ArcMap中走通其流程,并針對(duì)結(jié)果進(jìn)行。例如前面所說(shuō)的提取影像的第四波段。

下面例子是使用JS API 調(diào)用波段提取函數(shù)。

        var map;
        require([
                    "esri/map",
                    "esri/layers/ArcGISImageServiceLayer",
                    "esri/layers/ImageServiceParameters",
                    "dojo/domReady!"],
                function(Map,ArcGISImageServiceLayer,ImageServiceParameters) {
                    map = new Map("mapDiv");                    
                    var rasterFunction = new esri.layers.RasterFunction();
                    rasterFunction.functionName = "ExtractBand";
                    
                    var functionArguments = {};
                    functionArguments.BandIDs= [4]                                       
                    rasterFunction.functionArguments = functionArguments;                   
                    rasterFunction.variableName = "Raster";    
                    
                    var imgParams = new ImageServiceParameters();
                    imgParams.onData = 0;
                    imgParams.renderingRule=rasterFunction;
                    
                    var layerUrl = "http://localhost:6080/arcgis/rest/services/LC441821/ImageServer";
                    var imageServiceLayer = new ArcGISImageServiceLayer(layerUrl,{
                        imageServiceParameters:imgParams,
                        opacity:0.75
                    });
                    map.addLayer(imageServiceLayer);
                    map.centerAt([113.34, 23.51]);
                });

效果如下圖所示

從代碼中可以看出,關(guān)鍵部分是使用了RasterFunction接口,要調(diào)用什么樣的函數(shù),需要在 functionName 中設(shè)置其柵格函數(shù)名稱。柵格函數(shù)的參數(shù)每個(gè)都不一樣,這個(gè)就必須查看在線幫助了。例如波段提取函數(shù)名稱為 ExtractBand ,在在線幫助中點(diǎn)擊該名稱,則跳轉(zhuǎn)到它的參數(shù)說(shuō)明和調(diào)用樣例。如下圖所示

通過(guò)對(duì)應(yīng)的參數(shù)來(lái)定義柵格函數(shù)的參數(shù) functionArguments ,其中關(guān)鍵字部分是需要對(duì)應(yīng)幫助說(shuō)明的每一個(gè)參數(shù)名稱。

例如將該LandSat影像服務(wù)設(shè)置為假彩色顯示,可以通過(guò)提取波段函數(shù)進(jìn)行參數(shù)的修改,如下圖所示,將波段組合修改之后

在頁(yè)面端可以直接調(diào)用出來(lái),如下圖

通過(guò)上述例子可以看出,柵格函數(shù)的使用是極其簡(jiǎn)單的。Esri 官方幫助提供了非常詳細(xì)的接口說(shuō)明。不過(guò)礙于都是英文,所以,筆者建議是先將ArcMap切換為英文版,在英文版上進(jìn)行前期的函數(shù)調(diào)用,查看結(jié)果。英文版的ArcMap中的柵格函數(shù)名稱是跟JS API 中的名稱是完全對(duì)應(yīng)的。

柵格函數(shù)模版

前面的內(nèi)容旨在說(shuō)明柵格函數(shù)的桌面使用和Web端調(diào)用。通過(guò)ArcMap的操作,很多人可能已經(jīng)看到,柵格函數(shù)是可以疊加使用的。這種疊加在前端API可以照搬。不過(guò)如果疊加的函數(shù)比較多,就需要編寫比較長(zhǎng)的代碼。

還有一種情況,ImageServer 中提供的柵格函數(shù)前端接口沒有ArcMap的那么多,如果需要調(diào)用一些桌面端具備的接口,而目前前端還沒提供的柵格函數(shù),那就需要在服務(wù)器端配置柵格函數(shù)模版。

可以看看Esri官方幫助上調(diào)用的自定義的柵格函數(shù),其渲染效果相當(dāng)不錯(cuò)。這種效果在前端API是無(wú)法實(shí)現(xiàn)的。

柵格函數(shù)模版需要在ArcMap中進(jìn)行設(shè)計(jì),其設(shè)計(jì)到柵格函數(shù)的調(diào)用和結(jié)果的渲染。

先說(shuō)說(shuō)前端渲染,目前ArcGIS JavaScript API 能支持的前端渲染是colorMap方式,就是類似柵格數(shù)據(jù)分類渲染,其構(gòu)建方式如下

 [[0,175,240,233],[3,175,240,222]]

這種方式構(gòu)建為數(shù)組,第一個(gè)數(shù)組值是柵格象元值,后面三個(gè)數(shù)值分別為RGB值。定義比較麻煩,需要對(duì)所用的象元值都給頂一個(gè)RGB值才能實(shí)現(xiàn)前端渲染。例如下面構(gòu)建一個(gè)非常龐大的 colorMap 。

var colorMap = [[0,175,240,233],[3,175,240,222],[7,177,242,212],
          [11,177,242,198],[15,176,245,183],[19,185,247,178],[23,200,247,178],
          [27,216,250,177],[31,232,252,179],[35,248,252,179],[39,238,245,162],
          [43,208,232,135],[47,172,217,111],[51,136,204,88],[55,97,189,66],
          [59,58,176,48],[63,32,161,43],[67,18,148,50],[71,5,133,58],[75,30,130,62],
          [79,62,138,59],[83,88,145,55],[87,112,153,50],[91,136,158,46],[95,162,166,41],
          [99,186,171,34],[103,212,178,25],[107,237,181,14],[111,247,174,2],
          [115,232,144,2],[119,219,118,2],[123,204,93,2],[127,191,71,2],[131,176,51,2],
          [135,163,34,2],[139,148,21,1],[143,135,8,1],[147,120,5,1],[151,117,14,2],[155,117,22,5],
          [159,115,26,6],[163,112,31,7],[167,112,36,8],[171,110,37,9],[175,107,41,11],
          [179,107,45,12],[183,105,48,14],[187,115,61,28],[191,122,72,40],[155,117,22,5],
          [159,115,26,6],[163,112,31,7],[167,112,36,8],[171,110,37,9],
          [175,107,41,11],[179,107,45,12],[183,105,48,14],[187,115,61,28],[191,122,72,40],
          [155,117,22,5],[159,115,26,6],[163,112,31,7],[167,112,36,8],[171,110,37,9],
          [175,107,41,11],[179,107,45,12],[183,105,48,14],[187,115,61,28],[191,122,72,40],
          [195,133,86,57],[199,140,99,73],[203,148,111,90],[207,153,125,109],
          [213,163,148,139],[217,168,163,160],[223,179,179,179],[227,189,189,189],
          [231,196,196,196],[235,207,204,207],[239,217,215,217],[243,224,222,224],
          [247,235,232,235],[251,245,242,245],[255,255,252,255]];                

在柵格函數(shù)設(shè)置的時(shí)候,可以指定渲染方式,例如

functionArguments.Colormap = colorMap;

這種方式構(gòu)建工作量巨大,而且沒有任何的界面設(shè)計(jì)器可用。目前還沒有前端接口支持拉伸方式渲染,例如桌面端的【渲染地貌函數(shù)】采用的色帶配置。

這些都需要在服務(wù)器端來(lái)柵格函數(shù)模版。

首選需要在ArcMap中調(diào)用【柵格函數(shù)模版編輯器】對(duì)柵格函數(shù)進(jìn)行配置。在ArcMap菜單欄【窗口】--【自定義】面板中,選擇【命令】標(biāo)簽,輸入關(guān)鍵字【柵格】,找到【柵格函數(shù)模版編輯器】,將其拖動(dòng)到菜單的工具條任意位置即可使用

從圖上可以看到,其界面與【影像】面板中調(diào)用的柵格函數(shù)的方式非常類似。但它有自己非常獨(dú)特的地方,多了一個(gè)【文件】菜單,可以將設(shè)計(jì)好的影像分析流程保存下來(lái)。如下圖所示

筆者做了一個(gè)例子,使用DEM數(shù)據(jù)進(jìn)行地形渲染?!句秩镜孛埠瘮?shù)】并不在前端柵格函數(shù)的支持范圍,其顯示的渲染效果是拉伸方式,前端api同樣不支持。這個(gè)例子很好的反映出服務(wù)器中柵格函數(shù)模版的重要性。

針對(duì)dem數(shù)據(jù)在【柵格函數(shù)模版編輯器】中使用【渲染地貌函數(shù)】,并且設(shè)計(jì)好結(jié)果的渲染方式。

設(shè)置好后,在【柵格函數(shù)模版編輯器】的【文件】菜單中【另存為】將其保存在rft.xml 文件。例如,筆者這里將配置好的模版另存名稱為 customfun.rft.xml

此處一定要使用英文名稱。因?yàn)樵撃0嬉坏┍粚?dǎo)入到imageservice中,其調(diào)用名稱與文件名稱對(duì)應(yīng)。中文名稱在調(diào)用的時(shí)候rest路徑會(huì)出現(xiàn)一些特殊的符號(hào),導(dǎo)致瀏覽器請(qǐng)求失敗。所以一定要使用英文。

配置柵格函數(shù)模版可以在兩種情況下進(jìn)行。第一種是在影像服務(wù)發(fā)布的時(shí)候進(jìn)行導(dǎo)入,在服務(wù)編輯器的【函數(shù)】項(xiàng)中設(shè)置,如下圖所示,點(diǎn)擊【管理】,在管理面板中加入一個(gè)或者多個(gè)柵格函數(shù)模版。

注意:筆者這里使用的模版存放在計(jì)算機(jī)桌面中,可以通過(guò)截圖看清楚。在影像服務(wù)發(fā)布的時(shí)候指定柵格函數(shù)模版,無(wú)論柵格函數(shù)模版文件放在什么目錄下,都能識(shí)別,因?yàn)閍rcgis server 最終會(huì)將這個(gè)模版文件拷貝到服務(wù)器能訪問(wèn)的目錄中。

點(diǎn)擊【確定】并發(fā)布影像服務(wù),柵格函數(shù)模版會(huì)隨著服務(wù)發(fā)布注冊(cè)到對(duì)應(yīng)的服務(wù)目錄中。下圖是從服務(wù)的屬性中重新查看其模版情況,可以看到這個(gè)模版已經(jīng)自動(dòng)被拷貝到arcgisserver注冊(cè)的目錄中

另一種情況是向已經(jīng)存在的影像服務(wù)注冊(cè)柵格函數(shù)模版,這稍微復(fù)雜一點(diǎn),要先將模版文件拷貝到arcgis server 已注冊(cè)的文件目錄下,不然imageserver 無(wú)法訪問(wèn)到對(duì)應(yīng)的路徑,導(dǎo)致模版讀取失敗 ,如下圖

然后停止對(duì)應(yīng)的影像服務(wù),在服務(wù)屬性對(duì)應(yīng)的【函數(shù)】項(xiàng)目導(dǎo)入模版文件。導(dǎo)入后重啟對(duì)應(yīng)的影像服務(wù)即可。

在瀏覽器中通過(guò)rest訪問(wèn)對(duì)應(yīng)的影像服務(wù),點(diǎn)擊 rasterFunctionInfos 項(xiàng),可以查看到對(duì)應(yīng)的柵格函數(shù)模板的內(nèi)容

從圖上可以看出,影像服務(wù)上多了一個(gè)以柵格函數(shù)模版文件名為命名的自定義函數(shù)。這個(gè)函數(shù)名相當(dāng)重要,在ArcGIS JavaScript API 的調(diào)用中需要使用到。

自定義柵格函數(shù)的調(diào)用與一般的調(diào)用方式?jīng)]有任何不一樣的地方,只需要在rasterFunction.functionName修改函數(shù)名稱即可。下面是調(diào)用自定義函數(shù)的代碼例子

        var map;
        require([
                    "esri/map",
                    "esri/layers/ArcGISImageServiceLayer",
                    "esri/layers/ImageServiceParameters",
                    "dojo/domReady!"],
                function(Map,ArcGISImageServiceLayer,ImageServiceParameters) {
                    map = new Map("mapDiv");    
                    var rasterFunction = new esri.layers.RasterFunction();
                    rasterFunction.functionName = "customfun";//自定義柵格函數(shù)                    
                    rasterFunction.variableName = "Raster";                    
                    var imgParams = new ImageServiceParameters();
                    imgParams.onData = 0;
                    imgParams.renderingRule=rasterFunction;
                    
                    var layerUrl = "http://localhost:6080/arcgis/rest/services/dem/ImageServer";
                    var imageServiceLayer = new ArcGISImageServiceLayer(layerUrl,{
                        imageServiceParameters:imgParams,
                        opacity:0.75
                    });
                    map.addLayer(imageServiceLayer);
                    //map.centerAt([113.34, 23.51]);
                });

具體的效果如下圖所示

利用柵格函數(shù)模版的方式可以將很多常用的柵格表達(dá)方式注冊(cè)到影像服務(wù)中,非常方便快速切換影像的顯示方式,而且柵格函數(shù)模版是可以復(fù)用的。

總結(jié)

柵格函數(shù)雖然在ArcGIS10.0之后的版本才提出來(lái),并在每一個(gè)ArcGIS版本中逐步完善和增加功能。從技術(shù)路線上看,柵格函數(shù)模版的方式依然是主流的調(diào)用方式(盡管這種方式很早就在imageserver 中使用),但前端調(diào)用的接口也越來(lái)越完善,Esri也在進(jìn)一步開放其前端功能。在當(dāng)前影像數(shù)據(jù)獲取越來(lái)越便捷和廉價(jià)的情況下,影像的使用不僅僅是停留在瀏覽階段,分析功能和多種表達(dá)方式也是越來(lái)越重要了。

更多的GIS主流和非主流技術(shù),可以持續(xù)關(guān)注CSDN的GIS制圖樂(lè)園,以及微信公眾號(hào)【GIS制圖樂(lè)園】。BY 李遠(yuǎn)祥

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/84730.html

相關(guān)文章

  • ArcGIS水文分析實(shí)戰(zhàn)教程(10)河流平均比降計(jì)算

    摘要:水文分析實(shí)戰(zhàn)教程河流平均比降計(jì)算本章導(dǎo)讀河流比降指的是河流任意兩端點(diǎn)間的高程差與兩點(diǎn)間的水平距離之比值,簡(jiǎn)單的概括為單位河長(zhǎng)內(nèi)的落差,其單位一般都是。讀者可以參考水文分析實(shí)戰(zhàn)教程河流提取與河網(wǎng)分級(jí)的做法去提取。 ArcGIS水文分析實(shí)戰(zhàn)教程(10)河流平均比降計(jì)算 本章導(dǎo)讀:河流比降指的是河流任意兩端點(diǎn)間的高程差與兩點(diǎn)間的水平距離之比值,簡(jiǎn)單的概括為單位河長(zhǎng)內(nèi)的落差,其單位一般都是‰ ...

    zhangrxiang 評(píng)論0 收藏0
  • ArcGIS實(shí)驗(yàn)教程——實(shí)驗(yàn)四十二:ArcGIS密度分析(核密度、點(diǎn)密度、線密度)

    摘要:文章目錄一密度分析原理二點(diǎn)密度分析三線密度分析四核密度分析一密度分析原理密度分析是指根據(jù)輸入的要素?cái)?shù)據(jù)集計(jì)算整個(gè)區(qū)域的數(shù)據(jù)聚集狀況,從而產(chǎn)生一個(gè)聯(lián)系的密度表面。 ...

    Joonas 評(píng)論0 收藏0
  • 柵格瓦片屬性值讀取實(shí)踐

    摘要:需求及使用場(chǎng)景鼠標(biāo)點(diǎn)擊柵格瓦片,讀取瓦片屬性信息。分析柵格瓦片本身并不存儲(chǔ)屬性信息,就是一張簡(jiǎn)單的圖片。受到根據(jù)柵格瓦片顏色值推算屬性值思路的啟發(fā),我們決定使用色值去反推屬性。 需求及使用場(chǎng)景 鼠標(biāo)點(diǎn)擊柵格瓦片,讀取瓦片屬性信息。 分析 柵格瓦片本身并不存儲(chǔ)屬性信息,就是一張簡(jiǎn)單的png圖片。如圖: showImg(https://segmentfault.com/img/bVbu0p...

    syoya 評(píng)論0 收藏0
  • Vue + ArcGIS API for JavaScript 構(gòu)建前端GIS應(yīng)用(一)

    摘要:技術(shù)路線的選擇技術(shù)學(xué)習(xí)內(nèi)容匯總技術(shù)路線的選擇項(xiàng)目的技術(shù)路線是使用構(gòu)建一套前端應(yīng)用,更加具體的技術(shù)路線實(shí)際上是,應(yīng)用到了技術(shù)棧加上了最新版的。不管怎么說(shuō),以這次項(xiàng)目對(duì)的使用體驗(yàn)挺好。本次項(xiàng)目沒有使用開源的要求,自然是最好的選擇。 寫這篇總結(jié)的意義:總結(jié),回顧,反思項(xiàng)目進(jìn)行過(guò)程和這套Vue + ArcGIS API for JavaScriptGIS前端應(yīng)用技術(shù)路線,從項(xiàng)目與技術(shù)兩個(gè)方面積...

    lufficc 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<