矩形和多邊形查詢_第1頁(yè)
矩形和多邊形查詢_第2頁(yè)
矩形和多邊形查詢_第3頁(yè)
矩形和多邊形查詢_第4頁(yè)
矩形和多邊形查詢_第5頁(yè)
已閱讀5頁(yè),還剩45頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

關(guān)于矩形和多邊形查詢主要內(nèi)容自定義矩形查詢自定義多邊形查詢彌補(bǔ)自定義點(diǎn)查詢編程實(shí)現(xiàn)第2頁(yè),共50頁(yè),2024年2月25日,星期天自定義矩形用戶自行指定的矩形區(qū)域第3頁(yè),共50頁(yè),2024年2月25日,星期天和自定義點(diǎn)有何不同?點(diǎn)所在的區(qū)域和矩形有所重疊的區(qū)域第4頁(yè),共50頁(yè),2024年2月25日,星期天是哪一個(gè)矩形?第5頁(yè),共50頁(yè),2024年2月25日,星期天是哪一個(gè)矩形?從屏幕上的矩形到地圖層面的矩形思路:(1)得到屏幕上的矩形;(2)得到對(duì)角線上的頂點(diǎn);(3)把屏幕上的頂點(diǎn)轉(zhuǎn)換成地圖上的頂點(diǎn);(4)由地圖上頂點(diǎn)構(gòu)成地圖上的矩形。第6頁(yè),共50頁(yè),2024年2月25日,星期天得到屏幕上的矩形(x,y)heightWidth第7頁(yè),共50頁(yè),2024年2月25日,星期天把屏幕上的矩形轉(zhuǎn)換成地圖上的矩形Point點(diǎn)對(duì)象,由(x,y)確定位置矩形對(duì)象的創(chuàng)建——包絡(luò)對(duì)象的創(chuàng)建Envelopeenv1=newEnvelope();Envelopeenv1=newEnvelope(左上角,右下角);第8頁(yè),共50頁(yè),2024年2月25日,星期天空間查詢和矩形有所重疊的區(qū)域第9頁(yè),共50頁(yè),2024年2月25日,星期天空間查詢使用查詢功能對(duì)象,以及空間過(guò)濾對(duì)象查詢功能對(duì)象IQueryFuncitionalityfunc=資源對(duì)象.CreateFunctionality();第10頁(yè),共50頁(yè),2024年2月25日,星期天如何查詢——使用空間過(guò)濾對(duì)象空間過(guò)濾對(duì)象SpatialFilter對(duì)象,在ESRI.ArcGIS.ADF.Web命名空間中SpatialFilter對(duì)象名=newSpatialFilter();設(shè)置其屬性對(duì)象名.Geometry=地圖上指定的圖形對(duì)象名.MaxRecords=結(jié)果集中能容納的數(shù)量第11頁(yè),共50頁(yè),2024年2月25日,星期天主要編程步驟地圖控件地圖資源對(duì)象功能對(duì)象(查詢)查詢功能經(jīng)過(guò)空間過(guò)濾對(duì)象空間要素集轉(zhuǎn)換成htm標(biāo)記并在地圖上高亮度顯示。第12頁(yè),共50頁(yè),2024年2月25日,星期天編程結(jié)構(gòu)一個(gè)對(duì)事件的響應(yīng)類IdentifyRectangle一個(gè)輔助類IdentifyHelper,用于作為類庫(kù)第13頁(yè),共50頁(yè),2024年2月25日,星期天具體實(shí)現(xiàn)得到地圖服務(wù)項(xiàng)目的功能得到查詢功能第14頁(yè),共50頁(yè),2024年2月25日,星期天具體實(shí)現(xiàn)創(chuàng)建空間過(guò)濾對(duì)象,并設(shè)置其第15頁(yè),共50頁(yè),2024年2月25日,星期天具體實(shí)現(xiàn)得到圖層對(duì)象在各個(gè)圖層中進(jìn)行空間查詢,結(jié)果放在一個(gè)dataTable對(duì)象中第16頁(yè),共50頁(yè),2024年2月25日,星期天具體實(shí)現(xiàn)把表轉(zhuǎn)換成html標(biāo)記,并在地圖上顯示出第17頁(yè),共50頁(yè),2024年2月25日,星期天主要步驟1.增加ToolBar上面的按鈕,設(shè)置其屬性2.增加必要的類IdenfifyRectangle,實(shí)現(xiàn)IMapServerToolAction.ServerAction方法。用于把矩形對(duì)角的兩個(gè)點(diǎn)坐標(biāo)從屏幕轉(zhuǎn)換到地圖坐標(biāo)。再利用Envelope類的構(gòu)造函數(shù)構(gòu)造一個(gè)地圖坐標(biāo)的矩形對(duì)象。3.在IdentifyHelper中增加相應(yīng)的方法Identify,用來(lái)實(shí)現(xiàn)矩形的查詢。3.1獲取控件對(duì)象3.2得到目標(biāo)對(duì)象的空間矩形第18頁(yè),共50頁(yè),2024年2月25日,星期天主要步驟4.在IdentifyHelper中增加相應(yīng)的方法4.1判別資源是否可用,是否具有查詢功能4.2若資源具有查詢功能,則得到其查詢功能。4.3依據(jù)原有的矩形,構(gòu)造一個(gè)空間查詢矩形對(duì)象。4.4取出可查詢圖層,到一個(gè)查詢結(jié)果圖層數(shù)組。4.5從可查詢圖層中,查詢每個(gè)圖層中的對(duì)象。4.6送到網(wǎng)頁(yè)上顯示。第19頁(yè),共50頁(yè),2024年2月25日,星期天主要步驟5.其他輔助函數(shù)5.1編寫一個(gè)函數(shù),利用GridView將數(shù)據(jù)表中內(nèi)容顯示到表格中,其中借助HtmlTextWriter類,將表格的內(nèi)容轉(zhuǎn)換成html格式的字符串。5.2編寫另一個(gè)函數(shù),將數(shù)據(jù)表轉(zhuǎn)換成html表格格式的字符串,并把該字符串賦值給地圖網(wǎng)頁(yè)上的一個(gè)隱藏的文本框控件,調(diào)用open方法,彈出“屬性查詢頁(yè)面”。5.3通過(guò)地圖控件的CallBackResults屬性中設(shè)定事件響應(yīng)機(jī)制,設(shè)定響應(yīng)的事件,以及事件響應(yīng)函數(shù)。6.編寫一個(gè)彈出信息屬性窗口的網(wǎng)頁(yè)第20頁(yè),共50頁(yè),2024年2月25日,星期天課堂實(shí)踐自定義矩形查詢:P93-P96補(bǔ):自定義點(diǎn)查詢編程實(shí)現(xiàn)第21頁(yè),共50頁(yè),2024年2月25日,星期天課堂實(shí)踐自定義矩形查詢:P93-P96第22頁(yè),共50頁(yè),2024年2月25日,星期天自定義多邊型查詢第23頁(yè),共50頁(yè),2024年2月25日,星期天實(shí)現(xiàn)步驟1.給自定義Tool增加一個(gè)地圖關(guān)聯(lián)事件,設(shè)定關(guān)聯(lián)的響應(yīng)。2.響應(yīng)之處實(shí)現(xiàn)一個(gè)IMapServerToolAction接口的ServerAction函數(shù):(1)得到地圖控件(2)得到地圖控件上被指定的圖形。(3)得到圖形所對(duì)應(yīng)或覆蓋到的對(duì)象。(4)把屏幕對(duì)象映射到地圖對(duì)象。(5)得到地圖對(duì)象位置所對(duì)應(yīng)的圖層的各個(gè)對(duì)象。(6)把結(jié)果送給網(wǎng)頁(yè)窗口顯示。(7)接收并把結(jié)果轉(zhuǎn)換成html格式的字符串,通過(guò)地圖控件的回傳處理函數(shù),把字符串顯示在彈出的網(wǎng)頁(yè)上。

第24頁(yè),共50頁(yè),2024年2月25日,星期天自定義自定義多邊形的獲取從屏幕上的多邊形得到地圖上的多邊形……以多邊形為過(guò)濾條件進(jìn)行空間查詢……第25頁(yè),共50頁(yè),2024年2月25日,星期天自定義多邊形的獲取第26頁(yè),共50頁(yè),2024年2月25日,星期天從屏幕上的多邊形得到地圖上的多邊形從屏幕上的多邊形得到各個(gè)拐點(diǎn)(點(diǎn)的集合)把屏幕上各點(diǎn)轉(zhuǎn)換成地圖上的對(duì)應(yīng)點(diǎn)把地圖上的各點(diǎn)形成地圖上的多邊形第27頁(yè),共50頁(yè),2024年2月25日,星期天多邊形轉(zhuǎn)換從屏幕上的多邊形得到各個(gè)拐點(diǎn)(點(diǎn)的集合),把屏幕上各點(diǎn)轉(zhuǎn)換成地圖上的對(duì)應(yīng)點(diǎn)第28頁(yè),共50頁(yè),2024年2月25日,星期天多邊形轉(zhuǎn)換把地圖上的各點(diǎn)形成地圖上的多邊形知識(shí):從地圖上的點(diǎn)集合,形成到地圖上的環(huán),到地圖上的多邊形Ring是ESRI.ArcGIS.ADF.Web.Geometry.RingRingCollection是ESRI.ArcGIS.ADF.Web.Geometry.RingCollection第29頁(yè),共50頁(yè),2024年2月25日,星期天后續(xù)任務(wù)空間查詢,得到查詢結(jié)果集查詢結(jié)果集轉(zhuǎn)換、顯示第30頁(yè),共50頁(yè),2024年2月25日,星期天自定義多邊形查詢屬性的實(shí)現(xiàn)仍然需要一個(gè)響應(yīng)類,和支持類的輔助。對(duì)于自定義多變形查詢來(lái)說(shuō),需要增加一個(gè)函數(shù),實(shí)現(xiàn)多邊形坐標(biāo)系統(tǒng)的轉(zhuǎn)換。第31頁(yè),共50頁(yè),2024年2月25日,星期天響應(yīng)類publicclassIdentifyPolygon:IMapServerToolAction{ voidIMapServerToolAction.ServerAction(ToolEventArgsargs){Mapmap=args.ControlasMap;PolygonEventArgspolyArgs=

(PolygonEventArgs)args;PolygonmapPoly=GeometryHelper.GetMapPolygon(map,polyArgs);IdentifyHelper.Identify(map,mapPoly);}}第32頁(yè),共50頁(yè),2024年2月25日,星期天自定義多邊形查詢屬性的實(shí)現(xiàn)仍然需要一個(gè)響應(yīng)類,和支持類(共2個(gè)IdentifyHelpe、GeometryHelper)的輔助。對(duì)于自定義多變形查詢來(lái)說(shuō),需要增加一個(gè)函數(shù),實(shí)現(xiàn)多邊形坐標(biāo)系統(tǒng)的轉(zhuǎn)換。第33頁(yè),共50頁(yè),2024年2月25日,星期天響應(yīng)類publicclassIdentifyPolygon:IMapServerToolAction{ voidIMapServerToolAction.ServerAction(ToolEventArgsargs){Mapmap=args.ControlasMap;PolygonEventArgspolyArgs=

(PolygonEventArgs)args;PolygonmapPoly=GeometryHelper.GetMapPolygon(map,polyArgs);IdentifyHelper.Identify(map,mapPoly);}}第34頁(yè),共50頁(yè),2024年2月25日,星期天支持類的成員publicstaticvoidIdentify(Mapmap,ESRI.ArcGIS.ADF.Web.Geometry.GeometrymapGeometry)publicstaticvoidShowIdentifyResult(Mapmap,DataTableCollectiondtc)publicstaticstringGetHtmlFromDataTable(DataTabledt)publicstaticvoidAddJavaScriptCallback(Mapmap,stringexecuteString)第35頁(yè),共50頁(yè),2024年2月25日,星期天Identify()方法的作用及組成步驟IdentifyHelper.Identify(mapCtrl,mapGeometry),接受傳遞而來(lái)的參量數(shù)值。判別資源是否可用,是否具有查詢功能,若資源具有查詢功能,則得到其查詢功能。依據(jù)原有的形狀對(duì)象,構(gòu)造一個(gè)空間查詢對(duì)象。利用該查詢對(duì)象從可查詢圖層中過(guò)濾出查詢結(jié)果圖層數(shù)組。從可查詢圖層數(shù)組中查詢每個(gè)圖層中的對(duì)象(遍歷),送到一個(gè)dataSet中。再把dataSet的Table送到DataTableCollection對(duì)象中。形成Html字符串,送給瀏覽器顯示。第36頁(yè),共50頁(yè),2024年2月25日,星期天對(duì)比在響應(yīng)類中的處理部分Mapmap=args.ControlasMap;

點(diǎn)查詢:

PointEventArgspea=(PointEventArgs)args;System.Drawing.Pointscreen_point=pea.ScreenPoint;Pointpoint=Point.ToMapPoint();……矩形查詢RectangleEventArgsrectargs=(RectangleEventArgs)args;System.Drawing.Rectanglemyrect=rectargs.ScreenExtent;

頂點(diǎn)坐標(biāo)轉(zhuǎn)換;形成地圖上的矩形;IdentifyHelper.Identify(mapCtrl,mapGeometry);多邊形查詢

PolygonEventArgspolyArgs=(PolygonEventArgs)args;PolygonmapPoly=GeometryHelper.GetMapPolygon(map,polyArgs);IdentifyHelper.Identify(map,mapPoly);圓查詢CircleEventArgscircleArgs=(CircleEventArgs)args;PolygonmapPoly=GeometryHelper.GetMapPolygon(map,circleArgs);IdentifyHelper.Identify(map,mapmapGeometry);

第37頁(yè),共50頁(yè),2024年2月25日,星期天課堂實(shí)踐自定義多邊形查詢:P96-P97補(bǔ):自定義點(diǎn)查詢編程實(shí)現(xiàn)自定義矩形查詢編程實(shí)現(xiàn)第38頁(yè),共50頁(yè),2024年2月25日,星期天課堂實(shí)踐自定義矩形查詢:P93-P96自定義多邊形查詢:P96-P97程序錄入:建立一個(gè)類庫(kù)GisFunctionality,在其中輸入函數(shù)P103(2)、P104(2)、P105(5)第39頁(yè),共50頁(yè),2024年2月25日,星期天自定義圓查詢的實(shí)現(xiàn)第40頁(yè),共50頁(yè),2024年2月25日,星期天程序?qū)崿F(xiàn)機(jī)制和自定義多邊形查詢屬性一致。程序結(jié)構(gòu)是:響應(yīng)類、支持類、圖形轉(zhuǎn)換類、彈出網(wǎng)頁(yè)。第41頁(yè),共50頁(yè),2024年2月25日,星期天響應(yīng)類IdentifyCircle類publicclassIdentifyCircle:IMapServerToolAction{voidIMapServerToolAction.ServerAction(ToolEventArgsargs){Mapmap=args.ControlasMap;CircleEventArgscircleArgs=(CircleEventArgs)args;PolygonmapPoly=GeometryHelper.GetMapPolygon(map,circleArgs);IdentifyHelper.Identify(map,mapPoly);}}第42頁(yè),共50頁(yè),2024年2月25日,星期天需要使用類的介紹GraphicsPath類,表示一系列相互連接的直線和曲線。GraphicsPath.Flatten(),將此路徑中的各段曲線轉(zhuǎn)換成相連的線段序列。Matrix類,是一個(gè)矩陣類,Matrix.Translate()方法用于實(shí)現(xiàn)一個(gè)矩陣轉(zhuǎn)換。第43頁(yè),共50頁(yè),2024年2月25日,星期天publicstaticESRI.ArcGIS.ADF.Web.Geometry.PolygonGetMapPolygon(Mapmap,CircleEventArgscircleArgs){System.Drawing.PointscreenPointCenter=newSystem.Drawing.Point((int)circleArgs.CenterPoint.X,(int)circleArgs.CenterPoint.Y);System.Drawing.PointscreenPointBrink=newSystem.Drawing.Point((int)circleArgs.CenterPoint.X,(int)circleArgs.CenterPoint.Y+(int)circleArgs.Radius);

……}第44頁(yè),共50頁(yè),2024年2月25日,星期天從屏幕坐標(biāo)轉(zhuǎn)換到地圖坐標(biāo)PointmapPointCenter=Point.ToMapPoint(screenPointCenter,map.Extent,(int)map.Width.Value,(int)map.Height.Value);PointmapPointBrink=Point.ToMapPoint(screenPointBrink,map.Extent,(int)map.Width.Value,(int)map.Height.Value);得到地圖坐標(biāo)中的半徑doubleradius=Math.Sqrt((mapPointCenter.X-mapPointBrink.X)*(mapPointCenter.X-mapPointBrink.X)+(mapPointCenter.Y-mapPointBrink.Y)*(mapPointCenter.Y-mapPointBrink.Y));第45頁(yè),共50頁(yè),2024年2月25日,星期天思路:以圓心為中心畫一個(gè)橢圓,橢圓邊上分為若干段,再將地圖上的點(diǎn)集合,集中到地圖上的線,再到地圖上的多邊形。第46頁(yè),共50頁(yè),2024年2月25日,星期天GraphicsPathgpath=newGraphicsPath();gpath.AddEllipse((float)(mapPointCenter.X-radius),

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論