ایجاد و خواندن Shapefile در سی شارپ

فرمت Shapfile یک فرمت داده برداری مکانی است که برای نمایش اطلاعات جغرافیایی استفاده می شود. ما می توانیم مکان، هندسه، و انتساب ویژگی های نقطه، خط و چند ضلعی را در Shapefile ذخیره کنیم. در این مقاله با نحوه ایجاد و خواندن Shapefile در سی شارپ آشنا می شویم.

این مقاله باید موضوعات زیر را پوشش دهد:

  1. Shapefile چیست
  2. نحوه استفاده از Shapefile
  3. C# API برای ایجاد و خواندن Shapefile – .NET GIS Library
  4. ایجاد یک Shapefile با استفاده از C#
  5. افزودن ویژگی‌ها به ShapeFile موجود در C#
  6. خواندن یک Shapefile با استفاده از C#

Shapefile چیست

شکل فایل اطلاعات مکانی را در قالب داده های برداری برای استفاده توسط برنامه های GIS نشان می دهد. توسط ESRI به عنوان یک مشخصات باز برای تسهیل قابلیت همکاری بین ESRI و سایر محصولات نرم افزاری توسعه داده شد. این شامل داده های هندسی است که نقاط، خطوط یا چند ضلعی ها را روی نقشه و ویژگی های داده ترسیم می کند. Shapefiles را می توان مستقیماً توسط چندین نرم افزار GIS مانند ArcGIS و QGIS خواند.

نحوه استفاده از Shapefile

یک shapefile مستقل (shp.) نمی تواند توسط برنامه های نرم افزاری استفاده شود. با این حال، یک شکل فایل معتبر که می تواند در نرم افزار GIS استفاده شود باید حاوی فایل های اجباری اضافی زیر باشد:

C# API برای ایجاد و خواندن Shapefile – کتابخانه NET GIS

برای ایجاد یا خواندن فایل‌های شکل، از API Aspose.GIS برای .NET استفاده خواهیم کرد. این امکان رندر نقشه ها، ایجاد، خواندن و تبدیل داده های جغرافیایی را بدون نرم افزار اضافی فراهم می کند. از کار با شیپ فایل ها همراه با چندین [فرمت فایل پشتیبانی شده] دیگر پشتیبانی می کند.

کلاس VectorLayer API یک لایه برداری را نشان می دهد. این ویژگی ها و روش های مختلفی را برای کار با مجموعه ای از ویژگی های جغرافیایی ذخیره شده در یک فایل ارائه می دهد. متد Create() این کلاس اجازه ایجاد لایه های برداری پشتیبانی شده را می دهد. کلاس Drivers درایورهایی را برای همه فرمت های پشتیبانی شده ارائه می کند. کلاس Feature API یک ویژگی جغرافیایی متشکل از هندسه و ویژگی های تعریف شده توسط کاربر را نشان می دهد.

لطفاً DLL API را دانلود یا با استفاده از NuGet نصب کنید.

PM> Install-Package Aspose.GIS

ایجاد Shapefile با استفاده از C#

با دنبال کردن مراحل زیر می توانیم به راحتی یک فایل شیپ را به صورت برنامه ریزی شده ایجاد کنیم:

  1. ابتدا با استفاده از متد VectorLayer.Create یک لایه ایجاد کنید.
  2. سپس FeatureAttributes را به مجموعه ویژگی های لایه اضافه کنید.
  3. سپس با استفاده از متد ConstructFeature() یک نمونه از کلاس Feature ایجاد کنید.
  4. پس از آن، مقادیر ویژگی های مختلف را تنظیم کنید.
  5. در نهایت، ویژگی را با استفاده از متد Add() اضافه کنید.

نمونه کد زیر نحوه ایجاد یک شکل فایل در سی شارپ را نشان می دهد:

// این مثال کد نحوه ایجاد یک شکل فایل جدید را نشان می دهد.
// یک Shapefile جدید ایجاد کنید
using (VectorLayer layer = VectorLayer.Create(@"C:\Files\GIS\NewShapeFile_out.shp", Drivers.Shapefile))
{
    // قبل از افزودن ویژگی ها، ویژگی ها را اضافه کنید
    layer.Attributes.Add(new FeatureAttribute("name", AttributeDataType.String));
    layer.Attributes.Add(new FeatureAttribute("age", AttributeDataType.Integer));
    layer.Attributes.Add(new FeatureAttribute("dob", AttributeDataType.DateTime));

    // ویژگی را اضافه کنید و مقادیر را تنظیم کنید
    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);

    // یک ویژگی دیگر اضافه کنید و مقادیر را تنظیم کنید
    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-Shapfile-using-CSharp

ایجاد Shapefile با استفاده از C#.

افزودن ویژگی به ShapeFile موجود با استفاده از C#

همچنین می‌توانیم با دنبال کردن مراحل زیر، ویژگی‌های جدیدی را به شکل فایل موجود اضافه کنیم:

  1. ابتدا یک شکل فایل را با استفاده از متد Drivers.Shapfile.EditLayer () بارگذاری کنید.
  2. سپس با استفاده از متد ConstructFeature() یک نمونه از کلاس Feature ایجاد کنید.
  3. پس از آن، مقادیر ویژگی های مختلف را تنظیم کنید.
  4. در نهایت، ویژگی را با استفاده از متد Add() اضافه کنید.

نمونه کد زیر نشان می دهد که چگونه می توان ویژگی ها را با استفاده از C# به یک شکل فایل موجود اضافه کرد.

// این مثال کد نحوه ویرایش یک شکل فایل را نشان می دهد.
// مسیر فایل
string path = Path.Combine(dataDir, "NewShapeFile_out.shp");

// لایه Shapefile را ویرایش کنید
using (var layer = Drivers.Shapefile.EditLayer(path))
{
    // افزودن ویژگی
    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);
}

خواندن Shapefile با استفاده از C#

با دنبال کردن مراحل زیر می‌توانیم ویژگی‌ها را از یک shapefile بخوانیم:

  1. ابتدا یک شکل فایل را با استفاده از متد Drivers.Shapfile.OpenLayer () بارگذاری کنید.
  2. از طریق هر ویژگی در لایه حلقه بزنید.
  3. در میان ویژگی ها حلقه بزنید و جزئیات ویژگی را نشان دهید.
  4. در نهایت، Point geometry را بررسی کنید و نقاط را بخوانید.

نمونه کد زیر نحوه خواندن یک شکل فایل با استفاده از سی شارپ را نشان می دهد.

// این مثال کد نحوه خواندن یک شکل فایل جدید را نشان می دهد.
// مسیر فایل
string path = Path.Combine(dataDir, "NewShapeFile_out.shp");

// یک لایه باز کنید
var layer = Drivers.Shapefile.OpenLayer(path);

foreach (Feature feature in layer)
{
    foreach (var attribute in layer.Attributes)
    {
        // نمایش جزئیات ویژگی
        Console.WriteLine(attribute.Name + " : " + feature.GetValue(attribute.Name));
    }

    // هندسه نقطه ای را بررسی کنید
    if (feature.Geometry.GeometryType == GeometryType.Point)
    {
        // نکات را بخوانید
        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

مجوز رایگان دریافت کنید

می‌توانید [یک مجوز موقت رایگان] دریافت کنید21 تا کتابخانه را بدون محدودیت ارزیابی امتحان کنید.

نتیجه

در این مقاله یاد گرفتیم که چگونه

  • ایجاد یک شکل فایل جدید به صورت برنامه ریزی شده.
  • اضافه کردن ویژگی های جدید به shapefile.
  • ویرایش لایه shapefile.
  • لایه shapefile را باز کنید و ویژگی ها را با استفاده از C# بخوانید.

علاوه بر این، می‌توانید نحوه کار با چندین فرمت فایل GIS دیگر را بررسی کنید و با استفاده از مستندات درباره Aspose.GIS برای API .NET اطلاعات بیشتری کسب کنید. در صورت وجود هرگونه ابهام، لطفاً با ما در [تالار گفتمان23 تماس بگیرید.

همچنین ببینید