基于Skyline的Web程序开发整理(二)
2011-07-05 17:18
141 查看
简单说一下基于Skyline的在Web程序中怎么实现查询吧
Skyline主要是为程序提供地图服务,一般我们会在遥感或者三维地形图上叠加一些面状或者点的属性,如房屋或者区域范围的划分信息等等。往往程序中都需要对满足一定条件的对象进行高亮显示,或者让地图聚焦到那里。这时候其实只需要去遍历已加载的对象,找出满足条件的即可。
程序如下:
通过这个函数,可以在遍历的过程中,查询满足条件的对象。
当要遍历的对象比较少的时候,很方便。但是一旦对象多了,遍历起来速度就很慢。
比如说,我们现在要对一个土地利用类型的图层进行查询。该图层为SHP类型,由很多PolyGon组成,大概有几万条数据。每个Polygon对象,又具有名字、土地类型、面积等属性。查询的时候,需要查出满足条件的对象高亮显示,同时又产生一个面积等数据的统计表格。采用上面的方法大概要用几分钟才能完成,这样的速度肯定是不行的。
另一种方法,是将图层的对象属性值,全都拷到SQLserver里去,需要查询对象的时候,将请求发送给服务器,由后台来处理,返回所需的数据。
而对于对象的高亮显示,则采用Skyline的对于图层对象的SetValue方法。这种方法相比起来速度就快得多了
Skyline主要是为程序提供地图服务,一般我们会在遥感或者三维地形图上叠加一些面状或者点的属性,如房屋或者区域范围的划分信息等等。往往程序中都需要对满足一定条件的对象进行高亮显示,或者让地图聚焦到那里。这时候其实只需要去遍历已加载的对象,找出满足条件的即可。
程序如下:
//遍历指定图层 function TraverseLayer(layerName) { //IInformationTree是地图的图层列表 //layerName是要查询的图层名称,如地图上叠加了一个叫"旅游区.shp"的图层,那么layerName就是"旅游区.shp" // itemId是对应的图层编号,Skyline里对每一个对象都有一个ID号,获得该ID号就可以对对象进行一系列操作 var itemId = IInformationTree.FindItem(layerName); //获取该图层下的第一个子节点 //GetNextItem的第二个参数11,表示取子节点 var childId=IInformationTree.GetNextItem(itemId,11); //遍历所有子节点 while(childId!=0) { //根据Id获取对象 var oChild=IInformationTree.GetObject(childId); //获取该对象的所有属性值,是以XML的形式返回的,如<村名>XXX</村名><面积>56</面积>...... var xml=oChild.ClientData; // 从返回的属性值语句中,提取需要的属性 var name1=GetValueFromXml(xml,"村名"); //获取下一结点 childId=IInformationTree.GetNextItem(childId,13); } }
通过这个函数,可以在遍历的过程中,查询满足条件的对象。
当要遍历的对象比较少的时候,很方便。但是一旦对象多了,遍历起来速度就很慢。
比如说,我们现在要对一个土地利用类型的图层进行查询。该图层为SHP类型,由很多PolyGon组成,大概有几万条数据。每个Polygon对象,又具有名字、土地类型、面积等属性。查询的时候,需要查出满足条件的对象高亮显示,同时又产生一个面积等数据的统计表格。采用上面的方法大概要用几分钟才能完成,这样的速度肯定是不行的。
另一种方法,是将图层的对象属性值,全都拷到SQLserver里去,需要查询对象的时候,将请求发送给服务器,由后台来处理,返回所需的数据。
而对于对象的高亮显示,则采用Skyline的对于图层对象的SetValue方法。这种方法相比起来速度就快得多了
//高亮指定图层的部分对象 function HighLightObj() { //获取图层 var itemId = IInformationTree.FindItem("2010年.shp"); var classStr = "<Classification FuncType=\"0\"><Class>" + "<Condition><(\"[村名]\"=\"金鱼桥\" Or \"[村名]\"=\"沈家桥\") And\"[土地类型]\"=\"居民点\" ></Condition>" + "<Value>4080ff</Value>" + "</Class>" + "<DefaultValue>ffffff</DefaultValue>" + "</Classification>"; IInformationTree.GetLayer(itemId).SetFeature(); IInformationTree.GetLayer(itemId).SetValue("Line Color",1,classStr); }
相关文章推荐
- 基于Skyline的Web程序开发整理(一)
- 基于intellij和meavn的整合开发struts2框架的web程序
- 基于Spring框架开发的Web程序,如何动态修改日志级别
- 基于PHP开发WEB程序之工具推荐
- 关于基于.net的WEB程序开发所需要的一些技术归纳
- 基于Flask框架的Python web程序的开发实战 <二> 项目组织结构
- 基于PHP开发WEB程序之工具推荐
- Ubuntu 14.04 Web 程序开发(4)基于JQuery+Ajax+Json+Servlet实现PUT GET
- 基于 Cesium 的Web三维地球客户端程序开发框架
- 基于PHP开发WEB程序之工具推荐
- 基于Flask框架的Python web程序的开发实战 <一> 环境搭建
- web开发,读取txt文件(程序或本地硬盘)
- Silverlight WebOS案例2.0版本(基于Silverlight4开发的Web操作系统)
- 简单介绍基于WEB开发的HTTP协议
- (转)基于MVC4+EasyUI的Web开发框架经验总结(5)--使用HTML编辑控件CKEditor和CKFinder
- Android程序开发——WebView的开发 结合Html和JS
- 基于webpack的前端工程化开发之多页站点篇(一)
- C#+ASP.NET开发基于Web的RSS阅读器(转载)
- Web前端开发资源整理