Créer et lire un fichier de formes en C#

Le format Shapefile est un format de données vectorielles géospatiales utilisé pour afficher des informations géographiques. Nous pouvons stocker l’emplacement, la géométrie et l’attribution des entités ponctuelles, linéaires et polygonales dans Shapefile. Dans cet article, nous allons apprendre à créer et à lire Shapefile en C#.

Cet article couvrira les sujets suivants :

  1. Qu’est-ce qu’un fichier de formes
  2. Comment utiliser un fichier de formes
  3. API C# pour créer et lire un fichier de formes - Bibliothèque SIG .NET
  4. Créer un fichier de formes à l’aide de C#
  5. Ajouter des fonctionnalités à un ShapeFile existant en C#
  6. Lire un Shapefile en C#

Qu’est-ce qu’un fichier de formes

Un fichier de formes représente des informations géospatiales sous la forme de données vectorielles à utiliser par les applications SIG. Il a été développé par ESRI en tant que spécification ouverte pour faciliter l’interopérabilité entre ESRI et d’autres produits logiciels. Il contient les données géométriques qui dessinent des points, des lignes ou des polygones sur une carte et les attributs de données. Les fichiers de formes peuvent être directement lus par plusieurs logiciels SIG tels que ArcGIS et QGIS.

Comment utiliser un fichier de formes

Un fichier de formes autonome (.shp) ne peut pas être utilisé par des applications logicielles. Cependant, un fichier de formes valide pouvant être utilisé dans un logiciel SIG doit contenir les fichiers obligatoires supplémentaires suivants :

API C# pour créer et lire un fichier de formes - Bibliothèque SIG .NET

Pour créer ou lire des fichiers de formes, nous utiliserons l’API Aspose.GIS for .NET. Il permet de restituer des cartes, de créer, de lire et de convertir des données géographiques sans logiciel supplémentaire. Il prend en charge le travail avec des fichiers de formes ainsi que plusieurs autres formats de fichiers pris en charge.

La classe VectorLayer de l’API représente une couche vectorielle. Il offre diverses propriétés et méthodes pour travailler avec une collection d’entités géographiques stockées dans un fichier. La méthode Create() de cette classe permet la création de couches vectorielles prises en charge. La classe Drivers fournit des pilotes pour tous les formats pris en charge. La classe Feature de l’API représente une entité géographique composée de géométrie et d’attributs définis par l’utilisateur.

Veuillez soit télécharger la DLL de l’API ou l’installer à l’aide de NuGet.

PM> Install-Package Aspose.GIS

Créer un fichier de formes à l’aide de C#

Nous pouvons facilement créer un fichier de formes par programmation en suivant les étapes ci-dessous :

  1. Tout d’abord, créez un calque à l’aide de la méthode VectorLayer.Create().
  2. Ensuite, ajoutez FeatureAttributes à la collection d’attributs de la couche.
  3. Ensuite, créez une instance de la classe Feature à l’aide de la méthode ConstructFeature().
  4. Après cela, définissez les valeurs des différents attributs.
  5. Enfin, ajoutez la fonctionnalité à l’aide de la méthode Add().

L’exemple de code suivant montre comment créer un fichier de formes en C# :

// Cet exemple de code montre comment créer un nouveau fichier de formes.
// Créer un nouveau fichier de formes
using (VectorLayer layer = VectorLayer.Create(@"C:\Files\GIS\NewShapeFile_out.shp", Drivers.Shapefile))
{
    // Ajouter des attributs avant d'ajouter des fonctionnalités
    layer.Attributes.Add(new FeatureAttribute("name", AttributeDataType.String));
    layer.Attributes.Add(new FeatureAttribute("age", AttributeDataType.Integer));
    layer.Attributes.Add(new FeatureAttribute("dob", AttributeDataType.DateTime));

    // Ajouter une fonctionnalité et définir des valeurs
    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);

    // Ajouter une autre fonctionnalité et définir des valeurs
    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);
}
Créer-Shapefile-using-CSharp

Créez un fichier de formes à l’aide de C#.

Ajouter des fonctionnalités à un fichier de formes existant à l’aide de C#

Nous pouvons également ajouter de nouvelles fonctionnalités à un fichier de formes existant en suivant les étapes ci-dessous :

  1. Tout d’abord, chargez un fichier de formes à l’aide de la méthode Drivers.Shapefile.EditLayer().
  2. Ensuite, créez une instance de la classe Feature à l’aide de la méthode ConstructFeature().
  3. Après cela, définissez les valeurs des différents attributs.
  4. Enfin, ajoutez la fonctionnalité à l’aide de la méthode Add().

L’exemple de code suivant montre comment ajouter des fonctionnalités à un fichier de formes existant à l’aide de C#.

// Cet exemple de code montre comment modifier un fichier de formes.
// Chemin du fichier
string path = Path.Combine(dataDir, "NewShapeFile_out.shp");

// Modifier le calque Shapefile
using (var layer = Drivers.Shapefile.EditLayer(path))
{
    // Ajouter une fonctionnalité
    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);
}

Lire un Shapefile en C#

Nous pouvons lire les attributs d’un fichier de formes en suivant les étapes ci-dessous :

  1. Tout d’abord, chargez un fichier de formes à l’aide de la méthode Drivers.Shapefile.OpenLayer().
  2. Parcourez chaque entité de la couche.
  3. Parcourez les attributs et affichez les détails des attributs.
  4. Enfin, vérifiez la géométrie des points et lisez les points.

L’exemple de code suivant montre comment lire un fichier de formes à l’aide de C#.

// Cet exemple de code montre comment lire un nouveau fichier de formes.
// Chemin du fichier
string path = Path.Combine(dataDir, "NewShapeFile_out.shp");

// Ouvrir un calque
var layer = Drivers.Shapefile.OpenLayer(path);

foreach (Feature feature in layer)
{
    foreach (var attribute in layer.Attributes)
    {
        // Afficher les détails de l'attribut
        Console.WriteLine(attribute.Name + " : " + feature.GetValue(attribute.Name));
    }

    // Vérifier la géométrie du point
    if (feature.Geometry.GeometryType == GeometryType.Point)
    {
        // Points de lecture
        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

Obtenez une licence gratuite

Vous pouvez obtenir une licence temporaire gratuite pour essayer la bibliothèque sans limitation d’évaluation.

Conclusion

Dans cet article, nous avons appris à

  • créer un nouveau fichier de formes par programmation ;
  • ajouter de nouvelles fonctionnalités au fichier de formes ;
  • modifier le calque du fichier de formes ;
  • ouvrez la couche du fichier de formes et lisez les attributs à l’aide de C#.

En outre, vous pouvez découvrir comment travailler avec plusieurs autres formats de fichiers SIG et en savoir plus sur Aspose.GIS pour l’API .NET à l’aide de la documentation. En cas d’ambiguïté, n’hésitez pas à nous contacter sur notre forum.

Voir également