




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、SharpMap要素查詢要素查詢 實例一:拉框查詢要素屬性 實例二:點擊查詢要素屬性 實例三:屬性查詢 代碼剖析 1、單擊事件中調用代碼 2、QueryMapByClick函數(shù) 3、ExecuteIntersectionQuery函數(shù)實例一:拉框查詢要素屬性4在 圖形的ImgMap_Click事件單擊,查詢要素屬性,所調用的代碼SharpMap.Geometries.Point ClickPnt = myMap.ImageToWorld(new System.Drawing.Point(e.X, e.Y);SharpMap.Data.FeatureDataSet dsResult; dsRes
2、ult = QueryMapByClick(ClickPnt2, ClickPnt); if (dsResult.Tables.Count 0) SessionTHETABLE = dsResult; SessionTABLENUM = 1; string strNames = ;/如何獲取選中要素的屬性數(shù)據(jù) foreach (DataRow dr in dsResult.Tables0.Rows) strNames = strNames + dr0.ToString() + ,; .1、單擊事件中調用代碼./打開顯示站點屬性的頁面if (strNames.Length 0) strNames
3、 = strNames.Substring(0, strNames.Length - 1); string strURL = StationInfo.aspx?StationName= + strNames; string strPage = window.open( + strURL + ,站點屬性,height=450,width=470,status=no,toolbar=no,menubar=no,scrollbars=yes,location=no); Response.Write(strPage); 1、單擊事件中調用代碼 /將選中的要素產(chǎn)生一個新的圖層,高亮度顯示 SharpMa
4、p.Layers.VectorLayer laySelected = new SharpMap.Layers.VectorLayer(Selection); SharpMap.Data.Providers.GeometryProvider objGeoPrd = new SharpMap.Data.Providers.GeometryProvider(dsResult.Tables0); laySelected.DataSource = objGeoPrd; laySelected.Style.Symbol = new Bitmap(HttpContext.Current.Server.Map
5、Path(App_dataStation2.bmp); laySelected.Style.SymbolScale = 0.8f; myMap.Layers.Add(laySelected);/刷新地圖 1、單擊事件中調用代碼需重點掌握 QueryMapByClick函數(shù) 如何提取查詢結果信息 foreach (DataRow dr in dsResult.Tables0.Rows)1. 如何構建新的選擇集圖層,并設置符號,高亮度顯示注意2、QueryMapByClick函數(shù)private SharpMap.Data.FeatureDataSet QueryMapByClick(SharpMa
6、p.Geometries.Point clickPoint1, SharpMap.Geometries.Point clickPoint2) SharpMap.Data.FeatureDataSet ds = new SharpMap.Data.FeatureDataSet(); SharpMap.Geometries.BoundingBox objBounds; if (clickPoint1.X != clickPoint2.X) objBounds = new SharpMap.Geometries.BoundingBox(clickPoint1.X, clickPoint1.Y, cl
7、ickPoint2.X, clickPoint2.Y); else objBounds = new SharpMap.Geometries.BoundingBox(clickPoint1.X - 0.01, clickPoint1.Y - 0.01, clickPoint1.X + 0.01, clickPoint1.Y + 0.01); 2、QueryMapByClick函數(shù). /Execute click-query on first layer in layers collection SharpMap.Layers.VectorLayer objVLyr = myMap.Layers站
8、點站點 as SharpMap.Layers.VectorLayer; if (!objVLyr.DataSource.IsOpen) objVLyr.DataSource.Open(); objVLyr.DataSource.ExecuteIntersectionQuery(objBounds, ds); if (ds.Tables.Count 0) /We have a result return ds; public void ExecuteIntersectionQuery(SharpMap.Geometries.BoundingBox box, FeatureDataSet ds)
9、FeatureDataTable fdt = new FeatureDataTable(); fdt = _features.Clone(); foreach (FeatureDataRow fdr in _features) if (fdr.Geometry.GetBoundingBox().Intersects(box) fdt.LoadDataRow(fdr.ItemArray, false); (fdt.Rowsfdt.Rows.Count - 1 as FeatureDataRow).Geometry = fdr.Geometry; ds.Tables.Add(fdt); /priv
10、ate FeatureDataTable _features;3、ExecuteIntersectionQuery函數(shù) ExecuteIntersectionQuery函數(shù)為sharpmap內(nèi)部函數(shù),僅需了解 代碼剖析 1、單擊事件中調用代碼 2、QueryMapByClick函數(shù) 3、ExecuteIntersectionQuery函數(shù)實例二:點擊查詢要素屬性 if (rblMapTools.SelectedValue = 3) SharpMap.Geometries.Point ClickPnt = myMap.ImageToWorld(new System.Drawing.Point(e
11、.X, e.Y); SharpMap.Data.FeatureDataSet dsResult; dsResult = QueryMapByClick(ClickPnt); if (dsResult.Tables.Count 0) lblProperty.Text = ; foreach (System.Data.DataRow dr in dsResult.Tables0.Rows) lblProperty.Text += 屬性:屬性:; for (int i = 0; i dsResult.Tables0.Columns.Count; i+) lblProperty.Text += + d
12、sResult.Tables0.Columnsi.ColumnName; lblProperty.Text += + dri.ToString() + ; lblProperty.Text += ; lblProperty.Visible = true; 。 for (int i = 0; i dsResult.Tables0.Columns.Count; i+) lblProperty.Text += + dsResult.Tables0.Columnsi.ColumnName; lblProperty.Text += + dri.ToString() + ; lblProperty.Tex
13、t += ; lblProperty.Visible = true; QueryMapByClick函數(shù)函數(shù)private SharpMap.Data.FeatureDataSet QueryMapByClick(SharpMap.Geometries.Point clickPoint) SharpMap.Data.FeatureDataSet ds = new SharpMap.Data.FeatureDataSet(); SharpMap.Layers.VectorLayer objVLyr = myMap.Layers0 as SharpMap.Layers.VectorLayer; i
14、f (!objVLyr.DataSource.IsOpen) objVLyr.DataSource.Open(); SharpMap.Geometries.BoundingBox objBounds = new SharpMap.Geometries.BoundingBox(clickPoint.X - 0.01, clickPoint.Y - 0.01, clickPoint.X + 0.01, clickPoint.Y + 0.01); objVLyr.DataSource.ExecuteIntersectionQuery(objBounds, ds); / objVLyr.DataSou
15、rce.ExecuteIntersectionQuery(clickPoint, ds); if (ds.Tables.Count 0) /We have a result /Add clicked features to a new selection layer SharpMap.Layers.VectorLayer laySelected = new SharpMap.Layers.VectorLayer(Selection); laySelected.DataSource = new SharpMap.Data.Providers.GeometryProvider(ds.Tables0
16、); laySelected.Style.Fill = new System.Drawing.SolidBrush(System.Drawing.Color.Yellow); myMap.Layers.Add(laySelected); return ds; QueryMapByClick函數(shù)函數(shù)。 laySelected.DataSource = new SharpMap.Data.Providers.GeometryProvider(ds.Tables0); laySelected.Style.Fill = new System.Drawing.SolidBrush(System.Draw
17、ing.Color.Yellow); myMap.Layers.Add(laySelected); return ds; 為sharpMap內(nèi)部函數(shù),與上同3、ExecuteIntersectionQuery函數(shù) 依據(jù)查詢條件,查詢要素 獲取該要素的屬性 高亮度顯示該要素實例三:屬性查詢private void QueryFeatureByAttri(string sLayerName, string sFieldName, string sFieldValue) SharpMap.Data.FeatureDataSet ds = new SharpMap.Data.FeatureDataSe
18、t(); SharpMap.Layers.VectorLayer objVLyr = myMap.LayerssLayerName as SharpMap.Layers.VectorLayer; if (objVLyr != null) long count = objVLyr.DataSource.GetFeatureCount(); if (!objVLyr.DataSource.IsOpen) objVLyr.DataSource.Open(); SharpMap.Data.FeatureDataRow tempFeat; for (uint i = 0; i count; i+) te
19、mpFeat = objVLyr.DataSource.GetFeature(i); lblProperty.Text = tempFeatsFieldName.ToString();/判斷字段值是否相等,若相等,則查詢到該要素 if (tempFeatsFieldName.ToString() = sFieldValue) /高亮度顯示該要素 SharpMap.Data.FeatureDataTable tempTable = new SharpMap.Data.FeatureDataTable(); tempTable = (tempFeat.Table as SharpMap.Data.
20、FeatureDataTable).Clone(); tempTable.LoadDataRow(tempFeat.ItemArray, false); FeatureDataRow tempRow; tempRow = tempTable.RowstempTable.Rows.Count - 1 as FeatureDataRow; tempRow.Geometry = tempFeat.Geometry; SharpMap.Layers.VectorLayer laySelected = new SharpMap.Layers.VectorLayer(Selection); laySele
21、cted.DataSource = new SharpMap.Data.Providers.GeometryProvider(tempTable); laySelected.Style.Fill = new System.Drawing.SolidBrush(System.Drawing.Color.Yellow); myMap.Layers.Add(laySelected); /顯示該要素的其他屬性 lblProperty.Text = ; lblProperty.Text += 屬性:; for (int j = 0; j tempFeat.Table.Columns.Count; j+)
22、 / lblProperty.Text += tempFeat.Table.Columnsi.ColumnName+ +tempFeati.ToString()+ lblProperty.Text += + tempFeat.Table.Columnsj.ColumnName; lblProperty.Text += + tempFeatj.ToString() + ; lblProperty.Visible = true; break; /判斷字段值是否相等,若相等,則查詢到該要素 if (tempFeatsFieldName.ToString() = sFieldValue) /高亮度顯示
23、該要素 SharpMap.Data.FeatureDataTable tempTable = new SharpMap.Data.FeatureDataTable(); tempTable = (tempFeat.Table as SharpMap.Data.FeatureDataTable).Clone(); tempTable.LoadDataRow(tempFeat.ItemArray, false); FeatureDataRow tempRow; tempRow = tempTable.RowstempTable.Rows.Count - 1 as FeatureDataRow; t
24、empRow.Geometry = tempFeat.Geometry; SharpMap.Layers.VectorLayer laySelected = new SharpMap.Layers.VectorLayer(Selection); laySelected.DataSource = new SharpMap.Data.Providers.GeometryProvider(tempTable); laySelected.Style.Fill = new System.Drawing.SolidBrush(System.Drawing.Color.Yellow); myMap.Layers.Add(laySelected); /顯示該要素的其他屬性 lblProperty.Text = ; lblProperty.Text += 屬性:; for (int j = 0; j tempFeat.Table.Columns.Count; j+) / lbl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 印刷畫冊合同范本模板
- 南昌吊車出租合同范本
- 包裝印刷協(xié)議合同范本
- 農(nóng)村房出售合同范本
- 午餐外包合同范本
- 受托收款合同范本
- 保潔用工安全合同范本
- 勞務咨詢合同范本
- 公司出售居間服務合同范本
- 修路租用土地合同范本
- 大學生安全知識班會
- 《電力變壓器》課件
- 初級鐵路線路工技能鑒定考試題庫
- 2025年度建筑垃圾運輸與再生資源回收一體化合同樣本
- 2024新人教版英語七下單詞默寫表(開學版)
- 河南省信陽市固始縣2023-2024學年四年級下學期期末數(shù)學試題
- 不吸煙不喝酒課件
- 奧數(shù)知識點 間隔問題
- 簡易旋轉倒立擺及控制裝置
- 深圳大學《數(shù)字信號處理》2009年期末考試試卷A卷
- BMC缺陷以及原因
評論
0/150
提交評論