ArcGIS的地圖文件爲.mxd擴展名。Mxd文件的是有版本的,和ArcGIS的版本對應。可以在ArcMap中的File-Save A Copy,保存一個地圖拷貝的時候選擇Mxd文件的版本,支持的版本如下圖所示。
因爲我是用ArcMap 10.8截的圖,所以這還需要再加一個ArcMap 10.8 Document。一個地圖文件包含一個佈局對象,一個多或者地圖對象以及其他一些附屬信息。地圖文件不直接存儲例如.shp、.tif等實際數據,只是存儲一些圖層信息以及圖層對這些數據的引用。
下圖是ArcMap自帶的一個典型的mxd文件打開的效果。如下圖所示。
當前模式爲佈局模式,即激活的是PageLayout,一共包含了三個地圖,其中激活的地圖爲第一個Conterminous United States。
切換到數據模式,ArcMap顯示的是當前激活的地圖,如下圖所示。
從ArcMap展示上,我們可以看出,一個地圖文件,包含了一個佈局對象,即PageLayout。包含了多個地圖對象,即Map。每個Map都可以作爲一個元素在PageLayout上顯示,並可以設置自己的顯示比例尺,不必統一。針對每個地圖,可以添加其關聯的比例尺,圖例、指北針、網格等智能元素。也可以在佈局視圖上添加點、線、面以及文字等元素。
ArcMap中,佈局和數據視圖,同一時刻只能激活一個。而且當數據視圖被激活的時候,顯示的地圖爲佈局視圖中的活動地圖。
每個Map都包含了多個圖層, 可以爲這些圖層設置渲染、標註等信息,但並不存儲數據本身。我們可以在Map上添加點、線、面以及文字等非數據元素。
在ArcObjects SDK中,我們一般使用IMapDocument接口打開mxd文件。在幫助中,查看到的IMapDocument的結構如下圖所示。
ActiveView,當佈局視圖激活的時候,該屬性返回的是IPageLayout,當數據視圖激活的時候,返回的是佈局視圖下活動的地圖,即IMap。
MapCount表示當前地圖文件有幾個地圖,通過Map[Index]可以獲取指定的地圖對象。
PageLayout即地圖文件包含的佈局對象,返回類型爲IPageLayout。
IMap和IPageLayout的實現類都繼承了IActiveView,即實際開發的時候,IMap和IPageLayout接口類型的變量都可以轉換成IActiveView接口。
IMapDocument、IActiveView、IMap和IPageLayout接口之間的關係可與用下圖表示。