版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、前言根据公司需要,需要根据某单位的地图服务url进行地图数据的下载,并且在我公司自己的地图服务器(arcgisserver)进行地图服务的发布;设计思路:1.地图数据的下载与保存2.根据保存的下载数据生成图层3.根据生成的图层进行地图的配置、渲染4.对配置好的地图进行发布1. 地图数据的下载开发环境:公司的java + flex开发环境,agslib-3.7-2014-11-06.swc(esri封装的flex开发包)1.1地图服务的组成:地图是由图层叠加组成的,图层又分为矢量图层(FeatureLayer)与栅格图层(RaserLayer),由于本地图中没有栅格图层,所有下载时不进行考虑1.
2、1.1 矢量图层的组成矢量图层包括:点图层、线图层、面图层和注记图层;本地图服务中地图不涉及注记图层不需要考虑点、线、面图层都是由要素(Feature)组成,要素(feature) = 图形(geometry) + 属性(attribute),1.1.2 如何建表根据矢量图层可以知道,一个图层对应的是一张表,一个要素(feature)则对应的是表中的一条数据. 根据地图服务,可以看到图层所具有的属性字段,根据图层有的属性字段在表中添加相应字段以便于映射保存图1.1.21(服务中看到的图层属性字段)图1.1.22(图层对应表结构)1.1.3图形的保存点:结构简单,只需要保存图形的x、y坐标即可;
3、注意:字段名不能叫x或者y,因为字段名为单个字母时,调用我公司的框架save方法时值传递不过去。我取名为coordx和coordy(可以自定义修改)线:oracle数据库无法直接保存线的结构,这里提到的线为折线(polyline);折线由多个路径线段组成(多点连接成的线段)path;path由多个点顺序连接而成.所以需要在oracle中多建立两张表,一张保存polyline的path信息,一张保存path的point信息。Polyline应该有个唯一标识字段polylineid,path表中字段应该也有polylineid字段,标记这个path属于哪个polyline,path表中还必须一个字
4、段ordercode表示他在path数组中的次序,保证日后在cs端数据生成时顺序不乱;同理path表中有pathid字段,point表中数据有同样pathid字段指向path表保存所属关系;同样point表也有ordercode字段用来排序;point表中coordx和coordy字段用来保存点的坐标;图1.1.3-1(path表结构)图1.1.3-2(point表结构)图1.1.3-3(polyline结构示意图)面:oracle数据库无法直接保存面的结构,这里提到的线为曲面(polygon);面由多个路径闭合环组成(多点连接成的闭合线段组成的面)ring;ring由多个点顺序连接而成.所以
5、需要在oracle中多建立两张表,一张保存polygon的ring信息,一张保存ring的point信息。Polygon应该有个唯一标识字段polygongid,ring表中字段应该也有polygonid字段,标记这个ring属于哪个polygon,ring表中还必须一个字段ordercode表示他在ring数组中的次序,保证日后再cs端数据生成时顺序不乱;同理ring表中有ringid字段,point表中数据有同样ringid字段指向ring表保存所属关系;同样point表也有ordercode字段用来排序;point表中coordx和coordy字段用来保存点的坐标;图1.1.3-4(ri
6、ng表结构)图1.1.3-5(Point表结构)图1.1.3-6(polygon结构示意图)1.2代码的编写1.2.1 生成代码根据上部创建的oracle数据库表利用公司框架代码生成器生成代码,把生成代码复制到相应位置,完成配置。1.2.2 查询图层public function queryAll(pageIndex:int,url:String):void/起始objectIdvar fromIndex:int =(pageIndex - 1)*1000;/终止objetIdvar toIndex:int = pageIndex*1000;/新建一个QueryTask/var queryTa
7、sk:QueryTask = new QueryTask("31:6080/arcgis/rest/services/CI/A4_CI_QYS/MapServer/20");var queryTask:QueryTask = new QueryTask(url);queryTask.showBusyCursor=true;/ Query对象var query:Query = new Query();/是否返回查询结果的空间几何信息query.returnGeometry = true;/查询结果返回的字段,字段必须在图层中,字段的大小写可忽
8、略query.outFields="*"/quer.OutField.Add("*"); /返回所有字段 query.where = "ObjectID>" + fromIndex.toString() + "and ObjectID <=" + toIndex.toString();/异步查询,需要绑定queryTask的两个事件,通过ExecuteCompleted得到查询结果queryTask.addEventListener(FaultEvent.FAULT,error);queryTask.a
9、ddEventListener(QueryEvent.EXECUTE_COMPLETE,backFun);queryTask.execute(query);/同步查询,不需要绑定事件,直接返回查询结果/FeatureSet featureSet = queryTask.Execute(query);1.2.3 保存数据在回调函数中获得查询结构,根据点、线、面数据结构的不同分别进行不同的保存。/保存graphics数据到数据库private function saveGraphicsToOracle(arrGras:Array):void/历遍返回结果中所有的面,映射保存到数组中for each
10、 (var result:Graphic in arrGras)if(result.geometry is Polygon)var pg:Polygon = result.geometry as Polygon;var pgGUID:String=UIDUtil.createUID();/面的唯一标识符var polygonModel:Polygon_gis = new Polygon_gis();polygonModel.polygoneid = pgGUID;polygonM = ;polygonArr.addItem(poly
11、gonModel);/历遍面中所有的ring,映射保存到数组中for each(var ringArr:Array in pg.rings)var ringGUID:String=UIDUtil.createUID();/ring的唯一标识符var ringModel:Ring_gis = new Ring_gis();ringModel.ringid = ringGUID;ringModel.polygonid = pgGUID;_ringArr.addItem(ringModel);/历遍ring中所有mappoint,映射保存到数组中for each (var mapPoint:MapP
12、oint in ringArr)var ptGUID:String=UIDUtil.createUID();/ring的唯一标识符var mapPointModel:Mappoint_gis = new Mappoint_gis();mapPointModel.coordx = mapPoint.x.toString();mapPointModel.coordy = mapPoint.y.toString();mapPointModel.mappointid = ptGUID;mapPointModel.ringid = ringGUID;mapppointArr.addItem(mapPoi
13、ntModel);/保存mappoint数据到数据库/if(mapppointArr.length>0)/dataBaseServer.savePolygonData(mapppointArr,"mappoint_gisController");/保存ring数据到数据库/if(_ringArr.length>0)/dataBaseServer.savePolygonData(_ringArr,"ring_gisController");/保存面数据到数据库/if(polygonArr.length>0)/dataBaseServer.
14、savePolygonData(polygonArr,"polygon_gisController");/保存mappoint数据到数据库if(mapppointArr.length>0)dataBaseServer.savePolygonData(mapppointArr,"mappoint_gisController");/保存ring数据到数据库if(_ringArr.length>0)dataBaseServer.savePolygonData(_ringArr,"ring_gisController");/保存面
15、数据到数据库if(polygonArr.length>0)dataBaseServer.savePolygonData(polygonArr,"polygon_gisController");/执行下次查询/queryCoutn+;/Alert(queryCoutn.toString();/queryAll(queryCoutn);1.2.4 具体操作Queryall方法中设置好查询url方法中设置映射的model 配置保存时候调用的后台Controller运行程序根据点、线、面图层的不同选择点击按钮,点击之后出现“保存成功”提示后依次增加中的数字(arcgisser
16、ver地图服务查询最多返回1000条数据,1表示根据arcgis默认主键objectid排序,查询前1000条数据),继续点击按钮,知道出现提示“到头了”提示后,完成单个图层下载。根据图层数量,重复以上操作完成下载。1.2.5 程序优化及为实现原因现在xml文件dataDownLoad.xml配置如下:?xml version="1.0" encoding="UTF-8"?><root><!- 图层下载配置id 标签的唯一标识符layerType 图层类型(点、线、面)ControllerName 后台Controller的名字m
17、odelClassName 图层中每个要素在flex中映射成的类 -><layers><layer id = "0" url = "/2:6080/arcgis/rest/services/%E6%97%A0%E6%A0%87%E9%A2%98/MapServer/0" layerType = "point" ControllerName = "ptlytest_testController" modelClassName ="com.lhd.test.mod
18、el.Ptlytest_test"></layer><!-<layer id = "1" url = "/2:6080/arcgis/rest/services/%E6%97%A0%E6%A0%87%E9%A2%98/MapServer/1" layerType = "polyline" ControllerName = "pllayertest_gisController" modelClassName ="Pllayertest_gis&q
19、uot;></layer><layer id = "2" url = "/2:6080/arcgis/rest/services/%E6%97%A0%E6%A0%87%E9%A2%98/MapServer/2" layerType = "polygon" ControllerName = "propolygon_gisController" modelClassName ="Propolygon_gis"></layer>->
20、</layers></root>遍历layer节点,根据属性自动完成下载失败原因:1.Flex 反射机制不同于java,在根据去反射对象必须先声明变量否则flex模块不编译此类型,反射不到对象2.保存数据结束后再次调用queryall方法时没反应。2. 数据的生成开放环境:win7操作系统(64位),oracle10g客户端(32位),arcgisengine10.2,VisualStudio2010;2.1环境搭建VisualStudio2010安装,只需要点击下一步即可;Arcgis安装:点击安装上述三项破解:打开arcgis10.2 (含破解)Arcgis 10.2安装与破解工具方法一 替换 License10.2bin 下的 service.txt改成你的主机名停止服务arcgis10.2 (含破解)Arcgis 10.2安装与破解工具方法一 替换 License10.2bin 下的覆盖到License的安装路径下C:Program
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江温州市瑞安市集云实验学校等五校2026-2027学年九年级上学期阶段学情自测语文试题(含解析)
- 2026年山东临沂市平邑县九年级综合训练模拟语文试题(一)(含解析)
- 南京师范大学《数学分析》期末试题与答案
- 2025-2026年旅游市场营销策略测试卷
- 2025-2026年建筑工程师项目管理模拟试卷
- 再生资源回收利用项目可行性研究报告
- 煤层气开发利用项目环境影响报告书(参考模板)
- 高标准农田建设工程施工组织设计
- 老旧小区改造消防系统联调联试实施方案
- 储能系统集成工艺技术手册
- 3.1 激素与内分泌系统 课件(内嵌视频)2026-2027学年高二上学期生物人教版选择性必修1
- 2026年爱国主义教育主题知识竞赛试题及答案
- 河北石家庄市部分校2026-2027学年高三上学期开学考试数学+答案
- 2026年杭州钢铁集团招聘试题及答案
- 2026兴宁市司法局公开招聘司法行政辅助人员6人笔试参考题库及答案详解
- 2025年教资考试真题试卷及答案
- 2026道德与法治九年级上册说课逐字稿:坚强领导的核心
- 2026年辅警考试公安基础知识考试试题库及参考答案
- (2026年版)中国老年2型糖尿病防治临床指南解读课件
- 心肺运动试验(CPET)标准化质量控制全流程科室业务学习资料
- (2026版)《河北省预防未成年人犯罪条例》解读
评论
0/150
提交评论