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

0
分享 2015-01-03
在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 lOD in 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();

}

最终结果:




文章来源:http://blog.csdn.net/sydbc/article/details/17203403

0 个评论

要回复文章请先登录注册