圖層怎麼加入到伺服器
A. arcgis矢量圖層怎麼發送
咨詢記錄 · 回答於2021-12-25
B. 如何動態添加圖層並進行查詢 doc
首先,要得到地圖的IMap介面才能對地圖的圖層進行操作。
清單1. 獲取IMap介面
1. AGSLocalMapResource res = (AGSLocalMapResource)webContext .getResources().get("ags0");
2. com.esri.arcgis.carto.MapServer mapServer = res.getLocalMapServer();
3. try {
4. IMap map = mapServer.getMap(mapServer.getDefaultMapName());
5. map.addLayer(ILayer layer);
6. }catch(Exception e){
7. }
動態添加圖層的核心代碼就是第5行,它接收的參數是實現了ILayer介面的對象。因此,接下來我們需要把file geodatabase里的feature class組裝成一個ILayer對象。
清單2. 從Feature Class到ILayer
1. IServerContext sctx = res.getServerContext();
2. IWorkspaceFactory pWorkspaceFactory = (IWorkspaceFactory) sctx .createObject(FileGDBWorkspaceFactory.getClsid());
3. IFeatureWorkspace pFWS = (IFeatureWorkspace) pWorkspaceFactory .openFromFile("E:\\data\\qixiang\\qixiang.gdb", 0);
4. IFeatureClass fc = pFWS.openFeatureClass("Road");
5. IFeatureLayer fLayer = (IFeatureLayer) sctx .createObject(FeatureLayer.getClsid());
6. fLayer.setFeatureClassByRef(fc);
7. fLayer.setName("Road");
Server中的AO對象,必須在一個IServerContext上下文中使用,因此,AO對象的創建跟一般的Java類有所不同。因為數據是保存在filegeodatabase,所以在第2行代碼中我們創建了一個FileGDBWorkspaceFactory,接下來的兩行利用這個工廠類打開了一個IFeatureWorkspace,然後讀取了其中的一個feature class。最後,用這個feature class設置了一個IFeatureLayer(ILayer的一個子類)。
有了IMap和IFeatureLayer對象以後,其實就已經能動態添加圖層了。但是這樣添加的圖層有一點欠缺的地方——它的渲染方式是隨機的。就像我們用ArcMap直接打開一個polygon feature class時,ArcMap會隨機選擇一個填充色。為了保證每次用戶添加圖層以後能夠看到同樣的效果,我們需要為動態圖層設置一個渲染方式。當然,我們可以在程序中為不同類型的要素分別設置一個Renderer,但是本文將探討另一種方式。先用ArcMap設置好渲染方式,然後保存成一個*.lyr文件,動態添加圖層的時候從lyr文件中讀取Renderer信息,然後添加到IFeatureLayer。畢竟,用ArcMap設置Renderer比寫代碼要簡單多了!而且,也更易於分發。
清單3. 從*.lyr文件中讀取Renderer信息
1. IMapDocument doc = (IMapDocument)sctx.createObject(MapDocument.getClsid());
2. doc.open(lyrFilePath, null);
3. ILayer lyr = doc.getLayer(0, 0);//get the first map's first layer
4. IFeatureRenderer renderer = null;
5. if(lyr instanceof IGeoFeatureLayer){
6. IGeoFeatureLayer geoLyr = (IGeoFeatureLayer)lyr;
7. renderer = geoLyr.getRenderer();
8. }
在清單3中我們創建了一個MapDocument對象來讀取lyr文件(API說明:The MapDocument CoClass encapsulates map document files (*.mxd, *mxt, *.pmf) and layer files (*.lyr))。第2行代碼中的lyrFilePath就是lyr文件存放的路徑。由於打開的是lyr文件,只有一個圖層,所以第3行代碼的兩個參數都為零,表示打開的是第一個地圖的第一個圖層。接下來從圖層文件中讀取Renderer信息。
接下來,我們就可以把Renderer信息賦給圖層,然後將圖層添加到地圖上。
清單4. 設置渲染方式,添加圖層
1. if(renderer != null){
2. IGeoFeatureLayer geoFeatureLyr = (IGeoFeatureLayer)fLayer;
3. geoFeatureLyr.setRendererByRef(renderer);
4. }
5. fLayer.setVisible(true);
6. map.addLayer(fLayer);
7. map.moveLayer(fLayer, 1);
至此,我們通過map service提供的AO介面完成了動態添加圖層的工作,但是如果這時候我們去刷新瀏覽器,並不會看到新增加的圖層!這是由於Web ADF層還不知道圖層信息發生變化了。這與Web ADF的初始化有關,當一個session啟動的時候,WebContext會根據map service的信息完成初始化,包括一些列的functionalities以及attributes,這些初始化信息中就包含圖層信息(保存在com.esri.arcgisws.MapDescription和com.esri.arcgisws.MapLayerInfo等類中)。在WebContext初始化完成以後,如果map service的信息發生改變,必須由程序員自己去刷新Web ADF中的相關對象,實現Web ADF對象與map service同步。有趣的是,並不是所有對map service的修改都要自己去通知Web ADF,比如修改圖層的Renderer信息就不需要。我覺得如果com.esri.arcgisws包中的與AO同名的對象,很可能就需要手工修改,因為這些對象都是初始化的時候創建的;如果沒有,說明沒有必要為其單獨創建Web ADF對象,需要的時候就直接訪問AO介面了。
清單5. 刷新ADF對象
1. mapServer.refreshServerObjects();
2. IMapServerInfo serverInfo = mapServer.getServerInfo(mapServer.getDefaultMapName());
3. agsServerInfo = (com.esri.arcgisws.MapServerInfo)AGSUtil.createStubFromArcObject(serverInfo,com.esri.arcgisws.MapServerInfo.class,sctx);
4. com.esri.arcgisws.MapServerInfo si = mapFun.getMapServerInfo();
5. si.setMapLayerInfos(agsServerInfo.getMapLayerInfos());
6. mapFun.setMapDescription(agsServerInfo.getDefaultMapDescription());
在清單5中,我們先刷新了map server object,然後獲取了新的IMapServerInfo對象。第3行代碼中我們完成了從AO對象到ADF對象的轉換,這樣,ADF就有了一個反映當前map service狀態的com.esri.arcgisws.MapServerInfo。4到6行代碼用新的com.esri.arcgisws.MapServerInfo刷新了AGSMapFunctionality,從而完成了ADF與map service的同步。下面的截圖顯示了動態添加圖層的效果。
由於WebContext以及它管理的一系列ADF資源只在session開始時進行一次初始化,因此動態添加的圖層就無法用WebQuery來進行查詢和高亮顯示。在清單5中已經介紹了如何刷新ADF端的對象,因此,我們可以用更新以後的com.esri.arcgisws.MapServerPort對動態添加的圖層進行查詢。
接下來的例子中,讓用戶在地圖上拖一個矩形框,然後查詢所有圖層中與該矩形框相交的要素,並將它們高亮顯示。首先需要將用戶在地圖上繪制的矩形框傳遞到伺服器端,並創建一個com.esri.arcgisws.PolygonN對象。
清單6. 捕獲屏幕操作並構造伺服器端幾何要素
1. WebExtent ext = (WebExtent)event.getWebGeometry().toMapGeometry(webContext.getWebMap());
2. EnvelopeN env = (EnvelopeN)AGSUtil.toAGSGeometry(ext);
接下來可以根據該PolygonN新建一個com.esri.arcgisws.SpatialFilter對象。
清單7. 創建SpatailFilter對象
1. SpatialFilter spatialFilter = new SpatialFilter();
2. spatialFilter.setSpatialRel(EsriSpatialRelEnum.esriSpatialRelIntersects);
3. spatialFilter.setWhereClause("");
4. spatialFilter.setSearchOrder(EsriSearchOrder.esriSearchOrderSpatial);
5. spatialFilter.setSpatialRelDescription("");
6. spatialFilter.setGeometryFieldName("");
7. spatialFilter.setFilterGeometry(env);
com.esri.arcgisws.MapServerPort的queryFeatureData()方法只能對某一個圖層進行查詢,所以,如果要查詢所有的圖層,需要對所有圖層做一次循環。
清單8. 空間查詢
1. AGSMapFunctionality mapFunc = (AGSMapFunctionality)res.getFunctionality("map");
2. int layerCount = mapFunc.getLayerDescriptions().length;
3. MapServerPort svrPort = res.getMapServer();
4. try{
5. for(int i=0;i<layerCount;i++){
6. RecordSet rs = svrPort.queryFeatureData(「」,i, spatialFilter);
7. }
8. }catch(Exception e){
9. }
第8行代碼對每一個圖層都做了一次空間查詢,將查詢結果保存在com.esri.arcgisws.RecordSet中。查詢結果中包含了圖層要素的所有信息,包括屬性信息和空間信息,可以根據需要進行提取。這個例子中需要對查詢結果做高亮顯示,所以接下來我們關心的焦點就是獲取查詢結果的空間信息。
清單9. 高亮顯示查詢結果
1. Record[] records = rs.getRecords();
2. for(int j=0;j<records.length;j++){
3. Record item = records[j];
4. int n = item.getValues().length;
5. for(int k=0;k<n;k++){
6. Object obj = item.getValues()[k];
7. if(obj instanceof com.esri.arcgisws.Geometry){
8. WebGeometry geom = AGSUtil.fromAGSGeometry((com.esri.arcgisws.Geometry)obj);
9. query.addDisplayGeometry(geom);
10. }
11. }
12. }
com.esri.arcgisws.Record對應的是某個圖層的一條記錄,它的getValues()方法獲取該記錄屬性表中的所有信息(包括shape欄位)。第6行開始我們讀取每一個欄位的值,判斷該欄位是否記錄了shape信息,如果是,就將shape信息轉成WebGeometry對象,然後用WebQuery進行高亮顯示。
C. cad2010圖層怎麼用的,為什麼上邊找不到圖層特性管理器
1、電腦開CAD軟體。
D. ps怎麼導入圖片素材到圖層
置入嵌入對象。
打開ps後,點擊文件後可一看到置入嵌入對象選項,點擊後可添加對象到素材中進行導入。
不用的圖層進行上鎖,以免不必要的顏色或操作修改不需要修改的圖層。
E. 在谷歌地球里如何將自己的圖片添加到kml文件里,但不上傳到伺服器,謝謝高手了
截圖搞了半天..
你可以照著我的截圖做,先把圖片添加進去,然後在谷歌地球左側邊欄會出現剛剛圖片那個圖層的,然後按照截圖里的第二步,滑鼠右鍵點擊「將位置另存為」就行了
這樣不會上傳到伺服器的
F. 圖層的基本操作有哪些
了解完圖層的概念,學習怎麼靈活地操作圖層,這是熟練處理圖像的基本功。
1.新建圖層
2.拷貝圖層
3.顏色標識
4.刪格化圖層
5.合並圖層
6.蓋印圖層
圖層管理
假如圖像有多個圖層,必須選取要用的圖層才可以正常修改圖層上的圖像,對圖像所做的更改隻影響這1個圖層……
1.選取圖層
2.隱藏、顯示圖層內容
3.更改圖層順序
4.鏈接圖層
5.調整圖層內容(對齊、分布)
6.鎖定圖層
7.從圖層取樣
圖層不透明度設置及混合模式
圖層不透明度設置:圖層的不透明度決定它遮蔽或顯示它的下1個圖層的程度,假如不透明度為
1%
的圖層顯得幾乎是透明的,而透明度為
100%
的圖層顯得完全不透明。
用豐富的圖層混合模式可以輕松創建各種特殊效果,要注意的是圖層木有「清理」混合模式,Lab
圖像沒方法用「顏色減淡」、「顏色加深」、「變暗」、「變亮」、「差值」和「排除」等模式。用混合模式很容易,只需要選中要增加混合模式的圖層,之後在圖層面板的混合模式菜單中找到所要的效果即可。
正常
溶解
變暗
正片疊底
顏色加深
線性加深
變亮
濾色(屏幕)
顏色減淡
線性減淡
疊加
柔光
強光
亮光
線性光
點光
差值
排除
色相
飽和度
顏色
亮度
圖層樣式和效果
從Photoshop6.0中開始新增的圖層樣式效果非常豐富,之前要用特別多步驟製做的效果在這里設置幾個參數就可以輕松完成。可應用的效果樣式如投影效果、外發光、浮雕、描邊等等。當圖層應用了樣式後,在圖層調板中圖層名稱的右邊會出現「f」圖標。
1.圖層樣式詳解
2.隱藏/顯示圖層樣式
3.拷貝和粘貼樣式
4.刪掉圖層效果
特別參考:《Photoshop特效圖層樣式詳解》
圖層蒙版
蒙版也是Photoshop圖層中的1個重要概念,用蒙版可保護部分圖層,該圖層不能被編輯。蒙版可以控制圖層區域內部分內容可隱藏或是顯示。更改蒙版可以對圖層應用各種效果,不會影響該圖層上的圖像。最後一定要「應用蒙版」才可以使更改生效。
1.圖層蒙版
2.矢量蒙版
圖層實例剖析
前面我們花了那麼大的篇幅來寫圖層的基礎知識,目前當然要學以致用,我們通過靈活的應用圖層功能可以對圖做各種特殊效果的處理,下邊就來親自試試身手吧!
1.容易處理數碼相片
2.空心文字效果
G. 怎麼在CAD圖中增加圖層
1、大家打開CAD軟體後,點擊箭頭所示的按鈕。