欧美三区_成人在线免费观看视频_欧美极品少妇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在线播放网站 | 婷婷在线五月 | 国产午夜小视频 | 国产精品无码人妻系列AV | 国产视频视频 | 成人欧美一区在线视频在线观看 | 大伊香蕉在线观看视频 wap | 丰满年轻岳中文字幕一区二区 | 成人一区二区三区 | 综合色导航| 欧美激情图片区 | 久久vs国产综合色大全 | 亚洲精品老司机综合影院 | 欧美调教视频 | 午夜小视频在线播放 | 欧美精品一区二区三区在线 | 亚洲综合欧美日韩 | 永久精品 | 久久国产精品精品国产 | 欧美精品成人免费视频 | 91精品国产一区二区 | 亚洲欧美日韩高清一区二区三区 | 精品视频一区二区 | 李旭个人资料及简介 | 91视频网| 综合色久 | 91免费永久国产在线观看 | 国产精品极品美女自在线看免费一区二区 | 成人爽A毛片免费啪啪 | 小明成人永久在线看 | 国产精品99久久久久 | 成人影视大全 | 中文字幕精品一区二区三区精品 | 欧美―第一页―浮力影院 | 美女黄影院 | 在线观看欧美三级 | 成人福利小视频 | 亚洲人成网站看在线播放 | 国产大陆精品另类xxxx | 色情女教师3波多野结衣 |