- 浏览: 1153914 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
RebeccaZhong:
严重: StandardWrapper.Throwableco ...
三步发布java方式的rest服务 -
RebeccaZhong:
严重: StandardWrapper.Throwableco ...
三步发布java方式的rest服务 -
冷酷月光:
楼主。请教一下。arcgis for android 有提供地 ...
ArcGIS API For Android离线地图的实现 -
winney117:
请问如何GET已有网页上的指定内容?比如百度文库中的某一篇文章 ...
三步发布java方式的rest服务 -
zige1012:
您好,我想问问我想换个自己地图的切片,也有4层(L0-L3), ...
ArcGIS API For Android离线地图的实现
package com.esri.adf.web; import java.rmi.RemoteException; import java.util.Collection; import java.util.List; import java.util.Map; import com.esri.adf.web.ags.data.AGSLocalMapResource; import com.esri.adf.web.ags.data.AGSMapResource; import com.esri.adf.web.data.WebContext; import com.esri.adf.web.data.geometry.WebExtent; import com.esri.adf.web.data.query.IdentifyCriteria; import com.esri.adf.web.data.query.QueryResult; import com.esri.adf.web.data.query.TextCriteria; import com.esri.adf.web.data.query.WebQuery; import com.esri.adf.web.faces.event.MapEvent; import com.esri.adf.web.faces.event.MapToolAction; import com.esri.arcgis.carto.IFeatureLayer; import com.esri.arcgis.carto.IFeatureSelection; import com.esri.arcgis.carto.IMap; import com.esri.arcgis.carto.IMapServer; import com.esri.arcgis.carto.IMapServerObjects; import com.esri.arcgis.carto.esriSelectionResultEnum; import com.esri.arcgis.geodatabase.Field; import com.esri.arcgis.geodatabase.ICursor; import com.esri.arcgis.geodatabase.IField; import com.esri.arcgis.geodatabase.IFields; import com.esri.arcgis.geodatabase.IRecordSet; import com.esri.arcgis.geodatabase.IRow; import com.esri.arcgis.geodatabase.ISelectionSet; import com.esri.arcgis.geodatabase.SpatialFilter; import com.esri.arcgis.geodatabase.esriSpatialRelEnum; import com.esri.arcgis.geometry.Envelope; import com.esri.arcgis.server.IServerContext; import com.esri.arcgisws.EnvelopeN; import com.esri.arcgisws.EsriSearchOrder; import com.esri.arcgisws.EsriSpatialRelEnum; import com.esri.arcgisws.MapServerPort; import com.esri.arcgisws.Record; import com.esri.arcgisws.RecordSet; public class ADFQuery implements MapToolAction { private static final long serialVersionUID = 713600076584099585L; WebContext context = null; int c = 0; /* * WebQuery */ private void test1(WebExtent extent) { AGSMapResource res = (AGSMapResource) context.getResources().get("ags0"); IdentifyCriteria ic = new IdentifyCriteria(extent); WebQuery query = (WebQuery) context.getAttribute("query"); List layer = context.getWebQuery().getQueryLayers(); List results = query.query(ic, layer); for (int i = 0; i < results.size(); i++) { QueryResult result = (QueryResult) results.get(i); result.highlight(); Map map = result.getDetails(); map.size(); Collection col = map.values(); Object[] obj = col.toArray(); for (int j = 0; j < obj.length; j++) { System.out.println(obj[j]); } } } /* * arcgisws.SpatialFilter */ private void test2(WebExtent extent) { AGSMapResource res = (AGSMapResource) context.getResources().get("ags0"); MapServerPort mapServer = res.getMapServer(); EnvelopeN env = new EnvelopeN(extent.getMinX(), extent.getMinY(), extent.getMaxX(), extent.getMaxY(), null, null, null, null, null); com.esri.arcgisws.SpatialFilter filter = new com.esri.arcgisws.SpatialFilter(); filter.setSpatialRel(EsriSpatialRelEnum.esriSpatialRelIntersects); filter.setWhereClause(""); filter.setSearchOrder(EsriSearchOrder.esriSearchOrderSpatial); filter.setSpatialRelDescription(""); filter.setGeometryFieldName(""); filter.setFilterGeometry(env); int layerId = 1; try { RecordSet rs = mapServer.queryFeatureData(mapServer.getDefaultMapName(), layerId, filter); Record[] rd = rs.getRecords(); for (int i = 0; i < rd.length; i++) { Object[] obj = rd[i].getValues(); for (int j = 0; j < obj.length; j++) { String s = obj[j].toString(); } } } catch (RemoteException e) { e.printStackTrace(); } } /* * geodatabase.SpatialFilter */ private void test3(WebExtent extent){ try { AGSLocalMapResource res = (AGSLocalMapResource) context.getResources().get("ags0"); IMapServer mapServer = res.getLocalMapServer(); IServerContext sc = res.getServerContext(); Envelope env = (Envelope) sc.createObject(Envelope.getClsid()); env.putCoords(extent.getMinX(), extent.getMinY(), extent.getMaxX(), extent.getMaxY()); com.esri.arcgis.geodatabase.SpatialFilter filter = (SpatialFilter) sc .createObject(com.esri.arcgis.geodatabase.SpatialFilter .getClsid()); filter.setGeometryByRef(env); filter.setSpatialRel(esriSpatialRelEnum.esriSpatialRelIndexIntersects); System.out.println("---1--- "); int layerId = 1; IRecordSet rs = mapServer.queryFeatureData(mapServer.getDefaultMapName(), layerId, filter); IFields fds = rs.getFields(); System.out.println("---cnt2--- " + fds.getFieldCount()); for (int i = 0; i < fds.getFieldCount(); i++) { IField fd = (Field) fds.getField(i); System.out.println(fd.getName()); } ICursor cursor = rs.getCursor(true); IRow row = cursor.nextRow(); while (row != null) { System.out.println("------ " + row.getValue(4)); row = cursor.nextRow(); } } catch (Exception e) { e.printStackTrace(); } } /* * IFeatureSelection */ private void test4(WebExtent extent){ AGSLocalMapResource res = (AGSLocalMapResource) context.getResources().get("ags0"); IServerContext sc = res.getServerContext(); IMapServerObjects mso = (IMapServerObjects) res.getLocalMapServer(); IMap map; try { map = mso.getMap(res.getLocalMapServer().getDefaultMapName()); IFeatureLayer fl = (IFeatureLayer) map.getLayer(1); Envelope env = (Envelope) sc.createObject(Envelope.getClsid()); env.putCoords(extent.getMinX(), extent.getMinY(), extent.getMaxX(), extent.getMaxY()); com.esri.arcgis.geodatabase.SpatialFilter filter = (SpatialFilter) sc .createObject(com.esri.arcgis.geodatabase.SpatialFilter .getClsid()); filter.setGeometryByRef(env); filter.setSpatialRel(esriSpatialRelEnum.esriSpatialRelIndexIntersects); IFeatureSelection fs = (IFeatureSelection) fl; fs.selectFeatures(filter,esriSelectionResultEnum.esriSelectionResultNew, false); ISelectionSet ss = fs.getSelectionSet(); } catch (Exception e) { e.printStackTrace(); } } /* * TextCriteria */ private void test5() { AGSMapResource res = (AGSMapResource) context.getResources().get("ags0"); TextCriteria tc = new TextCriteria(); tc.setSearchText("北京市"); WebQuery query = (WebQuery) context.getAttribute("query"); List layer = context.getWebQuery().getQueryLayers(); List results = query.query(tc, layer); for (int i = 0; i < results.size(); i++) { QueryResult result = (QueryResult) results.get(i); result.highlight(); Map map = result.getDetails(); map.size(); Collection col = map.values(); Object[] obj = col.toArray(); for (int j = 0; j < obj.length; j++) { System.out.println(obj[j]); } } } public void execute(MapEvent arg0) throws Exception { context = arg0.getWebContext(); WebExtent ex = (WebExtent) arg0.getWebGeometry(); ex = (WebExtent) ex.toMapGeometry(arg0.getWebContext().getWebMap()); test5(); System.out.println("---ok---"); } }
内容摘要
使用ArcGIS Server java ADF开发,如果需要空间关系查询,可以有两种办法,
一种是通过com.esri.arcgisws.SpatialFilter这个包来实现,是一种SOAP的方式,
另外一种是使用传统的AO的方式实现:com.esri.arcgis.geodatabase.SpatialFilter注意两个包的命名一样,很容易混淆。
过程描述
第一种方式的代码如下:
SpatialFilter filter = new SpatialFilter(); String mapName=functionality.getMapDescription().getName(); this.getWebContext().getWebGraphics().clearGraphics(); WebPoint wPoint=(WebPoint)event.getWebGeometry().toMapGeometry(event.getWebContext().getWebMap()); Geometry geom = AGSUtil.toAGSGeometry(wPoint); com.esri.arcgisws.PointN pontN = (com.esri.arcgisws.PointN)geom; Point aoPont = (Point)AGSUtil.createArcObjectFromStub(pontN, serverContext); filter.setFilterGeometry(geom); filter.setSpatialRel(com.esri.arcgisws.EsriSpatialRelEnum.esriSpatialRelRelation); filter.setWhereClause(""); filter.setSearchOrder(com.esri.arcgisws.EsriSearchOrder.esriSearchOrderSpatial); filter.setGeometryFieldName(""); filter.setSpatialReferenceFieldName(""); filter.setSpatialRelDescription(spatialType); MapLayerInfo layerInfos[] = functionality.getLayerInfos(); for(int layerIndex=0;layerIndex<layerInfos.length;layerIndex++){ MapLayerInfo mapLayerInfo = (MapLayerInfo) layerInfos[layerIndex]; Field[] fields=mapLayerInfo.getFields().getFieldArray(); RecordSet recordSet = mapServer.queryFeatureData(mapName, layerIndex, filter); ... }
第二种方式代码如下:
SpatialFilter spatialFilter= (SpatialFilter)serverContext.createObject(SpatialFilter.getClsid()); WebPolygon wPgon=(WebPolygon)event.getWebGeometry().toMapGeometry(event.getWebContext().getWebMap()); GraphicElement ge = new GraphicElement(); ge.setGeometry(wPgon); ge.setSymbol(this.getWebContext().getWebQuery().getPolygonGraphicSymbol()); this.getWebContext().getWebGraphics().addGraphics(ge); Geometry geom = AGSUtil.toAGSGeometry(wPgon); com.esri.arcgisws.PolygonN pgonN = (com.esri.arcgisws.PolygonN)geom; Polygon aoPgon = (Polygon)AGSUtil.createArcObjectFromStub(pgonN, serverContext); for(int layerIndex=0;layerIndex<pMap.getLayerCount();layerIndex++){ ILayer layer=pMap.getLayer(layerIndex); FeatureLayer featureLayer=(FeatureLayer)layer; IFeatureClass featureClass=featureLayer.getFeatureClass(); spatialFilter.setGeometryByRef(aoPgon); spatialFilter.setSpatialRel(esriSpatialRelEnum.esriSpatialRelWithin); spatialFilter.setGeometryField(featureClass.getShapeFieldName()); IFeatureCursor featureCursor = featureClass.search(spatialFilter, true); IFeature feature = featureCursor.nextFeature(); ... }
在一般的情况下,建议使用第一种方式空间查询
发表评论
-
ArcGIS Server 导出地图图片(SOAP)
2011-03-22 17:40 3649package com.esri.arcgis.sampl ... -
ArcGIS Server 集群的问题
2010-12-06 14:49 1822今天在服务器做了一个ArcGIS Server的集群部署加测试 ... -
Server For Flex API在线编辑移动图片符号
2010-11-18 21:57 2128当在点击事件中,用edit工具移动图片(Picture ... -
ArcGIS Server动态读取图层样式(Flex版)
2010-10-26 22:36 5260最近遇到很多人问这类的问题,在ArcGIS10的rest接口已 ... -
Web地图设计模式——ArcGIS Server
2010-06-07 12:54 3174Web地图通常包含底图(提供影像和位置信息)和功能性的专题图层 ... -
Arcgis Server+Asp.net(C#)的唯一值渲染
2010-05-27 23:55 3875#region "唯一值渲染" // ... -
Arcgis server的池化和非池化
2010-05-27 23:52 2026ServerObject的池化和非池 ... -
AO批量处理的经验之谈
2010-02-08 21:37 2433往Personal GDB或SDE GDB中写入要素记录是一件 ... -
任务管理器中arcsom.exe和arcsoc.exe的个数问题
2010-01-22 13:28 1805安装了ArcGIS Server的机器,当打开任务管理器的时候 ... -
ArcGIS空间查询算子
2010-01-20 19:19 25911. Intersect 定义:相交查询算子 ... -
ArcGIS Server的切图原理深入
2009-12-12 11:06 2715GoogleMap,VirtualEarth,YahooMap ... -
关于cache文件格式的选择:png8,png24,png32 or jpeg
2009-11-04 20:56 2557关于如何合理的选择缓存图片的格式: ... -
基于ArcGIS Server对ShapeFile文件的编辑功能实现
2009-05-13 16:46 4198public class PointEdit { ... -
ArcGIS server 常见问题
2009-05-11 13:13 27472更多问题详见:http://www ... -
Attachment support is disabled解决方案
2009-03-08 21:47 6461Unable to find required classes ... -
Ajax Integration and Support in the ArcGIS Java We
2009-03-08 21:34 2032http://edndoc.esri.com/arcobjec ... -
Server Java开发--Born for SOA系列 整理中。。。
2009-02-16 10:36 2127Server Java开发--Born for SOA系列 前 ... -
ArcGIS Server 专题图的实现
2009-02-09 14:48 7241测试完毕.地图服务是用ArcGis自带的USA.mxd.还留有 ... -
Server Java讲座--动态添加图层数据
2009-02-05 11:46 2352有的时候,特别是在做分析时,需要经常添加新的图层到当前的地图中 ... -
Server Java讲座---使用图片和TrueType字体进行标注
2009-02-05 11:41 1706直奔主题吧,接上个主题的讲座的内容,讲讲如何用图片进行标注。在 ...
相关推荐
在上述代码中,我们首先导入了System.Speech.Synthesis命名空间,然后创建了一个`SpeechSynthesizer`对象。通过`Speak`方法,我们可以将字符串转换为语音输出。还可以通过`Rate`和`Volume`属性调整朗读速度和音量。 ...
在本文中,我们将深入探讨基于C#编程语言构建的文本编辑器源代码。C#是一种由微软开发的面向对象的编程语言,广泛用于Windows应用程序、游戏开发以及Web服务。使用C#编写文本编辑器,我们可以利用.NET框架的强大功能...
这些代码用于改变QQ空间的布局、颜色、字体、动态效果等方面,使用户能够摆脱默认设置,打造出独特且具有个性化的网络空间。 在非主流文化中,QQ空间的装饰往往追求与众不同,强调个性化和视觉冲击力,因此这类代码...
6. **应用领域**:粗糙集属性约简在多个领域都有应用,如决策系统、医学诊断、金融风险评估、文本分类、推荐系统等。通过约简,可以降低数据的复杂性,提高模型的可解释性,从而更有效地解决问题。 7. **评价指标**...
在提供的压缩包“空间查询统计”中,很可能包含了演示如何执行上述空间查询的代码实例,包括但不限于统计在特定区域内的对象数量、计算特定类型特征的汇总属性等。这些示例代码将帮助初学者理解如何在实际项目中集成...
在提供的“chp04”文件中,可能包含了关于这一主题的详细教程或代码示例,帮助开发者更好地理解和应用ArcGIS Engine进行空间查询统计。通过深入学习和实践,开发者能够熟练掌握这些技能,创建出满足各种需求的GIS...
【静态个人空间代码】是一个基于CSS和HTML(主要使用了Div元素)构建的网页模板,设计用于创建个性化、静态的在线个人展示空间。这个模板以其简洁性和易理解性为特点,适合初学者学习和开发者快速搭建页面。接下来,...
根据给定的信息“世界大学城空间制作代码”,我们可以推断出这部分内容主要涉及网页设计与制作方面的知识。接下来,我们将详细解析这段代码所包含的主要知识点。 ### 一、HTML元素与属性 #### 1. `<b>` 标签 这个...
QQ空间代码高亮显示源码主要涉及到网页编程和前端开发技术,用于在QQ空间中展示代码片段时,增强代码的可读性和美观性。代码高亮通常包括语法着色、行号显示、缩进引导、代码折叠等功能。下面将详细阐述相关知识点:...
本文将详细介绍如何通过代码在QQ空间中添加Flash动画、音乐及其他元素,帮助你打造独一无二的个性化空间。 #### Flash动画的嵌入与应用 Flash动画曾在网络世界中占据一席之地,尤其是在QQ空间中,它成为了展示个性...
在这个项目中,开发者可能使用了各种控件来构建对话框,如Label(用于显示文本)、TextBox(用于输入或显示文件属性)、CommandButton(用于执行操作)等。了解每个控件的属性和方法是理解代码的基础。 2. **文件I/...
在实际应用中,文本分类即是在给定的分类体系下,根据文档的内容或属性,将其归入一个或多个类别的过程。随着信息存储和通信技术的发展,信息量剧增,文本分类技术可以帮助用户过滤和分类大量文档,提高信息利用率。...
这段代码片段虽然是从“百度hi空间模块代码”这一主题中摘取的,但它涵盖了CSS中的多个关键领域:背景处理、滚动条定制、字体与链接行为、特殊元素样式,以及布局和导航标签的设计。这些知识对于任何希望深入了解...
### CSS代码属性大全:深入解析CSS主要属性 在网页设计与开发领域,CSS(层叠样式表)扮演着至关重要的角色,它负责控制HTML元素的布局、颜色、字体等视觉表现,使网页更加美观和易读。下面,我们将对《CSS代码属性...
在这个“VB+MapX_gis查询系统”中,我们看到的是一个用于美国城市查询的小型GIS应用,具备基本的地图显示以及目标和属性查询的能力。 1. **Visual Basic (VB)**:VB是Microsoft开发的一种面向对象的编程语言,适用...
在C#中,我们可以使用`System.Windows.Forms`命名空间来构建图形用户界面(GUI),如`TextBox`控件用于显示和编辑文本,`MenuStrip`控件用于创建菜单栏,`OpenFileDialog`和`SaveFileDialog`用于打开和保存文件。...
【标题】"有MDI功能的文本编辑器_简单C#代码的文本编辑器_fooduaj_" 提供了一个关于创建一个基本的文本编辑器的项目,这个编辑器使用了C#编程语言,并集成了MDI(多文档界面)功能。在C#中,MDI允许用户在一个父窗口...
在VS 2008中编写C#代码,开发者可以利用其强大的集成开发环境(IDE)进行代码编写、调试和测试,极大地提高了开发效率。 该文本编辑器实现了基本的文本操作功能,如文本的读入、编辑和保存。在读入方面,编辑器通过...
- **`<listing>`**:以较小的等宽字体显示文本,适合显示列表或代码。 - **`<font>`**:定义字体颜色、大小等属性。虽然 `<font>` 标签已被废弃,但在一些旧文档中仍然可见。 - **`color`**:设置字体颜色。 - **`...
【标题】"Android 查询工具源代码"涉及到的是一个Android应用程序的开发,主要功能包括查询电话号码的归属地以及IP地址的查询。这个工具是开发者为了方便用户获取信息而设计的,可能是一个集成在手机上的小型实用...