ArcGIS for iOS 開發系列(6) – 基礎篇-圖層-動態圖層

來源:互聯網
上載者:User

接著上節繼續介紹圖層...

2 動態圖層

    與靜態圖層相反,動態圖層(AGSDynamicLayer)擷取的資料都是由服務端即時產生的,除了基本資料外,還聲明了exportMapImage方法和exportDelegate委託,從對應的地圖服務動態擷取地圖資料,是所有動態服務圖層的基類:


圖3-2-8 動態圖層的繼承關係

2.1 動態地圖服務圖層(AGSDynamicMapServiceLayer)

    動態地圖服務圖層(AGSDynamicMapServiceLayer)對應了動態地圖服務,也是ArcGISServer最基本的服務,url結構:http://<server:port>/<instance>/rest/services/<service>/MapServer,以下是圖層初始化代碼:

    NSURL* url = [NSURL URLWithString: @"http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/ Specialty/ESRI_StateCityHighway_USA/MapServer"];    NSError *error = nil;     //同步擷取服務資訊的方法,不建議放在主線程中使用。    AGSMapServiceInfo *info = [AGSMapServiceInfo mapServiceInfoWithURL:urlerror:&error];     //確認服務的資訊後再初始化動態地圖服務圖層     ...    AGSDynamicMapServiceLayer* layer = [AGSDynamicMapServiceLayerdynamicMapServiceLayerWithMapServiceInfo: info];

2.2 影像服務圖層(AGSImageServiceLayer)

    影像服務圖層(AGSImageServiceLayer)對應了影像服務,是Web動態訪問影像資料的最佳選擇,url結構:http://<server:port>/<instance>/rest/services/<service>/ImageServer,以下是圖層初始化代碼:

     NSURL* url = [NSURL URLWithString: @"http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Portland/CascadeLandsat/ImageServer"];    AGSImageServiceLayer* layer = [AGSDynamicMapServiceLayerimageServiceLayerWithURL: url];    此外還提供了一些影像資料特有的屬性和方法,如:壓縮比、波段組合、鑲嵌規則、渲染規則和柵格插值,這裡就不一一展開介紹。     //單波段灰階圖     NSArray* grayscaleBandIds = [NSArrayarrayWithObject:[NSNumber numberWithInt:0] ];     layer.bandIds = grayscaleBandIds;     //Red, Green, Blue多波段組合     NSArray* rgbBandIds = [NSArrayarrayWithObjects:[NSNumber numberWithInt:2], [NSNumber numberWithInt:5],[NSNumber numberWithInt:0], nil ];     layer.bandIds = rgbBandIds;

2.3 WMS服務圖層(AGSWMSLayer)

    WMS服務圖層(AGSWMSLayer)對應了符合OGC WMS1.1\1.1.1\
1.3標準的網路地圖服務,WMS服務是類REST風格,因此可以直接繼承AGSDynamicLayer,url結構:http://<server:port>/<instance>/services/<service>/MapServer/WMSServer,以下是圖層初始化代碼:

     NSURL* url = [NSURL URLWithString: @"http://sampleserver1.arcgisonline.com/ArcGIS/services/Specialty/ESRI_StateCityHighway_USA/MapServer/WMSServer"];     AGSWMSLayer* wmsLayer = [[AGSWMSLayeralloc] initWithURL:url] autorelease];

2.4 圖形圖層(AGSGraphicLayer)

    圖形圖層(AGSGraphicLayer)比較特殊,不對應任何Service,完全由用戶端建立、更新和銷毀,是我們響應使用者輸入、展示查詢分析結果的利器。常用的方法包括:addGraphic添加圖形,removeGraphic清除圖形,dataChanged更新資料等,以下是圖層初始化代碼:

    AGSGraphicsLayer*myGraphicsLayer = [AGSGraphicsLayer graphicsLayer];

    在其基礎上還衍生出了要素服務圖層和草圖繪製圖層,下面依次進行介紹。

2.5 要素服務圖層(AGSFeatureLayer)

    要素服務圖層(AGSFeatureLayer)對應了要素服務或動態地圖服務,要素服務的特點是提供了空間資料編輯能力,包括要素的幾何形狀、屬性和附件。

圖3-2-2-9 要素服務圖層的繼承關係

    從功能設計上可以理解為AGSFeatureLayer = AGSQueryTask + AGSGraphicLayer,先從動態服務查詢要素,再把結果填充到圖形圖層中展示,url結構:

http://<server:port>/<instance>/rest/services/<service>/FeatureServer(MapServer)/<layerid>,以下是圖層初始化代碼:

     NSURL* url = [NSURL URLWithString: @"http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer/0"];     AGSFeatureLayer* featureLayer =[AGSFeatureLayer featureServiceLayerWithURL: url mode:AGSFeatureLayerModeOnDemand];    

    Mode參數是個枚舉值:快照(Snapshot)/按需(On-Demand)/按查詢(Selection),其中Snapshot模式會一次性擷取所有要素,適合於要素數量少的情境;On-Demand模式按當前視野動態擷取要素,適合要素數量多,且更新頻率高的情境;Selection模式預設不擷取任何要素,按查詢條件動態擷取。

AGSFeatureLayer常用的操作包括:查詢要素(queryDelegate)、過濾顯示(selectFeaturesWithQuery)和編輯要素(updateFeatures)。

* AGSFeatureLayer的詳細用法將在“線上編輯”裡介紹。

2.6 草圖編輯圖層(AGSSketchGraphicLayer)

    草圖編輯圖層(AGSSketchGraphicLayer)在圖形圖層基礎上對要素的幾何編輯操作進行了封裝,傳承了ArcGIS專業的編輯模式,包括:要素選中,節點拖動,撤銷操作、恢複操作、放大鏡效果等等。


圖3-2-2-10 草圖繪製服務圖層的繼承關係

     草圖編輯的主要幾何對象:

表3-2-1 草圖繪製的主要對象

·          節點(Vertex)

·          中點(Mid-point)

·          選中的節點(Selected Vertex)

·          線(Line)

·          面填充(Fill)

 

    使用的一般流程是:建立草圖編輯圖層-擷取要素圖形(AGSGraphic對象)-響應觸摸操作(點擊、長按)-儲存圖形編輯結果-更新要素圖形,以下是圖層初始化代碼:

        AGSSketchGraphicsLayer* sketchLyr =[[[AGSSketchGraphicsLayer alloc] initWithGeometry:nil]autorelease];        [self.mapViewaddMapLayer:sketchLyr withName:@"Sketch Layer"]; 

*AGSSketchGraphicLayer不用不知道,用了都說好:),詳細用法將在“線上編輯”裡介紹。



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

Tags Index: