C# ile Shapefile Oluşturun ve Okuyun

Shapefile formatı, coğrafi bilgileri görüntülemek için kullanılan jeo uzamsal bir vektör veri formatıdır. Nokta, çizgi ve çokgen özelliklerinin konumunu, geometrisini ve niteliğini Shapefile’de saklayabiliriz. Bu yazımızda C# dilinde Shapefile oluşturmayı ve okumayı öğreneceğiz.

Bu makale aşağıdaki konuları kapsayacaktır:

  1. Şekil dosyası nedir
  2. Bir Şekil Dosyası Nasıl Kullanılır
  3. Shapefile Oluşturmak ve Okumak için C# API’si – .NET GIS Kitaplığı
  4. C# kullanarak bir Shapefile oluşturun
  5. C#’ta Mevcut Bir ShapeFile’a Özellikler Ekleyin
  6. C# kullanarak bir Shapefile okuyun

Şekil dosyası nedir

Bir şekil dosyası, GIS uygulamaları tarafından kullanılacak vektör verileri biçiminde Jeo-uzamsal bilgileri temsil eder. ESRI tarafından, ESRI ve diğer yazılım ürünleri arasında birlikte çalışabilirliği kolaylaştırmak için açık bir belirtim olarak geliştirilmiştir. Bir harita üzerinde noktalar, çizgiler veya çokgenler çizen geometrik verileri ve veri özniteliklerini içerir. Şekil dosyaları, ArcGIS ve QGIS gibi çeşitli GIS yazılım programları tarafından doğrudan okunabilir.

Shapefile Nasıl Kullanılır?

Bağımsız bir şekil dosyası (.shp), yazılım uygulamaları tarafından kullanılamaz. Ancak GIS yazılımında kullanılabilecek geçerli bir şekil dosyası aşağıdaki ek zorunlu dosyaları içermelidir:

Shapefile Oluşturmak ve Okumak için C# API’si – .NET GIS Kitaplığı

Şekil dosyaları oluşturmak veya okumak için Aspose.GIS for .NET API’sini kullanacağız. Ek yazılım olmadan haritaların oluşturulmasına, coğrafi verilerin oluşturulmasına, okunmasına ve dönüştürülmesine olanak tanır. Diğer desteklenen dosya biçimleri ile birlikte şekil dosyalarıyla çalışmayı destekler.

API’nin VectorLayer sınıfı, bir vektör katmanını temsil eder. Bir dosyada saklanan coğrafi özellikler koleksiyonuyla çalışmak için çeşitli özellikler ve yöntemler sunar. Bu sınıfın Create() yöntemi, desteklenen vektör katmanlarının oluşturulmasına izin verir. Drivers sınıfı, desteklenen tüm biçimler için sürücüler sağlar. API’nin Feature sınıfı, geometri ve kullanıcı tanımlı niteliklerden oluşan bir coğrafi özelliği temsil eder.

Lütfen API’nin DLL’sini indirin veya NuGet kullanarak kurun.

PM> Install-Package Aspose.GIS

C# kullanarak Shapefile oluşturun

Aşağıda verilen adımları izleyerek programlı olarak kolayca bir şekil dosyası oluşturabiliriz:

  1. İlk olarak, VectorLayer.Create() yöntemini kullanarak bir katman oluşturun.
  2. Ardından, katmanın öznitelik koleksiyonuna FeatureAttributes ekleyin.
  3. Ardından, ConstructFeature() yöntemini kullanarak bir Feature sınıfı örneği oluşturun.
  4. Bundan sonra, farklı özniteliklerin değerlerini ayarlayın.
  5. Son olarak, Add() yöntemini kullanarak özelliği ekleyin.

Aşağıdaki kod örneği, C# dilinde bir şekil dosyasının nasıl oluşturulacağını gösterir:

// Bu kod örneği, yeni bir şekil dosyasının nasıl oluşturulacağını gösterir.
// Yeni bir Şekil dosyası oluştur
using (VectorLayer layer = VectorLayer.Create(@"C:\Files\GIS\NewShapeFile_out.shp", Drivers.Shapefile))
{
    // Özellik eklemeden önce öznitelik ekleyin
    layer.Attributes.Add(new FeatureAttribute("name", AttributeDataType.String));
    layer.Attributes.Add(new FeatureAttribute("age", AttributeDataType.Integer));
    layer.Attributes.Add(new FeatureAttribute("dob", AttributeDataType.DateTime));

    // Özellik ekleyin ve değerleri ayarlayın
    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);

    // Başka bir özellik ekleyin ve değerleri ayarlayın
    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-kullanarak-CSharp

C# kullanarak Shapefile oluşturun.

C# kullanarak Mevcut ShapeFile’a Özellikler Ekleyin

Ayrıca aşağıda verilen adımları izleyerek mevcut bir şekil dosyasına yeni özellikler ekleyebiliriz:

  1. Öncelikle, Drivers.Shapefile.EditLayer() yöntemini kullanarak bir şekil dosyası yükleyin.
  2. Ardından, ConstructFeature() yöntemini kullanarak bir Feature sınıfı örneği oluşturun.
  3. Bundan sonra, farklı özniteliklerin değerlerini ayarlayın.
  4. Son olarak, Add() yöntemini kullanarak özelliği ekleyin.

Aşağıdaki kod örneği, C# kullanarak varolan bir şekil dosyasına nasıl özellik ekleneceğini gösterir.

// Bu kod örneği, bir şekil dosyasının nasıl düzenleneceğini gösterir.
// Dosya yolu
string path = Path.Combine(dataDir, "NewShapeFile_out.shp");

// Shapefile katmanını düzenle
using (var layer = Drivers.Shapefile.EditLayer(path))
{
    // özellik ekle
    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);
}

C# kullanarak bir Shapefile okuyun

Aşağıda verilen adımları izleyerek bir şekil dosyasından öznitelikleri okuyabiliriz:

  1. Öncelikle, Drivers.Shapefile.OpenLayer() yöntemini kullanarak bir şekil dosyası yükleyin.
  2. Katmandaki her Özellik içinde döngü yapın.
  3. Öznitelikler arasında dolaşın ve öznitelik ayrıntılarını gösterin.
  4. Son olarak, Nokta geometrisini kontrol edin ve noktaları okuyun.

Aşağıdaki kod örneği, C# kullanarak bir şekil dosyasının nasıl okunacağını gösterir.

// Bu kod örneği, yeni bir şekil dosyasının nasıl okunacağını gösterir.
// Dosya yolu
string path = Path.Combine(dataDir, "NewShapeFile_out.shp");

// Bir katman aç
var layer = Drivers.Shapefile.OpenLayer(path);

foreach (Feature feature in layer)
{
    foreach (var attribute in layer.Attributes)
    {
        // Öznitelik ayrıntılarını göster
        Console.WriteLine(attribute.Name + " : " + feature.GetValue(attribute.Name));
    }

    // Nokta geometrisini kontrol edin
    if (feature.Geometry.GeometryType == GeometryType.Point)
    {
        // Okuma Noktaları
        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

Ücretsiz Lisans Alın

Kitaplığı değerlendirme sınırlamaları olmadan denemek için ücretsiz bir geçici lisans alabilirsiniz.

Çözüm

Bu yazıda, nasıl yapılacağını öğrendik

  • programlı olarak yeni bir şekil dosyası oluşturun;
  • şekil dosyasına yeni özellikler ekleyin;
  • şekil dosyası katmanını düzenleyin;
  • shapefile katmanını açın ve C# kullanarak öznitelikleri okuyun.

Ayrıca, belgelemeyi kullanarak diğer birçok GIS dosya formatıyla nasıl çalışacağınızı keşfedebilir ve Aspose.GIS for .NET API hakkında daha fazla bilgi edinebilirsiniz. Herhangi bir belirsizlik durumunda, lütfen forumumuzdan bizimle iletişime geçmekten çekinmeyin.

Ayrıca bakınız