Vytvářejte a čtěte Shapefile v C#

Formát Shapefile je formát geoprostorových vektorových dat používaný k zobrazení geografických informací. Do Shapefile můžeme uložit umístění, geometrii a přiřazení bodů, čar a mnohoúhelníků. V tomto článku se naučíme, jak vytvořit a číst Shapefile v C#.

Tento článek se bude týkat následujících témat:

  1. Co je to Shapefile
  2. Jak používat Shapefile
  3. C# API pro vytváření a čtení Shapefile – .NET GIS Library
  4. Vytvořte Shapefile pomocí C#
  5. Přidat funkce do existujícího souboru ShapeFile v C#
  6. Přečtěte si soubor Shapefile pomocí C#

Co je Shapefile

Tvarový soubor představuje geoprostorové informace ve formě vektorových dat pro použití v aplikacích GIS. Byl vyvinut společností ESRI jako otevřená specifikace pro usnadnění interoperability mezi ESRI a dalšími softwarovými produkty. Obsahuje geometrická data, která vykreslují body, čáry nebo polygony na mapě, a atributy dat. Shapefiles lze přímo číst několika softwarovými programy GIS, jako je ArcGIS a QGIS.

Jak používat Shapefile

Samostatný soubor shapefile (.shp) nelze použít v softwarových aplikacích. Platný soubor shapefile, který lze použít v softwaru GIS, by však měl obsahovat následující dodatečné povinné soubory:

C# API pro vytváření a čtení Shapefile – .NET GIS Library

K vytváření nebo čtení shapefiles budeme používat Aspose.GIS for .NET API. Umožňuje vykreslovat mapy, vytvářet, číst a převádět geografická data bez dalšího softwaru. Podporuje práci s tvarovými soubory spolu s několika dalšími podporované formáty souborů.

Třída VectorLayer API představuje vektorovou vrstvu. Nabízí různé vlastnosti a metody pro práci s kolekcí geografických prvků uložených v souboru. Metoda Create() této třídy umožňuje vytváření podporovaných vektorových vrstev. Třída Drivers poskytuje ovladače pro všechny podporované formáty. Třída Feature API představuje geografický prvek složený z geometrie a uživatelsky definovaných atributů.

Prosím buď stáhněte DLL API, nebo ji nainstalujte pomocí NuGet.

PM> Install-Package Aspose.GIS

Vytvořte Shapefile pomocí C#

Tvarový soubor můžeme snadno vytvořit programově podle následujících kroků:

  1. Nejprve vytvořte vrstvu pomocí metody VectorLayer.Create().
  2. Dále přidejte FeatureAttributes do kolekce atributů vrstvy.
  3. Poté vytvořte instanci třídy Feature pomocí metody ConstructFeature().
  4. Poté nastavte hodnoty různých atributů.
  5. Nakonec přidejte funkci pomocí metody Add().

Následující ukázka kódu ukazuje, jak vytvořit soubor shapefile v C#:

// Tento příklad kódu ukazuje, jak vytvořit nový soubor shapefile.
// Vytvořte nový soubor Shapefile
using (VectorLayer layer = VectorLayer.Create(@"C:\Files\GIS\NewShapeFile_out.shp", Drivers.Shapefile))
{
    // Před přidáním funkcí přidejte atributy
    layer.Attributes.Add(new FeatureAttribute("name", AttributeDataType.String));
    layer.Attributes.Add(new FeatureAttribute("age", AttributeDataType.Integer));
    layer.Attributes.Add(new FeatureAttribute("dob", AttributeDataType.DateTime));

    // Přidejte funkci a nastavte hodnoty
    Feature firstFeature = layer.ConstructFeature();
    firstFeature.Geometry = new Point(33.97, -118.25);
    firstFeature.SetValue("name", "John");
    firstFeature.SetValue("age", 23);
    firstFeature.SetValue("dob", new DateTime(1982, 2, 5, 16, 30, 0));
    layer.Add(firstFeature);

    // Přidejte další funkci a nastavte hodnoty
    Feature secondFeature = layer.ConstructFeature();
    secondFeature.Geometry = new Point(35.81, -96.28);
    secondFeature.SetValue("name", "Mary");
    secondFeature.SetValue("age", 54);
    secondFeature.SetValue("dob", new DateTime(1984, 12, 15, 15, 30, 0));
    layer.Add(secondFeature);
}
Create-Shapefile-using-CSharp

Vytvořte Shapefile pomocí C#.

Přidejte funkce do existujícího ShapeFile pomocí C#

Můžeme také přidat nové funkce do existujícího souboru shapefile podle následujících kroků:

  1. Nejprve načtěte soubor shapefile pomocí metody Drivers.Shapefile.EditLayer().
  2. Dále vytvořte instanci třídy Feature pomocí metody ConstructFeature().
  3. Poté nastavte hodnoty různých atributů.
  4. Nakonec přidejte funkci pomocí metody Add().

Následující ukázka kódu ukazuje, jak přidat funkce do existujícího shapefile pomocí C#.

// Tento příklad kódu ukazuje, jak upravit soubor shapefile.
// Cesta k souboru
string path = Path.Combine(dataDir, "NewShapeFile_out.shp");

// Upravit vrstvu Shapefile
using (var layer = Drivers.Shapefile.EditLayer(path))
{
    // Přidat funkci
    var feature = layer.ConstructFeature();
    feature.Geometry = new Point(34.81, -92.28);
    object[] data = new object[3] { "Alex", 25, new DateTime(1989, 4, 15, 15, 30, 0) };
    feature.SetValues(data);
    layer.Add(feature);
}

Čtení Shapefile pomocí C#

Atributy můžeme číst ze souboru shapefile podle následujících kroků:

  1. Nejprve načtěte soubor shapefile pomocí metody Drivers.Shapefile.OpenLayer().
  2. Procházejte každý prvek ve vrstvě.
  3. Procházejte atributy a zobrazte podrobnosti atributů.
  4. Nakonec zkontrolujte geometrii bodu a odečtěte body.

Následující ukázka kódu ukazuje, jak číst shapefile pomocí C#.

// Tento příklad kódu ukazuje, jak číst nový soubor shapefile.
// Cesta k souboru
string path = Path.Combine(dataDir, "NewShapeFile_out.shp");

// Otevřete vrstvu
var layer = Drivers.Shapefile.OpenLayer(path);

foreach (Feature feature in layer)
{
    foreach (var attribute in layer.Attributes)
    {
        // Zobrazit podrobnosti atributu
        Console.WriteLine(attribute.Name + " : " + feature.GetValue(attribute.Name));
    }

    // Zkontrolujte geometrii bodu
    if (feature.Geometry.GeometryType == GeometryType.Point)
    {
        // Přečtěte si body
        Point point = (Point)feature.Geometry;
        Console.WriteLine(point.AsText() + " X: " + point.X + " Y: " + point.Y);
        Console.WriteLine("---------------------");
    }
}
name : John
age : 23
dob : 1982-02-05T16:30:00
POINT (33.97 -118.25) X: 33.97 Y: -118.25
---------------------
name : Mary
age : 54
dob : 1984-12-15T15:30:00
POINT (35.81 -96.28) X: 35.81 Y: -96.28
---------------------
name : Alex
age : 25
dob : 04/15/1989 15:30:00
POINT (34.81 -92.28) X: 34.81 Y: -92.28

Získejte bezplatnou licenci

Můžete získat bezplatnou dočasnou licenci a vyzkoušet knihovnu bez omezení hodnocení.

Závěr

V tomto článku jsme se naučili, jak na to

  • vytvořit nový shapefile programově;
  • přidat nové funkce do souboru shapefile;
  • upravit vrstvu shapefile;
  • otevřete vrstvu shapefile a načtěte atributy pomocí C#.

Kromě toho můžete prozkoumat, jak pracovat s několika dalšími formáty souborů GIS a dozvědět se více o Aspose.GIS for .NET API pomocí dokumentace. V případě jakýchkoliv nejasností nás neváhejte kontaktovat na našem fóru.

Viz také