第8课矩形和多边形查询ppt课件_第1页
第8课矩形和多边形查询ppt课件_第2页
第8课矩形和多边形查询ppt课件_第3页
第8课矩形和多边形查询ppt课件_第4页
第8课矩形和多边形查询ppt课件_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、矩形和多边形查询矩形和多边形查询2019年10月主要内容主要内容o 自定义矩形查询自定义矩形查询o 自定义多边形查询自定义多边形查询o 弥补自定义点查询编程实现弥补自定义点查询编程实现自定义矩形自定义矩形o 用户自行指定的矩形区域用户自行指定的矩形区域和自定义点有何不同?和自定义点有何不同?o 点所在的区域点所在的区域o 和矩形有所重叠的区域和矩形有所重叠的区域是哪一个矩形?是哪一个矩形?是哪一个矩形?是哪一个矩形?o 从屏幕上的矩形到地图层面的矩形从屏幕上的矩形到地图层面的矩形o 思绪:思绪:o (1 1得到屏幕上的矩形;得到屏幕上的矩形;o (2 2得到对角线上的顶点;得到对角线上的顶点;

2、o (3 3把屏幕上的顶点转换成地图上的顶点把屏幕上的顶点转换成地图上的顶点;o (4 4由地图上顶点构成地图上的矩形。由地图上顶点构成地图上的矩形。得到屏幕上的矩形得到屏幕上的矩形(x, y)heightWidth把屏幕上的矩形转换成地图上的矩形把屏幕上的矩形转换成地图上的矩形o Point 点对象,由(x, y)确定位置o 矩形对象的创建包络对象的创建o Envelope env1=new Envelope();o Envelope env1=new Envelope(左上角,右下角);空间查询空间查询o 和矩形有所重叠的区域和矩形有所重叠的区域空间查询空间查询o 使用查询功能对象,以及空

3、间过滤对象使用查询功能对象,以及空间过滤对象o 查询功能对象查询功能对象o IQueryFuncitionality func=资源对象资源对象.CreateFunctionality();如何查询如何查询使用空间过滤对象使用空间过滤对象o 空间过滤对象空间过滤对象SpatialFilterSpatialFilter对象,在对象,在ESRI.ArcGIS.ADF.WebESRI.ArcGIS.ADF.Web命名空间中命名空间中o SpatialFilter SpatialFilter 对象名对象名=new =new SpatialFilter();SpatialFilter();o 设置其属性

4、设置其属性o 对象名对象名.Geometry=.Geometry=地图上指定的图形地图上指定的图形o 对象名对象名.MaxRecords=.MaxRecords=结果集中能容纳的数量结果集中能容纳的数量主要编程步骤主要编程步骤o 地图控件地图控件地图资源对象地图资源对象功能对象查询功能对象查询)查询功能经过空间过滤对象查询功能经过空间过滤对象空间要素空间要素集集转换成转换成htm标记并在地图上高亮度显标记并在地图上高亮度显示。示。编程结构o 一个对事件的响应类IdentifyRectangleo 一个辅助类IdentifyHelper,用于作为类库具体实现具体实现o 得到地图服务项目的功能o

5、得到查询功能具体实现具体实现o 创建空间过滤对象,并设置其创建空间过滤对象,并设置其具体实现具体实现o 得到图层对象o 在各个图层中进行空间查询,结果放在一个dataTable对象中具体实现具体实现o 把表转换成html标记,并在地图上显示出主要步骤主要步骤1 1增加增加ToolBarToolBar上面的按钮,设置其属性上面的按钮,设置其属性2 2增加必要的类增加必要的类IdenfifyRectangleIdenfifyRectangle,实现,实现IMapServerToolAction.ServerActionIMapServerToolAction.ServerAction方法。方法。

6、用于把矩形对角的两个点坐标从屏幕转换到地图坐用于把矩形对角的两个点坐标从屏幕转换到地图坐标。再利用标。再利用EnvelopeEnvelope类的构造函数构造一个地图坐类的构造函数构造一个地图坐标的矩形对象。标的矩形对象。3 3在在IdentifyHelperIdentifyHelper中增加相应的方法中增加相应的方法IdentifyIdentify,用来实现矩形的查询。用来实现矩形的查询。3 31 1 获取控件对象获取控件对象3 32 2 得到目标对象的空间矩形得到目标对象的空间矩形主要步骤主要步骤4 4在在IdentifyHelperIdentifyHelper中增加相应的方法中增加相应的方

7、法4 41 1 判别资源是否可用,是否具有查询功能判别资源是否可用,是否具有查询功能4 42 2 若资源具有查询功能,则得到其查询功能。若资源具有查询功能,则得到其查询功能。4 43 3 依据原有的矩形,构造一个空间查询矩形对象。依据原有的矩形,构造一个空间查询矩形对象。4 44 4 取出可查询图层,到一个查询结果图层数组。取出可查询图层,到一个查询结果图层数组。4 45 5 从可查询图层中,查询每个图层中的对象。从可查询图层中,查询每个图层中的对象。4 46 6 送到网页上显示。送到网页上显示。主要步骤主要步骤5 5其他辅助函数其他辅助函数5 51 1 编写一个函数,利用编写一个函数,利用G

8、ridViewGridView将数据表中内容显示将数据表中内容显示到表格中,其中借助到表格中,其中借助HtmlTextWriterHtmlTextWriter类,将表格的内类,将表格的内容转换成容转换成htmlhtml格式的字符串。格式的字符串。5 52 2 编写另一个函数,将数据表转换成编写另一个函数,将数据表转换成htmlhtml表格格式的表格格式的字符串,并把该字符串赋值给地图网页上的一个隐藏字符串,并把该字符串赋值给地图网页上的一个隐藏的文本框控件,调用的文本框控件,调用openopen方法,弹出方法,弹出“属性查询页面属性查询页面”。5 53 3 通过地图控件的通过地图控件的Call

9、BackResultsCallBackResults属性中设定事属性中设定事件响应机制,设定响应的事件,以及事件响应函数。件响应机制,设定响应的事件,以及事件响应函数。6 6编写一个弹出信息属性窗口的网页编写一个弹出信息属性窗口的网页课堂实践课堂实践o 自定义矩形查询:自定义矩形查询:P93-P96P93-P96o 补:自定义点查询编程实现补:自定义点查询编程实现课堂实践课堂实践o 自定义矩形查询:自定义矩形查询:P93-P96P93-P96自定义多边型查询自定义多边型查询实现步骤实现步骤1. 1. 给自定义给自定义ToolTool增加一个地图关联事件,设定关联的响应。增加一个地图关联事件,设

10、定关联的响应。2. 2. 响应之处实现一个响应之处实现一个IMapServerToolActionIMapServerToolAction接口的接口的ServerActionServerAction函数:函数:(1 1得到地图控件得到地图控件(2 2得到地图控件上被指定的图形。得到地图控件上被指定的图形。(3 3得到图形所对应或覆盖到的对象。得到图形所对应或覆盖到的对象。(4 4把屏幕对象映射到地图对象。把屏幕对象映射到地图对象。(5 5得到地图对象位置所对应的图层的各个对象。得到地图对象位置所对应的图层的各个对象。(6 6把结果送给网页窗口显示。把结果送给网页窗口显示。(7 7接收并把结果转

11、换成接收并把结果转换成htmlhtml格式的字符串,通过地图控件的回格式的字符串,通过地图控件的回传处理函数,把字符串显示在弹出的网页上。传处理函数,把字符串显示在弹出的网页上。 自定义自定义o 自定义多边形的获取自定义多边形的获取o 从屏幕上的多边形得到地图上的多边形从屏幕上的多边形得到地图上的多边形o o 以多边形为过滤条件进行空间查询以多边形为过滤条件进行空间查询o 自定义多边形的获取自定义多边形的获取从屏幕上的多边形得到地图上的多边形从屏幕上的多边形得到地图上的多边形o 从屏幕上的多边形得到各个拐点点的集合从屏幕上的多边形得到各个拐点点的集合)o 把屏幕上各点转换成地图上的对应点把屏幕

12、上各点转换成地图上的对应点o 把地图上的各点形成地图上的多边形把地图上的各点形成地图上的多边形多边形转换多边形转换o 从屏幕上的多边形得到各个拐点点的集合从屏幕上的多边形得到各个拐点点的集合),把屏幕上各点转换成地图上的对应点),把屏幕上各点转换成地图上的对应点多边形转换多边形转换o 把地图上的各点形成地图上的多边形把地图上的各点形成地图上的多边形o 知识:从地图上的点集合,形成到地图上的环,到知识:从地图上的点集合,形成到地图上的环,到地图上的多边形地图上的多边形o RingRing是是ESRI. ArcGIS. ADF. Web. Geometry. RingESRI. ArcGIS. A

13、DF. Web. Geometry. Ringo RingCollectionRingCollection是是ESRI.ArcGIS.ADF.Web.Geometry.RingCollectionESRI.ArcGIS.ADF.Web.Geometry.RingCollection后续任务后续任务o 空间查询,得到查询结果集空间查询,得到查询结果集o 查询结果集转换、显示查询结果集转换、显示自定义多边形查询属性的实现自定义多边形查询属性的实现o 仍然需要一个响应类,和支持类的辅助。仍然需要一个响应类,和支持类的辅助。o 对于自定义多变形查询来说对于自定义多变形查询来说 ,需要增加一,需要增加一

14、个函数,实现多边形坐标系统的转换。个函数,实现多边形坐标系统的转换。 响应类响应类public class IdentifyPolygon : IMapServerToolActionpublic class IdentifyPolygon : IMapServerToolAction void IMapServerToolAction.ServerAction(ToolEventArgs void IMapServerToolAction.ServerAction(ToolEventArgs args)args) Map map = args.Control as Map; Map map

15、= args.Control as Map; PolygonEventArgs polyArgs = PolygonEventArgs polyArgs = (PolygonEventArgs)args;(PolygonEventArgs)args; Polygon mapPoly = Polygon mapPoly = GeometryHelper.GetMapPolygon(map, polyArgs);GeometryHelper.GetMapPolygon(map, polyArgs); IdentifyHelper.Identify(map, mapPoly); IdentifyHe

16、lper.Identify(map, mapPoly); 自定义多边形查询属性的实现自定义多边形查询属性的实现o 仍然需要一个响应类,和支持类共仍然需要一个响应类,和支持类共2 2个个IdentifyHelpeIdentifyHelpe、GeometryHelperGeometryHelper的辅助的辅助。o 对于自定义多变形查询来说对于自定义多变形查询来说 ,需要增加一,需要增加一个函数,实现多边形坐标系统的转换。个函数,实现多边形坐标系统的转换。 响应类响应类public class IdentifyPolygon : IMapServerToolActionpublic class Id

17、entifyPolygon : IMapServerToolAction void IMapServerToolAction.ServerAction(ToolEventArgs void IMapServerToolAction.ServerAction(ToolEventArgs args)args) Map map = args.Control as Map; Map map = args.Control as Map; PolygonEventArgs polyArgs = PolygonEventArgs polyArgs = (PolygonEventArgs)args;(Poly

18、gonEventArgs)args; Polygon mapPoly = Polygon mapPoly = GeometryHelper.GetMapPolygon(map, polyArgs);GeometryHelper.GetMapPolygon(map, polyArgs); IdentifyHelper.Identify(map, mapPoly); IdentifyHelper.Identify(map, mapPoly); 支持类的成员支持类的成员opublic static void Identify(Map map, ESRI.ArcGIS.ADF.Web.Geometry

19、.Geometry mapGeometry) opublic static void ShowIdentifyResult(Map map, DataTableCollection dtc)opublic static string GetHtmlFromDataTable(DataTable dt)opublic static void AddJavaScriptCallback(Map map, string executeString)Identify()方法的作用及组成步骤o IdentifyHelper.Identify(mapCtrl, IdentifyHelper.Identif

20、y(mapCtrl, mapGeometry) mapGeometry) ,接受传递而来的参量数值。,接受传递而来的参量数值。o 判别资源是否可用,是否具有查询功能,若资源具判别资源是否可用,是否具有查询功能,若资源具有查询功能,则得到其查询功能。有查询功能,则得到其查询功能。 o 依据原有的形状对象,构造一个空间查询对象。依据原有的形状对象,构造一个空间查询对象。 利用该查询对象从可查询图层中过滤出查询结果图利用该查询对象从可查询图层中过滤出查询结果图层数组。层数组。o 从可查询图层数组中查询每个图层中的对象遍历从可查询图层数组中查询每个图层中的对象遍历),送到一个),送到一个dataSet

21、dataSet中。中。o 再把再把dataSetdataSet的的TableTable送到送到DataTableCollectionDataTableCollection对对象中。象中。o 形成形成HtmlHtml字符串,送给浏览器显示。字符串,送给浏览器显示。 对比在响应类中的处理部分对比在响应类中的处理部分Map map = args.Control as Map; 点查询:点查询: PointEventArgs pea = (PointEventArgs)args; System.Drawing.Point screen_point = pea.ScreenPoint; Point po

22、int = Point.ToMapPoint(); 矩形查询矩形查询RectangleEventArgs rectargs = (RectangleEventArgs)args;System.Drawing.Rectangle myrect = rectargs.ScreenExtent; 顶点坐标转换;形成地图上的矩形顶点坐标转换;形成地图上的矩形;IdentifyHelper.Identify(mapCtrl, mapGeometry);多边形查询多边形查询 PolygonEventArgs polyArgs = (PolygonEventArgs)args; Polygon mapPol

23、y = GeometryHelper.GetMapPolygon(map, polyArgs); IdentifyHelper.Identify(map, mapPoly);圆查询圆查询CircleEventArgs circleArgs = (CircleEventArgs)args;Polygon mapPoly = GeometryHelper.GetMapPolygon(map, circleArgs); IdentifyHelper.Identify(map, map mapGeometry); 课堂实践课堂实践o 自定义多边形查询:自定义多边形查询:P96-P97P96-P97o

24、补:自定义点查询编程实现补:自定义点查询编程实现o 自定义矩形查询编程实现自定义矩形查询编程实现课堂实践课堂实践o 自定义矩形查询:自定义矩形查询:P93-P96P93-P96o 自定义多边形查询:自定义多边形查询:P96-P97P96-P97o 程序录入:程序录入:o 建立一个类库建立一个类库GisFunctionalityGisFunctionality,在其中输,在其中输入函数入函数P103(2)P103(2)、P104(2)P104(2)、P105(5)P105(5)自定义圆查询的实现自定义圆查询的实现 o程序实现机制和自定义多边形查询属程序实现机制和自定义多边形查询属性一致。性一致。

25、o程序结构是:响应类、支持类、图形程序结构是:响应类、支持类、图形转换类、弹出网页。转换类、弹出网页。响应类响应类IdentifyCircleIdentifyCircle类类public class IdentifyCircle : IMapServerToolActionpublic class IdentifyCircle : IMapServerToolAction void IMapServerToolAction.ServerAction(ToolEventArgs args) void IMapServerToolAction.ServerAction(ToolEventArgs

26、args) Map map = args.Control as Map; Map map = args.Control as Map; CircleEventArgs circleArgs = (CircleEventArgs)args; CircleEventArgs circleArgs = (CircleEventArgs)args; Polygon mapPoly = GeometryHelper.GetMapPolygon(map, Polygon mapPoly = GeometryHelper.GetMapPolygon(map, circleArgs);circleArgs);

27、 IdentifyHelper.Identify(map, mapPoly); IdentifyHelper.Identify(map, mapPoly); 需要使用类的介绍需要使用类的介绍o GraphicsPathGraphicsPath类,表示一系列相互连接的直类,表示一系列相互连接的直线和曲线。线和曲线。o GraphicsPath. FlattenGraphicsPath. Flatten(),将此路径中(),将此路径中的各段曲线转换成相连的线段序列。的各段曲线转换成相连的线段序列。o MatrixMatrix类,是一个矩阵类,类,是一个矩阵类,o Matrix .Translate

28、()Matrix .Translate()方法用于实现一个矩方法用于实现一个矩阵转换。阵转换。public static ESRI.ArcGIS.ADF.Web.Geometry.Polygon GetMapPolygon(public static ESRI.ArcGIS.ADF.Web.Geometry.Polygon GetMapPolygon(Map map, CircleEventArgs circleArgs)Map map, CircleEventArgs circleArgs) System.Drawing.Point screenPointCenter = new Syste

29、m.Drawing.Point( System.Drawing.Point screenPointCenter = new System.Drawing.Point( (int)circleArgs.CenterPoint.X,(int)circleArgs.CenterPoint.Y); (int)circleArgs.CenterPoint.X,(int)circleArgs.CenterPoint.Y); System.Drawing.Point screenPointBrink = new System.Drawing.Point( System.Drawing.Point scree

30、nPointBrink = new System.Drawing.Point( (int)circleArgs.CenterPoint.X, (int)circleArgs.CenterPoint.X, (int)circleArgs.CenterPoint.Y + (int)circleArgs.Radius);(int)circleArgs.CenterPoint.Y + (int)circleArgs.Radius); 从屏幕坐标转换到地图坐标从屏幕坐标转换到地图坐标 Point mapPointCenter = Point.ToMapPoint(screenPointCenter, m

31、ap.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) +(mapPo

32、intCenter.Y - mapPointBrink.Y)*(mapPointCenter.Y - mapPointBrink.Y);o 思绪:以圆心为中心画一个椭圆,椭圆边上思绪:以圆心为中心画一个椭圆,椭圆边上分为若干段,再将地图上的点集合,集中到分为若干段,再将地图上的点集合,集中到地图上的线,再到地图上的多边形。地图上的线,再到地图上的多边形。 GraphicsPath gpath = new GraphicsPath(); GraphicsPath gpath = new GraphicsPath(); gpath.AddEllipse(float)(mapPointCenter.X -

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论