当前位置:首页 » 云服务器 » 图层怎么加入到服务器

图层怎么加入到服务器

发布时间: 2022-09-03 01:13:43

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软件后,点击箭头所示的按钮。

热点内容
c盘里的用户文件夹可以删除 发布:2025-01-15 16:56:45 浏览:949
虚幻4编译到哪里 发布:2025-01-15 16:50:19 浏览:754
透明度渐变android 发布:2025-01-15 16:45:08 浏览:833
dos连接oracle数据库 发布:2025-01-15 16:41:39 浏览:904
网络配置比较低怎么做 发布:2025-01-15 16:35:38 浏览:361
android弹出键盘监听 发布:2025-01-15 16:35:11 浏览:207
uz画图编程 发布:2025-01-15 16:32:44 浏览:883
ppt怎么解压 发布:2025-01-15 16:14:58 浏览:849
服务器地址配置规则 发布:2025-01-15 16:03:45 浏览:987
冰箱加氟后压缩机发烫 发布:2025-01-15 16:03:00 浏览:834