欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Server Java講座--動(dòng)態(tài)添加圖層數(shù)據(jù)

系統(tǒng) 1914 0

有的時(shí)候,特別是在做分析時(shí),需要經(jīng)常添加新的圖層到當(dāng)前的地圖中。在這個(gè)時(shí)候,我們一般采用非池化的Server Object,以保證當(dāng)前用戶的修改不會(huì)影響到其他用戶。添加圖層的代碼如下:
首選,得到Resource和mapFunctionality和MapServerInfo,以備后面使用:

Java代碼 復(fù)制代碼
  1. AGSLocalMapResource?gisrec=(AGSLocalMapResource)webContext.getResources().get( "ags1" ); ??
  2. AGSMapFunctionalitymapfunction=(AGSMapFunctionality)gisrec.getFunctionalities().get( "map" ); ??
  3. MapServerPortmapServer=gisrec.getMapServer(); ??
  4. MapServerInfoserverInfo=mapServer.getServerInfo(mapServer.getDefaultMapName());??
    AGSLocalMapResource gisrec=(AGSLocalMapResource)webContext.getResources().get("ags1");
AGSMapFunctionalitymapfunction=(AGSMapFunctionality)gisrec.getFunctionalities().get("map");
MapServerPortmapServer=gisrec.getMapServer();
MapServerInfoserverInfo=mapServer.getServerInfo(mapServer.getDefaultMapName());

  


得到MapServer的IMap接口

Java代碼 復(fù)制代碼
  1. IMaptargetMap=gisrec.getLocalMapServer().getMap(gisrec.getLocalMapServer().getDefaultMapName());??
    IMaptargetMap=gisrec.getLocalMapServer().getMap(gisrec.getLocalMapServer().getDefaultMapName());

  


IMap接口可以用來添加數(shù)據(jù)到ServerObject。下面的代碼可以用來從文件數(shù)據(jù)庫中讀取數(shù)據(jù)并把它添加到IMap中:

Java代碼 復(fù)制代碼
  1. IWorkspacewk= this .connectToFileDB( "D:\\data\\sapdata.gdb" ,gisrec.getServerContext()); ??
  2. IFeatureClassfc= this .getFeatureclass(wk, "MSA_Intersect" ); ??
  3. FeatureLayerflayer=(FeatureLayer)gisrec.getServerContext().createObject(FeatureLayer.getClsid()); ??
  4. flayer.setFeatureClassByRef(fc); ??
  5. targetMap.addLayer(flayer);??
    IWorkspacewk=this.connectToFileDB("D:\\data\\sapdata.gdb",gisrec.getServerContext());
IFeatureClassfc=this.getFeatureclass(wk,"MSA_Intersect");
FeatureLayerflayer=(FeatureLayer)gisrec.getServerContext().createObject(FeatureLayer.getClsid());
flayer.setFeatureClassByRef(fc);
targetMap.addLayer(flayer);

  


里面用到的兩個(gè)function的代碼如下:

Java代碼 復(fù)制代碼
  1. public ?IWorkspace?connectToFileDB(StringfileGDB,IServerContext?sc)? throws ?java.net.UnknownHostException,java.io.IOException{ ??
  2. com.esri.arcgis.datasourcesGDB.FileGDBWorkspaceFactoryfactory?=?(FileGDBWorkspaceFactory)sc.createObject(FileGDBWorkspaceFactory.getClsid()); ??
  3. com.esri.arcgis.geodatabase.IWorkspaceworkspace?=?factory.openFromFile(fileGDB, 0 ); ??
  4. return ?workspace; ??
  5. ??
  6. } ??
  7. ??
  8. publicIFeatureClass?getFeatureclass(IWorkspace?workspace,String?fName)?throwsjava.net.UnknownHostException,?java.io.IOException{ ??
  9. com.esri.arcgis.geodatabase.IEnumDatasetenumDataset?=workspace.getDatasets(com.esri.arcgis.geodatabase.esriDatasetType.esriDTFeatureClass); ??
  10. com.esri.arcgis.geodatabase.IDatasetds?=? null ; ??
  11. ds=?enumDataset.next(); ??
  12. while (ds!=? null ){ ??
  13. if (ds.getName().endsWith(fName)){ ??
  14. return ??
  15. new ?IFeatureClassProxy(ds); ??
  16. } ??
  17. ds=?enumDataset.next(); ??
  18. ??
  19. } ??
  20. ??
  21. retur?nnull; ??
  22. ??
  23. }??
    public IWorkspace connectToFileDB(StringfileGDB,IServerContext sc) throws java.net.UnknownHostException,java.io.IOException{
com.esri.arcgis.datasourcesGDB.FileGDBWorkspaceFactoryfactory = (FileGDBWorkspaceFactory)sc.createObject(FileGDBWorkspaceFactory.getClsid());
com.esri.arcgis.geodatabase.IWorkspaceworkspace = factory.openFromFile(fileGDB,0);
return workspace;

}

publicIFeatureClass getFeatureclass(IWorkspace workspace,String fName) throwsjava.net.UnknownHostException, java.io.IOException{
com.esri.arcgis.geodatabase.IEnumDatasetenumDataset =workspace.getDatasets(com.esri.arcgis.geodatabase.esriDatasetType.esriDTFeatureClass);
com.esri.arcgis.geodatabase.IDatasetds = null;
ds= enumDataset.next();
while(ds!= null){
if(ds.getName().endsWith(fName)){
return
new IFeatureClassProxy(ds);
}
ds= enumDataset.next();

}

retur nnull;

}


  


添加圖層到ServerObject后,調(diào)用下面的代碼,讓修改生效。調(diào)用下面的代碼后,將會(huì)使ServerObject的狀態(tài)發(fā)生改變。

gisrec.getLocalMapServer().refreshServerObjects();

Server Object狀態(tài)改變后,需要重新得到serverInfo,并且設(shè)置MapFunctionality里面的LayerDescription,把新的layer加入進(jìn)去。這里我們就不手工添加,而是直接把整個(gè)MapDescription設(shè)置一遍,如下面的代碼所示:

Java代碼 復(fù)制代碼
  1. serverInfo=mapServer.getServerInfo(mapServer.getDefaultMapName()); ??
  2. mapfunction.getMapServerInfo().setDefaultMapDescription(serverInfo.getDefaultMapDescription()); ??
  3. mapfunction.setMapDescription(serverInfo.getDefaultMapDescription());??
    serverInfo=mapServer.getServerInfo(mapServer.getDefaultMapName());
mapfunction.getMapServerInfo().setDefaultMapDescription(serverInfo.getDefaultMapDescription());
mapfunction.setMapDescription(serverInfo.getDefaultMapDescription());

  


最后,當(dāng)然要加上一句refresh context的代碼:

Java代碼 復(fù)制代碼
  1. webContext.refresh();??
    webContext.refresh();

  


把此代碼放在一個(gè)tool或者command中運(yùn)行即可。這應(yīng)該是最簡潔明了的添加一個(gè)圖層的代碼了。

Server Java講座--動(dòng)態(tài)添加圖層數(shù)據(jù)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 狠狠操电影 | 欧美日屁 | 日韩一区二区三区视频 | 91综合视频 | 羞羞视频网站在线观看 | 黄色网z| 奇米在线观看视频 | 欧美黄色一区 | 久久精品人人做人人爽 | 日韩精品一区二区在线观看 | 精产国产伦理一二三区 | 成人精品一区二区三区 | 日韩美女av在线 | 一级片观看 | 久久久久国产精品免费免费搜索 | 99在线精品视频 | 久久男人的天堂 | 国产日韩欧美一区二区 | 国产精品久久久久aaaa九色 | 天天干天天干天天干天天干天天干 | 欧美国产在线观看 | 日日摸夜夜添夜夜 | 欧美大片欧美大片 | 欧美中文在线观看 | 日韩女同一区二区三区 | 在线中文字幕亚洲 | 综合二区 | 国产精品69久久久久水密桃 | 国产欧美日韩第一页 | 亚洲国产系列久久精品99人人 | 亚洲一区二区在线播放 | 色欧美亚洲| 国产精品爱啪在线线免费观看 | 国产一级免费在线观看 | 九九99国产精品视频 | 国产精品久久久久久久四虎电影 | 亚洲免费在线观看视频 | 久久99热这里只频精品6中文字幕 | 色aaa| 2021最新国产精品一区 | 骚视频在线观看 |