agrobot_base/Exemplos/Aspose.GIS-for-.NET-master/Examples/CSharp/Layers/ReadingESRIFileGeoDatabaseF...

102 lines
3.8 KiB
C#

using Aspose.Gis;
using Aspose.GIS.Examples.CSharp;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Aspose.GIS_for.NET.Layers
{
public class ReadingESRIFileGeoDatabaseFileGDB
{
static string dataDir = RunExamples.GetDataDir();
public static void Run()
{
IterateOverLayersInFileGdb();
OpenFileGdbAsLayer();
OpenShapefileAsDataset();
ConvertFeaturesFromFileGdbToGeoJson();
}
public static void IterateOverLayersInFileGdb()
{
//ExStart: IterateOverLayersInFileGdb
//File GDB is a multi layer format. This example shows how to open File GDB as a dataset (collection of layers) and access layers in it.
using (var dataset = Dataset.Open(dataDir + "ThreeLayers.gdb", Drivers.FileGdb))
{
Console.WriteLine("FileGDB has {0} layers", dataset.LayersCount);
for (int i = 0; i < dataset.LayersCount; ++i)
{
Console.WriteLine("Layer {0} name: {1}", i, dataset.GetLayerName(i));
using (var layer = dataset.OpenLayerAt(i))
{
Console.WriteLine("Layer has {0} features", layer.Count);
foreach (var feature in layer)
{
Console.WriteLine(feature.Geometry.AsText());
}
}
Console.WriteLine("");
}
}
//ExEnd: IterateOverLayersInFileGdb
}
public static void OpenFileGdbAsLayer()
{
//ExStart:OpenFileGdbAsLayer
//FileGDB can still be opened as a single layer. In this case, the opened layer will merge all layers inside FileGDB.
using (var layer = VectorLayer.Open(dataDir + "ThreeLayers.gdb", Drivers.FileGdb))
{
Console.WriteLine("All layers in FileGDB has {0} features", layer.Count);
foreach (var feature in layer)
{
Console.WriteLine(feature.Geometry.AsText());
}
}
//ExEnd: OpenFileGdbAsLayer
}
public static void OpenShapefileAsDataset()
{
//ExStart: OpenShapefileAsDataset
//By the moment the only multi layer file format we support is FileGDB. But you can open files of other formats as datasets.
//In this case, the dataset will have one layer.
using (var dataset = Dataset.Open(dataDir + "PolygonShapeFile.shp", Drivers.Shapefile))
{
Console.WriteLine(dataset.LayersCount); // 1
Console.WriteLine(dataset.GetLayerName(0)); // "point"
using (var layer = dataset.OpenLayerAt(0))
// this 'using' is equivalent to
// using(var layer = VectorLayer.Open("point.shp", Drivrs.Shapefile))
{
foreach (var feature in layer)
{
Console.WriteLine(feature.Geometry.AsText());
}
}
}
//ExEnd: OpenShapefileAsDataset
}
public static void ConvertFeaturesFromFileGdbToGeoJson()
{
File.Delete(dataDir + "ThreeLayers_out.json");
//ExStart: ConvertFeaturesFromFileGdbToGeoJson
//This will convert FileGDB dataset with three layers into single layered GeoJSON.
VectorLayer.Convert(dataDir + "ThreeLayers.gdb", Drivers.FileGdb, dataDir + "ThreeLayers_out.json", Drivers.GeoJson);
//ExEnd: ConvertFeaturesFromFileGdbToGeoJson
}
}
}