ArcGIS Mobile 10开发(四)加载切片数据

时间:2022-11-16 23:40:21

     在ArcGIS Mobile 10中新增命名空间ESRI.ArcGIS.Mobile.DataProducts.RasterData :专门用于提供显示栅格数据的类。下面我们就来看一下,如何应用该类在Mobile中加载栅格数据。

     首先要试验的栅格数据是将我们通过ArcGIS Server发布服务切图获取的地图缓存数据。在ArcGIS Mobile 10中新增的TileCacheMapLayer类,通过该类我们就可以将地图缓存拷贝到移动设备中,然后通过Map控件来读取切片数据,加载并显示在地图上。下图中看到的是沈阳市的地图,有两个图层。第一层是沈阳外环高速公路,为矢量图。第二层为沈阳市行政区划图,为Server切片数据。  

ArcGIS Mobile 10开发(四)加载切片数据

第一步,是获得Server的切片数据。发布服务和切缓存这里就不多介绍了。从C:arcgisserverarcgiscache中将切片数据拷贝到移动设备中,我这里用的是紧凑型格式的切片数据,方便拷贝。

ArcGIS Mobile 10开发(四)加载切片数据

将矢量数据和切片数据放到不同的文件下,比如将矢量数据放到MapCache中,将切片数据放到TileCache中。

ArcGIS Mobile 10开发(四)加载切片数据

下面就是通过代码来实现Mobile中加载切片图层了。代码如下:

    //加载TileCache底图图层  

 

    privatevoid LoadRasterLayer(ESRI.ArcGIS.Mobile.Map map1)

 

    {

 

       //指定TileCache的路径

 

       string TileMapFolder =Environment.GetFolderPath(Environment.SpecialFolder.Personal) + @”TileCache;

 

       //声明TileCacheMaplayer用于存放切片数据

 

       TileCacheMapLayer rasterLayer =newTileCacheMapLayer(TileMapFolder);

 

       rasterLayer.Open();

 

       //获得切片数据的切图级别和比例尺

 

       if (rasterLayer.TileCacheInfo !=null)

 

       {

 

           //在Map1中添加切片图层

 

           map1.MapLayers.Add(rasterLayer);

 

           List<LevelOfDetail> levelOfDetails;

 

           levelOfDetails =newList<LevelOfDetail>();

           List<double>scaleList;

 

           scaleList =newList<double>();

           foreach (LevelOfDetail lODin rasterLayer.TileCacheInfo.TileInfo.Lods)

 

           {

 

               doublescale = lOD.Scale;

 

               scaleList.Add(scale);

 

           }

           //设置初始化比例尺

 

           double initialMapScale;

 

           initialMapScale = map1.Scale;

 

       }

 

       else

 

       {

 

           MessageBox.Show(“TileCache文件错误!“);

 

           return;

 

  }

 

}

privatevoid menuItem7_Click(objectsender,EventArgs e)

 

    {

 

       LoadRasterLayer(this.map1);

 

       map1.Refresh();

 

}

 

最终结果:

 

ArcGIS Mobile 10开发(四)加载切片数据

 

。