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:
- Co je to Shapefile
- Jak používat Shapefile
- C# API pro vytváření a čtení Shapefile – .NET GIS Library
- Vytvořte Shapefile pomocí C#
- Přidat funkce do existujícího souboru ShapeFile v C#
- 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:
- Soubor indexu tvaru (.shx) - a positional index of the feature geometry;
- soubor atributů dBase (.dbf) - a dBASE file that stores all the attributes of the shapes;
- Soubor kódové stránky (.cpg) – soubor identifikující kódování znaků.
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ů:
- Nejprve vytvořte vrstvu pomocí metody VectorLayer.Create().
- Dále přidejte FeatureAttributes do kolekce atributů vrstvy.
- Poté vytvořte instanci třídy Feature pomocí metody ConstructFeature().
- Poté nastavte hodnoty různých atributů.
- 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);
}
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ů:
- Nejprve načtěte soubor shapefile pomocí metody Drivers.Shapefile.EditLayer().
- Dále vytvořte instanci třídy Feature pomocí metody ConstructFeature().
- Poté nastavte hodnoty různých atributů.
- 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ů:
- Nejprve načtěte soubor shapefile pomocí metody Drivers.Shapefile.OpenLayer().
- Procházejte každý prvek ve vrstvě.
- Procházejte atributy a zobrazte podrobnosti atributů.
- 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.