在ArcGIS Mobile 10中新增命名空间ESRI.ArcGIS.Mobile.DataProducts.RasterData :专门用于提供显示栅格数据的类。下面我们就来看一下,如何应用该类在Mobile中加载栅格数据。
首先要试验的栅格数据是将我们通过ArcGIS Server发布服务切图获取的地图缓存数据。在ArcGIS Mobile 10中新增的TileCacheMapLayer类,通过该类我们就可以将地图缓存拷贝到移动设备中,然后通过Map控件来读取切片数据,加载并显示在地图上。下图中看到的是沈阳市的地图,有两个图层。第一层是沈阳外环高速公路,为矢量图。第二层为沈阳市行政区划图,为Server切片数据。
第一步,是获得Server的切片数据。发布服务和切缓存这里就不多介绍了。从C:arcgisserverarcgiscache中将切片数据拷贝到移动设备中,我这里用的是紧凑型格式的切片数据,方便拷贝。
将矢量数据和切片数据放到不同的文件下,比如将矢量数据放到MapCache中,将切片数据放到TileCache中。
下面就是通过代码来实现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();
}
最终结果:
。