欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > PPT文档下载  

    第8课矩形和多边形查询.ppt

    • 资源ID:758771       资源大小:267.50KB        全文页数:49页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第8课矩形和多边形查询.ppt

    矩形和多边形查询,主要内容,自定义矩形查询自定义多边形查询弥补自定义点查询编程实现,自定义矩形,用户自行指定的矩形区域,和自定义点有何不同?,点所在的区域和矩形有所重叠的区域,是哪一个矩形?,是哪一个矩形?,从屏幕上的矩形到地图层面的矩形思路:(1)得到屏幕上的矩形;(2)得到对角线上的顶点;(3)把屏幕上的顶点转换成地图上的顶点;(4)由地图上顶点构成地图上的矩形。,得到屏幕上的矩形,把屏幕上的矩形转换成地图上的矩形,Point 点对象,由(x,y)确定位置矩形对象的创建包络对象的创建Envelope env1=new Envelope();Envelope env1=new Envelope(左上角,右下角);,空间查询,和矩形有所重叠的区域,空间查询,使用查询功能对象,以及空间过滤对象查询功能对象IQueryFuncitionality func=资源对象.CreateFunctionality();,如何查询使用空间过滤对象,空间过滤对象SpatialFilter对象,在ESRI.ArcGIS.ADF.Web命名空间中SpatialFilter 对象名=new SpatialFilter();设置其属性对象名.Geometry=地图上指定的图形对象名.MaxRecords=结果集中能容纳的数量,主要编程步骤,地图控件地图资源对象功能对象(查询)查询功能经过空间过滤对象空间要素集转换成htm标记并在地图上高亮度显示。,编程结构,一个对事件的响应类IdentifyRectangle一个辅助类IdentifyHelper,用于作为类库,具体实现,得到地图服务项目的功能得到查询功能,具体实现,创建空间过滤对象,并设置其,具体实现,得到图层对象在各个图层中进行空间查询,结果放在一个dataTable对象中,具体实现,把表转换成html标记,并在地图上显示出,主要步骤,1增加ToolBar上面的按钮,设置其属性2增加必要的类IdenfifyRectangle,实现IMapServerToolAction.ServerAction方法。用于把矩形对角的两个点坐标从屏幕转换到地图坐标。再利用Envelope类的构造函数构造一个地图坐标的矩形对象。3在IdentifyHelper中增加相应的方法Identify,用来实现矩形的查询。31 获取控件对象32 得到目标对象的空间矩形,主要步骤,4在IdentifyHelper中增加相应的方法41 判别资源是否可用,是否具有查询功能42 若资源具有查询功能,则得到其查询功能。43 依据原有的矩形,构造一个空间查询矩形对象。44 取出可查询图层,到一个查询结果图层数组。45 从可查询图层中,查询每个图层中的对象。46 送到网页上显示。,主要步骤,5其他辅助函数51 编写一个函数,利用GridView将数据表中内容显示到表格中,其中借助HtmlTextWriter类,将表格的内容转换成html格式的字符串。52 编写另一个函数,将数据表转换成html表格格式的字符串,并把该字符串赋值给地图网页上的一个隐藏的文本框控件,调用open方法,弹出“属性查询页面”。53 通过地图控件的CallBackResults属性中设定事件响应机制,设定响应的事件,以及事件响应函数。6编写一个弹出信息属性窗口的网页,课堂实践,自定义矩形查询:P93-P96补:自定义点查询编程实现,课堂实践,自定义矩形查询:P93-P96,自定义多边型查询,实现步骤,1.给自定义Tool增加一个地图关联事件,设定关联的响应。2.响应之处实现一个IMapServerToolAction接口的ServerAction函数:(1)得到地图控件(2)得到地图控件上被指定的图形。(3)得到图形所对应或覆盖到的对象。(4)把屏幕对象映射到地图对象。(5)得到地图对象位置所对应的图层的各个对象。(6)把结果送给网页窗口显示。(7)接收并把结果转换成html格式的字符串,通过地图控件的回传处理函数,把字符串显示在弹出的网页上。,自定义,自定义多边形的获取从屏幕上的多边形得到地图上的多边形以多边形为过滤条件进行空间查询,自定义多边形的获取,从屏幕上的多边形得到地图上的多边形,从屏幕上的多边形得到各个拐点(点的集合)把屏幕上各点转换成地图上的对应点把地图上的各点形成地图上的多边形,多边形转换,从屏幕上的多边形得到各个拐点(点的集合),把屏幕上各点转换成地图上的对应点,多边形转换,把地图上的各点形成地图上的多边形知识:从地图上的点集合,形成到地图上的环,到地图上的多边形Ring是ESRI.ArcGIS.ADF.Web.Geometry.RingRingCollection是ESRI.ArcGIS.ADF.Web.Geometry.RingCollection,后续任务,空间查询,得到查询结果集查询结果集转换、显示,自定义多边形查询属性的实现,仍然需要一个响应类,和支持类的辅助。对于自定义多变形查询来说,需要增加一个函数,实现多边形坐标系统的转换。,响应类,public class IdentifyPolygon:IMapServerToolActionvoid IMapServerToolAction.ServerAction(ToolEventArgs args)Map map=args.Control as Map;PolygonEventArgs polyArgs=(PolygonEventArgs)args;Polygon mapPoly=GeometryHelper.GetMapPolygon(map,polyArgs);IdentifyHelper.Identify(map,mapPoly);,自定义多边形查询属性的实现,仍然需要一个响应类,和支持类(共2个IdentifyHelpe、GeometryHelper)的辅助。对于自定义多变形查询来说,需要增加一个函数,实现多边形坐标系统的转换。,响应类,public class IdentifyPolygon:IMapServerToolActionvoid IMapServerToolAction.ServerAction(ToolEventArgs args)Map map=args.Control as Map;PolygonEventArgs polyArgs=(PolygonEventArgs)args;Polygon mapPoly=GeometryHelper.GetMapPolygon(map,polyArgs);IdentifyHelper.Identify(map,mapPoly);,支持类的成员,public static void Identify(Map map,ESRI.ArcGIS.ADF.Web.Geometry.Geometry mapGeometry)public static void ShowIdentifyResult(Map map,DataTableCollection dtc)public static string GetHtmlFromDataTable(DataTable dt)public static void AddJavaScriptCallback(Map map,string executeString),Identify()方法的作用及组成步骤,IdentifyHelper.Identify(mapCtrl,mapGeometry),接受传递而来的参量数值。判别资源是否可用,是否具有查询功能,若资源具有查询功能,则得到其查询功能。依据原有的形状对象,构造一个空间查询对象。利用该查询对象从可查询图层中过滤出查询结果图层数组。从可查询图层数组中查询每个图层中的对象(遍历),送到一个dataSet中。再把dataSet的Table送到DataTableCollection对象中。形成Html字符串,送给浏览器显示。,对比在响应类中的处理部分,Map map=args.Control as Map;点查询:PointEventArgs pea=(PointEventArgs)args;System.Drawing.Point screen_point=pea.ScreenPoint;Point point=Point.ToMapPoint();矩形查询RectangleEventArgs rectargs=(RectangleEventArgs)args;System.Drawing.Rectangle myrect=rectargs.ScreenExtent;顶点坐标转换;形成地图上的矩形;IdentifyHelper.Identify(mapCtrl,mapGeometry);多边形查询 PolygonEventArgs polyArgs=(PolygonEventArgs)args;Polygon mapPoly=GeometryHelper.GetMapPolygon(map,polyArgs);IdentifyHelper.Identify(map,mapPoly);圆查询CircleEventArgs circleArgs=(CircleEventArgs)args;Polygon mapPoly=GeometryHelper.GetMapPolygon(map,circleArgs);IdentifyHelper.Identify(map,map mapGeometry);,课堂实践,自定义多边形查询:P96-P97补:自定义点查询编程实现 自定义矩形查询编程实现,课堂实践,自定义矩形查询:P93-P96自定义多边形查询:P96-P97程序录入:建立一个类库GisFunctionality,在其中输入函数P103(2)、P104(2)、P105(5),自定义圆查询的实现,程序实现机制和自定义多边形查询属性一致。程序结构是:响应类、支持类、图形转换类、弹出网页。,响应类,IdentifyCircle类public class IdentifyCircle:IMapServerToolAction void IMapServerToolAction.ServerAction(ToolEventArgs args)Map map=args.Control as Map;CircleEventArgs circleArgs=(CircleEventArgs)args;Polygon mapPoly=GeometryHelper.GetMapPolygon(map,circleArgs);IdentifyHelper.Identify(map,mapPoly);,需要使用类的介绍,GraphicsPath类,表示一系列相互连接的直线和曲线。GraphicsPath.Flatten(),将此路径中的各段曲线转换成相连的线段序列。Matrix类,是一个矩阵类,Matrix.Translate()方法用于实现一个矩阵转换。,public static ESRI.ArcGIS.ADF.Web.Geometry.Polygon GetMapPolygon(Map map,CircleEventArgs circleArgs)System.Drawing.Point screenPointCenter=new System.Drawing.Point(int)circleArgs.CenterPoint.X,(int)circleArgs.CenterPoint.Y);System.Drawing.Point screenPointBrink=new System.Drawing.Point(int)circleArgs.CenterPoint.X,(int)circleArgs.CenterPoint.Y+(int)circleArgs.Radius);,从屏幕坐标转换到地图坐标 Point mapPointCenter=Point.ToMapPoint(screenPointCenter,map.Extent,(int)map.Width.Value,(int)map.Height.Value);Point mapPointBrink=Point.ToMapPoint(screenPointBrink,map.Extent,(int)map.Width.Value,(int)map.Height.Value);得到地图坐标中的半径double radius=Math.Sqrt(mapPointCenter.X-mapPointBrink.X)*(mapPointCenter.X-mapPointBrink.X)+(mapPointCenter.Y-mapPointBrink.Y)*(mapPointCenter.Y-mapPointBrink.Y);,思路:以圆心为中心画一个椭圆,椭圆边上分为若干段,再将地图上的点集合,集中到地图上的线,再到地图上的多边形。,GraphicsPath gpath=new GraphicsPath();gpath.AddEllipse(float)(mapPointCenter.X-radius),(float)(mapPointCenter.Y-radius),(float)(2*radius),(float)(2*radius);Matrix translateMatrix=new Matrix();translateMatrix.Translate(0,0);float flattening=(float)(radius/1000);gpath.Flatten(translateMatrix,flattening);,PointCollection pc=new PointCollection();foreach(System.Drawing.PointF dpnt in gpath.PathPoints)pc.Add(new ESRI.ArcGIS.ADF.Web.Geometry.Point(dpnt.X,dpnt.Y);Ring ring=new Ring();ring.Points=pc;RingCollection rings=new RingCollection();rings.Add(ring);Polygon mapPoly=new Polygon();mapPoly.Rings=rings;return mapPoly;,课堂实践,自定义矩形查询:P93-P96自定义多边形查询:P96-P97程序录入:建立一个类库GisFunctionality,在其中输入函数P103(2)、P104(2)、P105(5),

    注意事项

    本文(第8课矩形和多边形查询.ppt)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开