本API是基于viswaug 前辈的esrislcontribute 类库上发展而来的,早在09年SL API刚出来的时候,viswaug就实现了将ShapeFile加载为GraphicsLayer的功能。加载本地ShapeFile的Demo可以参照菩提老王的blog
本API参照了viswaug的类库,反向实现了GraphicsLayer 到 Shapefile的 导出功能。该类库通过读取GraphisLayer的 GraphicCollection,将其写成shp文件
类库的主要成员函数:
使用方法:
ShapeFile shp = new ShapeFile();
GraphicCollection gc = (map.Layers[1] as FeatureLayer).Graphics;
shp.WriteShape(gc); //写.shp文件 (shapefile的几何属性文件)
shp.WriteDBF(gc); //写.dbf文件 (shapefile的属性字段文件)
shp.WriteSHX(gc); //写.shx文件 (shapefile 的几何索引文件)
shp.WriteCPG(); //写 .cpg文件 (shapefile的属性编码文件)
需要指出的是,由于Silverlight的安全机制,向本地写文件需要得到用户的许可,所以这4个写文件需要得到用户的4次授权,也就是用户需要处理4次另存为对话框。。。
做了一个小demo,不过由于一直没找到好用的web host ,只能用dropbox了,需要自行翻墙:
http://dl.dropbox.com/u/145014564/demoTestPage.html
demo截图:
当FeatureLayer/GraphicsLayer 加载完之后,写完4个ShapeFile文件之后,就可以在ArcMap中打开该shp文件了
Demo源码及WriteToAShapeFile类库下载地址:http://download.csdn.net/detail/crazyxhz/5064078