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

下載本文檔

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

文檔簡介

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

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

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

(PolygonEventArgs)args;PolygonmapPoly=GeometryHelper.GetMapPolygon(map,polyArgs);IdentifyHelper.Identify(map,mapPoly);}}第三十四頁,共五十頁,編輯于2023年,星期二支持類的成員publicstaticvoidIdentify(Mapmap,ESRI.ArcGIS.ADF.Web.Geometry.GeometrymapGeometry)publicstaticvoidShowIdentifyResult(Mapmap,DataTableCollectiondtc)publicstaticstringGetHtmlFromDataTable(DataTabledt)publicstaticvoidAddJavaScriptCallback(Mapmap,stringexecuteString)第三十五頁,共五十頁,編輯于2023年,星期二Identify()方法的作用及組成步驟IdentifyHelper.Identify(mapCtrl,mapGeometry),接受傳遞而來的參量數(shù)值。判別資源是否可用,是否具有查詢功能,若資源具有查詢功能,則得到其查詢功能。依據(jù)原有的形狀對象,構(gòu)造一個(gè)空間查詢對象。利用該查詢對象從可查詢圖層中過濾出查詢結(jié)果圖層數(shù)組。從可查詢圖層數(shù)組中查詢每個(gè)圖層中的對象(遍歷),送到一個(gè)dataSet中。再把dataSet的Table送到DataTableCollection對象中。形成Html字符串,送給瀏覽器顯示。第三十六頁,共五十頁,編輯于2023年,星期二對比在響應(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);

第三十七頁,共五十頁,編輯于2023年,星期二課堂實(shí)踐自定義多邊形查詢:P96-P97補(bǔ):自定義點(diǎn)查詢編程實(shí)現(xiàn)自定義矩形查詢編程實(shí)現(xiàn)第三十八頁,共五十頁,編輯于2023年,星期二課堂實(shí)踐自定義矩形查詢:P93-P96自定義多邊形查詢:P96-P97程序錄入:建立一個(gè)類庫GisFunctionality,在其中輸入函數(shù)P103(2)、P104(2)、P105(5)第三十九頁,共五十頁,編輯于2023年,星期二自定義圓查詢的實(shí)現(xiàn)第四十頁,共五十頁,編輯于2023年,星期二程序?qū)崿F(xiàn)機(jī)制和自定義多邊形查詢屬性一致。程序結(jié)構(gòu)是:響應(yīng)類、支持類、圖形轉(zhuǎn)換類、彈出網(wǎng)頁。第四十一頁,共五十頁,編輯于2023年,星期二響應(yīng)類IdentifyCircle類publicclassIdentifyCircle:IMapServerToolAction{voidIMapServerToolAction.ServerAction(ToolEventArgsargs){Mapmap=args.ControlasMap;CircleEventArgscircleArgs=(CircleEventArgs)args;PolygonmapPoly=GeometryHelper.GetMapPolygon(map,circleArgs);IdentifyHelper.Identify(map,mapPoly);}}第四十二頁,共五十頁,編輯于2023年,星期二需要使用類的介紹GraphicsPath類,表示一系列相互連接的直線和曲線。GraphicsPath.Flatten(),將此路徑中的各段曲線轉(zhuǎn)換成相連的線段序列。Matrix類,是一個(gè)矩陣類,Matrix.Translate()方法用于實(shí)現(xiàn)一個(gè)矩陣轉(zhuǎn)換。第四十三頁,共五十頁,編輯于2023年,星期二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);

……}第四十四頁,共五十頁,編輯于2023年,星期二從屏幕坐標(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));第四十五頁,共五十頁,編輯于2023年,星期二思路:以圓心為中心畫一個(gè)橢圓,橢圓邊上分為若干段,再將地圖上的點(diǎn)集合,集中到地圖上的線,再到地圖上的多邊形。第四十六頁,共五十頁,編輯于2023年,星期二GraphicsPathgpath=newGraphicsPath();gpath.AddEllipse((float)(mapPointCenter.X-radius),(flo

溫馨提示

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

評論

0/150

提交評論