1. 程式人生 > >C#開發ArcGIS Engine根據座標提取對應區的屬性(點選查詢)

C#開發ArcGIS Engine根據座標提取對應區的屬性(點選查詢)

AE 點選查詢 
        IMap pMap = axMapControl1.Map;
            IActiveView pActiveView = pMap as IActiveView;
            IFeatureLayer pFeatureLayer = pMap.get_Layer(0) as IFeatureLayer;
            IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;

            //設定點選點的位置
            IPoint point = pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(e.x, e.y);
            ITopologicalOperator pTOpo = point as ITopologicalOperator;
            double length;
            length = ConvertPixelsToMapUnits(pActiveView, 4);
            IGeometry pBuffer = pTOpo.Buffer(length);
            IGeometry pGeomentry = pBuffer.Envelope;
            //空間濾過器
            ISpatialFilter pSpatialFilter = new SpatialFilter();
            pSpatialFilter.Geometry = pGeomentry;
            //根據被選擇要素的不同,設定不同的空間濾過關係
            switch (pFeatureClass.ShapeType)
            {
                case esriGeometryType.esriGeometryPoint:
                    pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelContains;
                    break;
                case esriGeometryType.esriGeometryPolyline:
                    pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelCrosses;
                    break;
                case esriGeometryType.esriGeometryPolygon:
                    pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;
                    break;

            }
            IFeatureSelection pFSelection = pFeatureLayer as IFeatureSelection;
            pFSelection.SelectFeatures(pSpatialFilter, esriSelectionResultEnum.esriSelectionResultNew, false);
            ISelectionSet pSelectionset = pFSelection.SelectionSet;
            ICursor pCursor;
            pSelectionset.Search(null, true, out pCursor);
            IFeatureCursor pFeatCursor = pCursor as IFeatureCursor;
            IFeature pFeature = pFeatCursor.NextFeature();
            while (pFeature != null)
            {
                pMap.SelectFeature(pFeatureLayer, pFeature);
                pFeature = pFeatCursor.NextFeature();
pFeture.get_value("");//在這裡你可以寫上想要獲取的屬性的欄位
            }
            pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphicSelection, null, null);

上述的自定義函式是將距離的轉換

private double ConvertPixelsToMapUnits(IActiveView pActiveView, double pixelUnits)
        {
            // Uses the ratio of the size of the map in pixels to map units to do the conversion
            IPoint p1 = pActiveView.ScreenDisplay.DisplayTransformation.VisibleBounds.UpperLeft;
            IPoint p2 = pActiveView.ScreenDisplay.DisplayTransformation.VisibleBounds.UpperRight;
            int x1, x2, y1, y2;
            pActiveView.ScreenDisplay.DisplayTransformation.FromMapPoint(p1, out x1, out y1);
            pActiveView.ScreenDisplay.DisplayTransformation.FromMapPoint(p2, out x2, out y2);
            double pixelExtent = x2 - x1;
            double realWorldDisplayExtent = pActiveView.ScreenDisplay.DisplayTransformation.VisibleBounds.Width;
            double sizeOfOnePixel = realWorldDisplayExtent / pixelExtent;
            return pixelUnits * sizeOfOnePixel;
        }

相關推薦

C#開發ArcGIS Engine根據座標提取對應屬性查詢

AE 點選查詢 IMap pMap = axMapControl1.Map; IActiveView pActiveView = pMap as IActiveView; IFeatureLayer pFeatureLayer = pMap.

ArcGIS Engine簡單圖形繪製功能的實現、線、面

我們新增點、線、面來實現圖形的編輯需要使用Geometry物件類。         Point(點) 是一個0維的幾何圖形,具有X、Y座標值,以及可選的屬性,如高程值(Z值)、度量值(M值)、ID值等,可用於描述需要精確定位的物件。 Polyline(線) 是一個有序

C#基於ArcGIS Engine寫的要素圖層工具類

用於從MapControl中獲取可見圖層、獲取指定圖層名等: using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.Controls; using ESRI.ArcGIS.Geodatabase; using ESRI.ArcGIS.Geometry; usi

C#和ArcGIS Engine實現在地圖上繪製形狀

初始化時將地圖控制元件MapControl傳進來,繪製過程中監聽滑鼠操作事件,適情況隱藏父級窗體,繪製點、多段線、多邊形、圓形、矩形等。 public class DrawGeometryHelper { private IMapControl2 m_pMap

C#開發系統服務時用的定時器元件修正版

// 相較上一版本改進 // 1. 修改Bug // 當設定每月一次頻率時,設定的Day日期如果為31,30,29,在有些年份的有些月份會丟擲異常,因為有些月份是沒有31天的,改正之後, // 如果設定了31天,則只有有31天的月份會執行。 // 2. 修正一年中某天的日期

使用ArcGIS Engine來實現地圖的查詢並閃爍

ArcGIS Engine沒有提供在MapControl中點選查詢的命令,只是提供了ReaderControl中的使用的點選查詢的命令,下面的程式碼就是實現點選查詢並閃爍的程式碼。 過程描述 Private Sub MapControl1_OnMouseDown(ByVal

ArcGIS Engine專題地圖渲染器的實現入門版

專題地圖(Thematic Map)是著重表示一種或數種自然要素特徵或社會經濟現象的地圖     專題地圖的內容由兩部分構成: 1、專題內容——圖上突出表示的自然或社會經濟現象及其有關特徵 2、地理基礎——用以標明專題要素空間位置與地理背景的普通地圖內容,主要有經緯網、水系、境界、居民地等

C#儀器數據文件解析-Excel文件xls、xlsx

sheet 解析 工作站 row 問題 .get 壓縮 安裝 shee 不少儀器工作站可以將數據導出為Excel文件,包括97-2003版本的xls文件和2007+的xlsx文件。 采集Excel文件相比采集pdf文件更容易、程序更健壯,畢竟Excel中數據有明確的行、列

C#儀器數據文件解析-Word文件doc、docx

new read ffi 數據文件 word 不同 軟件 情況下 如果 不少儀器數據報告輸出為Word格式文件,同Excel文件,Word文件doc和docx的存儲格式是不同的,相應的解析Word文件的方式也類似,主要有以下方式: 1.通過MS Word應用程序的DCOM

c語言程序設計第3周編程作業數字特征

對數 bsp idt 作業 表格 技術分享 很快 lec .com 題目內容: 對數字求特征值是常用的編碼算法,奇偶特征是一種簡單的特征值。對於一個整數,從個位開始對每一位數字編號,個位是1號,十位是2號,以此類推。這個整數在第n位上的數字記作x,如果x和n的奇偶性相同,

iOS11 開發你了解這些新特性嗎?文末福利

iOS 11 Xcode 9 編程語言 點擊標題下「異步社區」可快速關註iOS是一個強大的系統,被廣泛地應用於蘋果公司的系列產品iPhone、iPad和iTouch設備中。iOS通過這些移動設備展示了多點觸摸、在線視頻以及眾多內置傳感器的界面。本文將帶領大家認識iOS這款系統,為讀者步入後面知識的

c# 日期函數DateTime.ToString()日期的各種格式 本人親測

OS lan src localtime except tool 索引超出 exceptio 記錄 平時寫代碼的過程難免遇到對日期的格式轉換,這個時候很容易忘記具體格式的轉換是什麽,當然這不是什麽復雜的,查一下就能找到,但是又懶得找,為此百度一搜,也許你就可以興奮的發現這裏

<C++學習十一>標準庫string的使用未完待續

clu size_t ... namespace art ring star using start   使用:   1、C++標準庫負責管理和存儲字符串所占用的內存;   2、頭文件:#include<string>   3、空間域:using namespa

java小白自己動手開發一個網站之搭建一個網站需要啥第2回

新手小白,大神們看到什麼問題,請多多指出 目錄 新手小白,大神們看到什麼問題,請多多指出 搭建網站的流程 註冊域名 購買空間 製作網站 搭建網站的流程 搭建網站有哪些流程 1\註冊域名  2\購買空間  3\製作網站  &

C#LeetCode刷題之#819-最常見的單詞Most Common Word

問題 給定一個段落 (paragraph) 和一個禁用單詞列表 (banned)。返回出現次數最多,同時不在禁用列表中的單詞。題目保證至少有一個詞不在禁用列表中,而且答案唯一。 禁用列表中的單詞用小寫字母表示,不含標點符號。段落中的單詞不區分大小寫。答案都是小寫字母。 輸入:

C#LeetCode刷題之#709-轉換成小寫字母To Lower Case

問題 實現函式 ToLowerCase(),該函式接收一個字串引數 str,並將該字串中的大寫字母轉換成小寫字母,之後返回新的字串。 輸入: "Hello" 輸出: "hello" 輸入: "here" 輸出: "here" 輸入:

C#LeetCode刷題之#686-重複疊加字串匹配Repeated String Match

問題 給定兩個字串 A 和 B, 尋找重複疊加字串A的最小次數,使得字串B成為疊加後的字串A的子串,如果不存在則返回 -1。 舉個例子,A = "abcd",B = "cdabcdab"。 答案為 3, 因為 A 重複疊加三遍後為 “abcdabcdabcd”,此時 B 是其子串;A

C#LeetCode刷題之#680-驗證迴文字串 ⅡValid Palindrome II

問題 給定一個非空字串 s,最多刪除一個字元。判斷是否能成為迴文字串。 輸入: "aba" 輸出: True 輸入: "abca" 輸出: True 解釋: 你可以刪除c字元。 注意:字串只包含從 a-z 的小寫字母。字串的最大長度是

C#LeetCode刷題之#459-重複的子字串Repeated Substring Pattern

問題 給定一個非空的字串,判斷它是否可以由它的一個子串重複多次構成。給定的字串只含有小寫英文字母,並且長度不超過10000。 輸入: "abab" 輸出: True 解釋: 可由子字串 "ab" 重複兩次構成。 輸入: "aba" 輸出: Fa

java小白自己動手開發一個網站之建立專案及域名訪問第5回

新手小白,大神們看到什麼問題,請多多指出 目錄 一、建立專案  1.建立web專案,新增一個index.html頁面, 2.建立一個本地服務tomcat,並配置(檢驗tomcat是否成功,http://localhost:8080/) 3.後將專案新增進去,本地測試