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

下載本文檔

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

文檔簡介

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

第24頁,共50頁,2024年2月25日,星期天自定義自定義多邊形的獲取從屏幕上的多邊形得到地圖上的多邊形……以多邊形為過濾條件進(jìn)行空間查詢……第25頁,共50頁,2024年2月25日,星期天自定義多邊形的獲取第26頁,共50頁,2024年2月25日,星期天從屏幕上的多邊形得到地圖上的多邊形從屏幕上的多邊形得到各個拐點(點的集合)把屏幕上各點轉(zhuǎn)換成地圖上的對應(yīng)點把地圖上的各點形成地圖上的多邊形第27頁,共50頁,2024年2月25日,星期天多邊形轉(zhuǎn)換從屏幕上的多邊形得到各個拐點(點的集合),把屏幕上各點轉(zhuǎn)換成地圖上的對應(yīng)點第28頁,共50頁,2024年2月25日,星期天多邊形轉(zhuǎn)換把地圖上的各點形成地圖上的多邊形知識:從地圖上的點集合,形成到地圖上的環(huán),到地圖上的多邊形Ring是ESRI.ArcGIS.ADF.Web.Geometry.RingRingCollection是ESRI.ArcGIS.ADF.Web.Geometry.RingCollection第29頁,共50頁,2024年2月25日,星期天后續(xù)任務(wù)空間查詢,得到查詢結(jié)果集查詢結(jié)果集轉(zhuǎn)換、顯示第30頁,共50頁,2024年2月25日,星期天自定義多邊形查詢屬性的實現(xiàn)仍然需要一個響應(yīng)類,和支持類的輔助。對于自定義多變形查詢來說,需要增加一個函數(shù),實現(xiàn)多邊形坐標(biāo)系統(tǒng)的轉(zhuǎn)換。第31頁,共50頁,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頁,共50頁,2024年2月25日,星期天自定義多邊形查詢屬性的實現(xiàn)仍然需要一個響應(yīng)類,和支持類(共2個IdentifyHelpe、GeometryHelper)的輔助。對于自定義多變形查詢來說,需要增加一個函數(shù),實現(xiàn)多邊形坐標(biāo)系統(tǒng)的轉(zhuǎn)換。第33頁,共50頁,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頁,共50頁,2024年2月25日,星期天支持類的成員publicstaticvoidIdentify(Mapmap,ESRI.ArcGIS.ADF.Web.Geometry.GeometrymapGeometry)publicstaticvoidShowIdentifyResult(Mapmap,DataTableCollectiondtc)publicstaticstringGetHtmlFromDataTable(DataTabledt)publicstaticvoidAddJavaScriptCallback(Mapmap,stringexecuteString)第35頁,共50頁,2024年2月25日,星期天Identify()方法的作用及組成步驟IdentifyHelper.Identify(mapCtrl,mapGeometry),接受傳遞而來的參量數(shù)值。判別資源是否可用,是否具有查詢功能,若資源具有查詢功能,則得到其查詢功能。依據(jù)原有的形狀對象,構(gòu)造一個空間查詢對象。利用該查詢對象從可查詢圖層中過濾出查詢結(jié)果圖層數(shù)組。從可查詢圖層數(shù)組中查詢每個圖層中的對象(遍歷),送到一個dataSet中。再把dataSet的Table送到DataTableCollection對象中。形成Html字符串,送給瀏覽器顯示。第36頁,共50頁,2024年2月25日,星期天對比在響應(yīng)類中的處理部分Mapmap=args.ControlasMap;

點查詢:

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

頂點坐標(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頁,共50頁,2024年2月25日,星期天課堂實踐自定義多邊形查詢:P96-P97補:自定義點查詢編程實現(xiàn)自定義矩形查詢編程實現(xiàn)第38頁,共50頁,2024年2月25日,星期天課堂實踐自定義矩形查詢:P93-P96自定義多邊形查詢:P96-P97程序錄入:建立一個類庫GisFunctionality,在其中輸入函數(shù)P103(2)、P104(2)、P105(5)第39頁,共50頁,2024年2月25日,星期天自定義圓查詢的實現(xiàn)第40頁,共50頁,2024年2月25日,星期天程序?qū)崿F(xiàn)機制和自定義多邊形查詢屬性一致。程序結(jié)構(gòu)是:響應(yīng)類、支持類、圖形轉(zhuǎn)換類、彈出網(wǎng)頁。第41頁,共50頁,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頁,共50頁,2024年2月25日,星期天需要使用類的介紹GraphicsPath類,表示一系列相互連接的直線和曲線。GraphicsPath.Flatten(),將此路徑中的各段曲線轉(zhuǎn)換成相連的線段序列。Matrix類,是一個矩陣類,Matrix.Translate()方法用于實現(xiàn)一個矩陣轉(zhuǎn)換。第43頁,共50頁,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頁,共50頁,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頁,共50頁,2024年2月25日,星期天思路:以圓心為中心畫一個橢圓,橢圓邊上分為若干段,再將地圖上的點集合,集中到地圖上的線,再到地圖上的多邊形。第46頁,共50頁,2024年2月25日,星期天GraphicsPathgpath=newGraphicsPath();gpath.AddEllipse((float)(mapPointCenter.X-radius),

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論