102 lines
3.8 KiB
C#
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
|
|
}
|
|
}
|
|
}
|