问题的提出
ArcGIS Runtime 支持MPK,APK,TPK,GPK这些打包之后的数据,这些也都是ArcGIS 10.1 中新增的数据格式(MPK除外,MPK是在ArcGIS 10中增加的,但是并不能支持ArcGIS Runtime),我们经常使用的数据可能并不是这些打包后的数据,而是shape这样的数据,我们如何加载shape数据呢?加载了shape数据,我们又如何编辑呢?
我们知道ArcGIS Runtime中有一种类型的图层叫做GraphicsLayer,它是用来显示我们的一些符号化的几何对象——Graphic,Graphic由Gemoetry+属性+符号组成。
Shape数据格式的公开的,这样只要我们按照其规范就可以从底层写读取shape文件的程序,但是我们没有必要这么做,因为在网上有有很多开源的读取shape数据的类库,如GDAL/OGR,SharMap类库等,有了这些类库,我们就有一个想法,借助这些类库将shp数据读取出来,然后转成能在GraphicsLayer图层上显示的东东。到了这里我们需要做的就是将shape文件中读取出来的几何图形对象转成Graphic的几何对象,这一个步骤也有人做了。在http://esrislcontrib.codeplex.com/上,就提到了读取shape文件的shapefilereader类。该类里面有一个非常好的方法ToGraphic(),该方法直接将读取的shape转成了Graphic,有了Graphic,我们就可以将Graphic显示在Map中了
读取shape数据
核心代码
private void button3_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog pOpenShpFile = new OpenFileDialog();
pOpenShpFile.Multiselect = false;
pOpenShpFile.Filter = "Shapefile(.shp)|*.shp";
string pFileName = "";
if (pOpenShpFile.ShowDialog() == true)
{
if (pOpenShpFile.FileName.Length > 0)
{
pFileName = pOpenShpFile.FileName;
FileInfo pShpInfo = new FileInfo(pFileName);
ShapeFile pShapeReader = new ShapeFile();
//pShapeReader.Read(pShpInfo, new FileInfo(pFileName.Replace(".shp", ".dbf")