2020-02-23地圖的基本操作:空間數(shù)據(jù)與工作空間

地圖的基本操作:空間數(shù)據(jù)與工作空間

GIS的基本功能之一
——展示地理數(shù)據(jù)并實現(xiàn)對地理數(shù)據(jù)的操作

如:

  • 數(shù)據(jù)的加載與保存
  • 數(shù)據(jù)的視圖操作
  • 地圖的量算
  • 不同窗口之間的視圖聯(lián)動
  • 地圖的圖層控制

空間數(shù)據(jù)

按劃分標準不同

  • 矢量數(shù)據(jù)和柵格數(shù)據(jù)
  • GIS格式的地理數(shù)據(jù)和非GIS格式的數(shù)據(jù)(如囱怕,CAD格式等)
  • 空間數(shù)據(jù)庫數(shù)據(jù)(如,ArcSDE數(shù)據(jù)庫等)和文件數(shù)據(jù)(Shapefile格式、Coverage格式)
1. *.mxd文件
  • 項目工程文件
  • 主要記載一個工程包含
    • 哪些圖層
    • 圖層文件對應的物理位置
    • 每個圖層的符號是如何設(shè)置的
    • ……
  • 但是膛薛,它并不儲存實實在在的空間數(shù)據(jù)
空間數(shù)據(jù)存儲在空間數(shù)據(jù)庫中票渠,習慣上稱為數(shù)據(jù)集(Dataset)胸完、特征類(FeatureClass)等妥凳。
2.MapControl控件簡介
1)

MapControl對應ArcMap中的數(shù)據(jù)視圖贝攒,它封裝了Map對象笆凌,并提供了額外的屬性圣猎、方法、事件用于:

  • 1管理控件的外觀乞而、顯示屬性和地圖屬性送悔;
  • 2添加并管理控件中的數(shù)據(jù)層;
  • 3裝載Map文檔(.mxd)到控件中
  • 4從其它應用程序拖放數(shù)據(jù)到控件中爪模;
2)
  • ArcGIS的每種控件都有屬性可以設(shè)置欠啤,它們可以在可視化環(huán)境中進行編輯。將控件拖放到窗體上后屋灌,用戶可以右鍵點擊洁段,選擇“屬性”菜單來編輯這些屬性,它們可以讓用戶不編寫一行代碼的情況下快速構(gòu)建一個GIS應用程序共郭。
  • MapControl實現(xiàn)的主要接口有:IMapControlDefault祠丝、IMapControl2、IMapControl3落塑、IMapControl4和事件接口IMapControlEvents2纽疟。

IMapControlDefault接口
IMapControl2接口
IMapControl3接口
IMapControl4接口
IMapControlEvents2接口

  1. IMapControlDefault
  • IMapControlDefault接口是地圖控件缺省接口,多數(shù)開發(fā)環(huán)境自動使用這個接口定義的屬性憾赁、方法污朽。
  • MapControl是一個自動化控件,當它被放到一個容器龙考,如窗體上后蟆肆,它會自動產(chǎn)生一個被稱為axMapControl1的對象,這個對象可以直接使用缺省接口定義的屬性和方法晦款。
  • 這個接口也代表了控件最新版本的接口炎功,MapControl當前最新版本接口為IMapControl4。
  • MapControlDefault接口的時候缓溅,可以使用下面代碼:
IMapControlDefault pMapControl蛇损;
pMapControl=axMapControl1.Object as IMapControlDefault;
//返回潛在的MapControl控件

2.IMapControl2接口

  • 提供了一系列屬性和方法,如設(shè)置MapControl控件的顯示屬性淤齐、控件外觀股囊,添加及管理數(shù)據(jù)圖層和地圖文檔、在控件上繪制圖形和返回幾何圖形
  • IMapControl2定義了控制控件外觀界面的各種屬性和方法更啄,如Appearance稚疹,BorderStyle和BackColor。它定義的方法有TrackLine祭务、TrackPolygon内狗、TrackRectangle和TrackCircle方法讓程序員可以直接在控件上獲得Geometry對象,它還提供了Drawshape和DrawText方法讓用戶直接在控件上繪制圖形义锥。
  • IMapControl2接口
IMapControl2 pMapControl柳沙;
pMapControl =axMapControl1.Object as IMapControl2;
//或
pMapControl=axMapControl1.GetOcx()asIMapControl2缨该;

3.IMapControl3接口

  • 該接口繼承IMapControl2偎行,并增加了以下8個屬性和一個方法:
      1. CustomProperty:設(shè)置自定義控件屬性
      1. DocumentFilename:返回MapControl裝入的地圖文檔的文件名
      1. DocumentMap:返回MapControl最后裝入的地圖的名稱
      1. Keylntercept:返回或設(shè)置MapControl截取鍵盤按鍵信息。
      1. Object:返回潛在的MapControl控件
      1. ShowMapTips:控制是否顯示地圖的Map Tips
      1. TipDelay:設(shè)置MapTips的延遲時間
      1. TipStyle:設(shè)置MapTips的顯示樣式
      1. SupressResizeDrawingl:當控件尺寸發(fā)生變化時阻止數(shù)據(jù)實
        時重繪
        1. Keylntercept:返回或設(shè)置MapControl截取鍵盤按鍵信息贰拿。
          VesrikeyIntercept None值0—一沒有截取鼠標按鍵VesriKeyIntercept Arrowkeys值1——截取箭頭按鍵
          Vesrikey Intercept Alt值2——截取了Alt按鍵
          VesrikeyIntercept Tab值4——截取了Tab按鍵
          VesrikeyIntercept Enter 8值——截取了Enter按鍵
        1. Object:返回潛在的MapControl控件
IMapControl3pMapControl蛤袒;
pMapControl =axMapControl1.Object as IMapControl3;
pMapControl=axMapControl1.GetOcx()as IMapControl3膨更;

4.IMapControl4接口

  • 在3的基礎(chǔ)上增加了兩個屬性妙真,分別是
    • AutoKeyboardSrcolling和AutoMouseWheel
      AutokeyboardSrcolling:確定鍵盤滾動輪是否起作用
      AutoMouseWheel:確定鼠標滾輪是否起作用

5.IMapControlEvents2接口

  • 它定義了MapContro能夠處理的全部事件口如OnMouseDown、OnAfterDraw荚守、OnMouseMove等珍德,這些事件用戶在建構(gòu)獨立程序過程中經(jīng)常用到。
  • OnAfterscreenDraw繪屏結(jié)束后觸發(fā)的事件矗漾,
    OnExtentUpdated是地圖的Extent屬性發(fā)生變化時觸發(fā)的事件等锈候。
3.數(shù)據(jù)加載
1)加載地圖文檔
  • CheckMxFile方法
  • LoadMxFile方法

CheckMxFile方法

public bool CheckMxFile(string fileName);

該方法的作用是判斷選中的文件是否是一個可以加載到MapControl空間中的有效地圖文檔敞贡。

LoadMxFile方法

public yoid LoadMxFile(
string mxPath泵琳,//表示文件路徑的字符串表達式(必選)
object mapNameorlndex,//表示地圖名或索引的序號(可選)
object password)誊役;//表示密碼(可選)

該方法的作用是向MapControl控件中加載地圖文檔获列。

實例

string filePath=@"C:\Temp\myDocument.mxd";
if(axMapControl1.CheckMxFile(filePath))
axMapControl1.LoadMxFile(filePath蛔垢,Type.Missing击孩,Type.Missing);
2)加載Shapefile數(shù)據(jù)-1
  • (1)通過地圖控件AddShapefile方法添加
axMapControl1.AddShapeFile//(文件路徑鹏漆,文件名)
  • (2)通過工作空間加載Shapefile文件
    • lWorkspace接口
    • IWorkspaceFactory接口
    • lMap接口
    • lLayer接口
    • lFeatureLayer接口
    • lFeatureClass接口

IWorkspace接口

  • 工作空間(Workspace)對象
  • 在物理級別上相當于地理數(shù)據(jù)庫本身巩梢;
  • 在邏輯上是一個空間數(shù)據(jù)集和非空間數(shù)據(jù)集的數(shù)據(jù)容器创泄。
workspace工作空間.png
  • 數(shù)據(jù)加載需要先打開工作空間。
  • IWorkspace接口
    √在Geodatabase類庫中
    √定義了訪問空間數(shù)據(jù)屬性的各種方法
    √可實例化現(xiàn)有的數(shù)據(jù)集和創(chuàng)建新數(shù)據(jù)集
    √但工作空間是一個普通類且改,因此無法直接創(chuàng)建

IWorkspaceFactory接口

  • 定義了創(chuàng)建验烧、打開工作空間的方法和對工作空間信息成員的訪問

  • 通過此接口管理不同類型的工作空間,所有的工作空間對象都可以通過此接口產(chǎn)生

    • 此接口中Create方法可以產(chǎn)生一個新的工作空間對象又跛。但是不同類型的工作空間工廠對象,其Create方法產(chǎn)生的工作空間對象是不同的若治。


      image.png
  • .……對于存儲在數(shù)據(jù)庫或文件中不同類型的空間數(shù)據(jù)慨蓝,除其工作空間的獲取需使用不同的方法外,其余的操作基本相似端幼。

  • 此接口中的Open和OpenFromFile方法可以用于打開一個已經(jīng)存在的工作空間礼烈。
    √Open——SDE數(shù)據(jù)庫
    √OpenFromFile——文件類型數(shù)據(jù)

IMap接口

  • 此接口是對地圖進行操作的起點
  • 主要用于管理Map對象中的圖層對象、要素婆跑、選擇集合控件參考等對象
    • 可以獲取Map對象中圖層個數(shù)
    • 對圖層進行添加此熬、刪除等功能
    • 實現(xiàn)查詢的高亮顯示
    • .……

lLayer接口

  • 圖層對象的通用接口
  • 提供了圖層操作的屬性和方法
  • 可用于所有的圖層
    • FeatureLayer
    • RasterLayer
    • CompositeGraphicLayer
  • 在Carto類庫中

IFeatureLayer接口

  • 繼承自ILayer接口
  • 提供了訪問矢量數(shù)據(jù)圖層的屬性和方法
    • 圖層數(shù)據(jù)可以是:
      √Geodatabase
      √Shapefile
      √Coverage
    • FeatureLayer組件類,還可以通過IGeoFeatureLayer獲得更多的控制要素圖層的屬性和方法

IFeatureClass接口

  • 獲取和設(shè)置要素類屬性的主要接口
    如:
    √獲取要素類的類型
    √在要素類中創(chuàng)建一個新功能
    √獲取滿足某查詢條件的要素個數(shù)

Map滑进、Layer犀忱、FeatureLayer三者之間的關(guān)系

  • Map是很多個圖層的集合
  • Layer是圖層對象,是數(shù)據(jù)的外殼扶关,必須建立在數(shù)據(jù)基礎(chǔ)上才有意義
  • FeatureLayer是具體的要素圖層阴汇,需要經(jīng)過Layer添加到Map中進行顯示

FeatureLayer與FeatureClass之間的區(qū)別

  • FeatureLayer
    • 是加載在地圖文檔中的矢量數(shù)據(jù)層,只是要素類的表現(xiàn)形式
    • lFeatureLayer接口繼承自llayer接口
    • 可以創(chuàng)建自己的對象
  • FeatureClass
    • 是一組空間實體的集合节槐,在數(shù)據(jù)表中存儲了統(tǒng)一的屬性和行為
    • IFeatureClass接口繼承自IClass接口
    • 不可以創(chuàng)建自己的對象

通過工作空間加載Shapefile文件

  • 加載Shapefile文件時搀庶,需要引用DataSourcesFile類庫
  • 實例程序?qū)崿F(xiàn)思路
    • 創(chuàng)建ShapefileWorkspaceFactory實例pWorkspaceFactory,使用IWorkspaceFactory接口的OpenFromFile方法打開pWorkspaceFactory中儲存的基于Shapefile的工作區(qū)
    • 創(chuàng)建FeatureLayer的實例pFeatureLayer铜异,并定義數(shù)據(jù)集
    • 使用Imap接口的AddLayer方法加載pFeatureLayer到當前地圖

通過工作空間加載柵格數(shù)據(jù)

  • 加載柵格文件時哥倔,需要引用DataSourcesRaster類庫

  • 實例程序?qū)崿F(xiàn)思路

    • 使用IWorkspaceFactory接口的OpenFromFile方法獲得棚格文件的工作區(qū)
    • 用IRasterWorkspace接口的OpenRasterDataset方法獲得棚格文件的數(shù)據(jù)集
      • 對柵格數(shù)據(jù)集是否有金字塔進行判斷(柵格文件如果不具有金字塔,則創(chuàng)建金字塔揍庄。這可以提高大數(shù)據(jù)的顯示效率咆蒿。需使用IRasterPyramid3接口)
    • 創(chuàng)建RasterLayer的實例pRasterLayer,并定義數(shù)據(jù)集
    • 使用Imap接口的AddLayer方法加載pFeatureLayer到當前地圖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末币绩,一起剝皮案震驚了整個濱河市蜡秽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌缆镣,老刑警劉巖芽突,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異董瞻,居然都是意外死亡寞蚌,警方通過查閱死者的電腦和手機田巴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挟秤,“玉大人壹哺,你說我怎么就攤上這事∷腋眨” “怎么了管宵?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長攀甚。 經(jīng)常有香客問我箩朴,道長,這世上最難降的妖魔是什么秋度? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任炸庞,我火速辦了婚禮,結(jié)果婚禮上荚斯,老公的妹妹穿的比我還像新娘埠居。我一直安慰自己,他們只是感情好事期,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布滥壕。 她就那樣靜靜地躺著,像睡著了一般刑赶。 火紅的嫁衣襯著肌膚如雪捏浊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天撞叨,我揣著相機與錄音金踪,去河邊找鬼。 笑死牵敷,一個胖子當著我的面吹牛胡岔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播枷餐,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼靶瘸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了毛肋?” 一聲冷哼從身側(cè)響起怨咪,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎润匙,沒想到半個月后诗眨,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡孕讳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片击罪。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖峡懈,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情与斤,我是刑警寧澤肪康,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站幽告,受9級特大地震影響梅鹦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜冗锁,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嗤栓。 院中可真熱鬧冻河,春花似錦、人聲如沸茉帅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽堪澎。三九已至擂错,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間樱蛤,已是汗流浹背钮呀。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留昨凡,地道東北人爽醋。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像便脊,于是被迫代替她去往敵國和親蚂四。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345