牟乃夏《ArcGIS Engine地理信息系統開發教程》學習筆記2

目錄

一、ArcGIS Engine概述

1、 定義

2、 核心功能

3、 與ArcObjects(AO)的關系

二、開發環境搭建

1、 開發工具要求

2、 關鍵步驟

三、 ArcGIS Engine核心組件

1、 對象模型

2、 類庫分類

四、 第一個AE應用程序(C#示例)

1、 開發步驟

五、 核心開發技巧

1、 對象創建方式

2、 事件處理

3、 資源釋放

六、 注意事項


一、ArcGIS Engine概述

1、 定義

  • ArcGIS Engine(AE)是ESRI提供的GIS組件庫,用于開發獨立的GIS應用程序或功能擴展模塊。

  • AE 是 ESRI 提供的一套基于 COM 的 GIS 開發組件庫,用于構建輕量級桌面或嵌入式 GIS 應用。

  • 典型應用場景:國土規劃、環境監測、交通管理等行業的定制化 GIS 工具開發。

2、 核心功能

  • 地圖渲染:支持動態投影、多尺度符號化(如分級顏色、圖表渲染)。

  • 數據兼容性:直接讀寫 Shapefile、File Geodatabase、ArcSDE 數據庫,支持 WMS/WFS 服務。

  • 分析能力:提供空間疊加(Intersect/Union)、網絡分析(最短路徑)、3D 可視化基礎功能。

3、 與ArcObjects(AO)的關系

  • 功能范圍:AE 僅包含 AO 約 1/3 的接口,專注于基礎 GIS 功能,缺少高級擴展模塊(如 Spatial Analyst)。

  • 部署方式:AE 應用需綁定 Engine Runtime(約 500MB),無需安裝 ArcGIS Desktop。


二、開發環境搭建

1、 開發工具要求

  • 開發環境:Visual Studio(C#/VB.NET)或 Java IDE。

  • 必要組件

    • ArcGIS Engine Developer Kit(SDK)

    • ArcGIS Engine Runtime(運行時環境)

    • License控件:AxLicenseControl(用于初始化許可)

2、 關鍵步驟

  • 安裝順序

    先安裝Visual Studio,再安裝ArcGIS Engine SDK和Runtime。

  • 項目引用

    添加ESRI相關COM組件引用(如ESRI.ArcGIS.Carto,?ESRI.ArcGIS.Geometry等)。

  • 許可初始化

    在窗體中添加AxLicenseControl控件,或在代碼中通過AoInitialize類初始化(需指定產品類型:Engine/Desktop)。


三、 ArcGIS Engine核心組件

1、 對象模型

  • 基于COM技術:遵循組件對象模型(Component Object Model),強調接口(Interface)與實現類的關系。

  • 重要接口

    • IMap: 管理地圖圖層和空間參考

    • ILayer: 圖層基礎操作

    • IFeatureClass: 要素類數據訪問

    • IGeometry: 幾何對象操作

    • IActiveView: 地圖視圖刷新

2、 類庫分類

類庫名稱功能描述常用接口示例
Carto地圖顯示與圖層管理IMap,?ILayer,?IFeatureLayer
Geometry幾何對象操作IPoint,?IPolyline,?IPolygon
GeoDatabase地理數據庫訪問IFeatureClass,?IWorkspace
Controls地圖控件與工具IMapControl2,?ITool
Display符號化與渲染ISymbol,?IRenderer

四、 第一個AE應用程序(C#示例)

1、 開發步驟

  • 創建Windows窗體項目

  • 添加MapControl控件

    拖放AxMapControl到窗體,設置Dock屬性填充窗口。

  • 初始化許可

    使用AxLicenseControl或代碼初始化:

    ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);
    IAoInitialize aoInit = new AoInitializeClass();
    aoInit.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngine);

加載地圖文檔

axMapControl1.LoadMxFile(@"C:\Data\Map.mxd");
axMapControl1.Refresh();


五、 核心開發技巧

1、 對象創建方式

  • 直接實例化new PointClass()

  • 接口查詢IMap map = axMapControl1.Map as IMap;

2、 事件處理

  • 地圖控件事件(如OnMouseDown)需實現IMapControlEvents2_Event接口。

3、 資源釋放

  • 顯式釋放COM對象:Marshal.FinalReleaseComObject(obj);

  • 避免內存泄漏:及時釋放地圖、圖層等大對象。


六、 注意事項

  1. 許可問題:未正確初始化Engine許可會導致控件無法使用。

  2. 版本兼容性:AE SDK版本需與Runtime版本一致。

  3. 線程安全:AE組件非線程安全,避免在非UI線程直接操作控件。

擴展學習建議

  • 官方資源:ESRI GitHub 上的?ArcGIS Engine Samples

  • 調試工具:使用 .NET Reflector 反編譯?ESRI.ArcGIS.dll?查看接口定義。

如果需要某個知識點(如網絡分析、自定義渲染器)的專項深入,可進一步說明!


以上為博主自己在學習過程中的學習筆記,用于學習和交流,歡迎大家批評糾正。

希望你越來越優秀!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/901713.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/901713.shtml
英文地址,請注明出處:http://en.pswp.cn/news/901713.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

端、管、云一體化原生安全架構 告別外掛式防護!

面對數字化轉型浪潮,企業網絡安全風險日益凸顯。數據泄露、黑客勒索等事件頻發,合規要求加速推進。盡管企業紛紛部署了防病毒、身份認證、文件加密、入侵防護、流量監控等多種安全系統,但分散且孤立的架構非但沒有有效抵御風險,反…

深度學習--深度學習概念、框架以及構造

文章目錄 一、深度學習1.什么是深度學習?2.特點3.神經網絡構造1).單層神經元2)多層神經網絡3)小結 4.感知器5.多層感知器6.多層感知器(偏置節點)7.神經網絡構造 一、深度學習 1.什么是深度學習&#xff1f…

helm賬號密碼加密

1、安裝工具 sudo apt update sudo apt install gnupg -y wget https://github.com/getsops/sops/releases/download/v3.10.2/sops-v3.10.2.linux.amd64 mv sops-v3.10.2.linux.amd64 /usr/local/bin/sops chmod x /usr/local/bin/sops2、生成加密文件 gpg --full-generate-…

大數據面試問答-HBase/ClickHouse

1. HBase 1.1 概念 HBase是構建在Hadoop HDFS之上的分布式NoSQL數據庫,采用列式存儲模型,支持海量數據的實時讀寫和隨機訪問。適用于高吞吐、低延遲的場景,如實時日志處理、在線交易等。 RowKey(行鍵) 定義&#xf…

動態渲染組件

React框架,JSX語法 今天遇到一個好玩的 常規的搜索列表,列表最后一列為操作列,刪改查。 眼看著Table 操作列 的配置文件越來越復雜,決定把操作列單獨寫一個組件,代碼瞬間靚仔了些 {title: Operation,dataIndex: oper…

Web APIs階段

一、Web APIs和JS基礎關聯性 1.1JS的組成 1.2JS基礎階段以及Web APIs階段 JS基礎階段:學習的是ECMAScript標準規定的基礎語法 Web APIs階段: Web APIs是W3C組織的標準Web APIs我們主要學習DOM和BOMWeb APIs是JS獨有的部分主要學習頁面交互功能需要使用…

Doip功能尋址走UDP協議

目前使用 connect()函數的UDP客戶端 ,這里接收數據 解析的地方 查看一下。 如果使用 bind()、sendto()、recvfrom() 組合 那么返回值 和發送要在做調整,,根據業務需要后續在調整 其余的 和原來的 邏輯都是一樣的,只是協議變了而已。 if serv…

Linux指令的詳細介紹

前言:🌼🌼 Linux是一款強大且廣泛使用的操作系統,命令行接口(CLI)是與其交互的核心方式。通過Linux指令,用戶可以高效地執行文件管理、系統監控、進程控制等任務。雖然剛接觸時可能感到有些復雜…

Elasticsearch使用記錄

一、配環境 1.docker版本部署es 8.x系列可以關掉ssl(本地測試時),去docker的/usr/share/elasticsearch/config/elasticsearch.yml里面的“xpack.security.enabled:”設置成true就可以 2.window docker部署推薦教程:基于Docker安…

MuJoCo(Multi-Joint Dynamics with Contact)機器人仿真器存在的問題

MuJoCo物理引擎計算接觸力的核心思路,是通過數學優化的方式同時滿足多個物理約束,而不是簡單地為每個碰撞點單獨計算作用力。它的工作流程可以理解為幾個階段的緊密配合。首先,仿真器會快速檢測所有可能發生接觸的物體表面,篩選出…

基礎(項目管理工具:JIRA、禪道)

目錄 JIRA JIRA介紹 JIRA中的優先級(缺陷嚴重程度) JIRA中的解決結果(缺陷的解決結果) JIRA中的問題狀態(缺陷的狀態) 使用JIRA創建缺陷 JIRA的安裝(Windows) JDK22的下載和安…

16.使用豆包將docker-compose的yaml轉為k8s的yaml,安裝各種無狀態服務

文章目錄 docker方式httpbinit-toolslinux-commandmyipreference docker-compose安裝k8s方式 docker方式 httpbin A simple HTTP Request & Response Service https://httpbin.org/ https://github.com/postmanlabs/httpbin https://github.com/mccutchen/go-httpbin do…

Day(22)--網絡編程習題

習題 以下是這些 TCP 通信練習題的 Java 代碼實現及解析: TCP 通信練習 1 - 多發多收 客戶端(Client1.java) java import java.io.IOException; import java.io.OutputStream; import java.net.Socket; ? public class Client1 {public…

20、.NET SDK概述

.NET SDK(Software Development Kit) 是微軟提供的一套開發工具包,用于構建、運行和管理基于 .NET 平臺的應用程序。它包含了一組豐富的工具、庫和運行時環境,支持開發者在多種操作系統(如 Windows、Linux 和 macOS&am…

DELL電腦開機進入自檢界面

疑難解答 - 如何解決開機直接進入BIOS畫面 添加鏈接描述 一、DELL電腦開機自檢提示please run setup program 未設置一天中的時間-請運行安裝程序(Time-of-day not set - please run SETUP program) 配置信息無效-請運行安裝程序(Invalid configuration information - ple…

2025 最新版 Node.js 下載安裝及環境配置詳細教程【保姆級】

2025 最新版 Node.js 下載安裝及環境配置詳細教程【保姆級】 一、下載安裝二、環境配置三、緩存配置、全局配置以及更換國內淘寶鏡像源 一、下載安裝 下載地址:Node.js 官方下載地址 雙擊安裝,點擊 Change 更改安裝位置。我只有一個C盤,這里…

2025年4月通信科技領域周報(4.07-4.13):6G技術加速落地 衛星通信網絡迎來組網高潮

2025年4月通信科技領域周報(4.07-4.13):6G技術加速落地 衛星通信網絡迎來組網高潮 目錄 2025年4月通信科技領域周報(4.07-4.13):6G技術加速落地 衛星通信網絡迎來組網高潮一、本周熱點回顧1. 華為發布全球首…

vxe-table 動態列篩選,以及篩選項動態變化的解決方案記錄

需求場景: table 的列是由接口動態返回的;列的篩選項就是數據的值,比如【姓名】這個字段總共有三個值,那么姓名這一列的篩選項就是這三個值本身;當有一列篩選后,其他列的篩選項也要動態變化。 vxe-table …

UE5游戲分辨率設置和窗口模式

第一種方法: 在項目配置Config文件夾下新建 DefaultGameUserSettings.ini 輸入代碼 [/Script/Engine.GameUserSettings] bUseVSyncFalse ResolutionSizeX1960 ResolutionSizeY1080 LastUserConfirmedResolutionSizeX800 LastUserConfirmedResolutionSizeY600 WindowPosX-1 …

鏈表知識回顧

類型:單鏈表,雙鏈表、循環鏈表 存儲:在內存中不是連續存儲 刪除操作:即讓c的指針指向e即可,無需釋放d,因為java中又內存回收機制 添加節點: 鏈表的構造函數 public class ListNode {// 結點…