פורמט Shapefile הוא פורמט נתוני וקטור גיאו-מרחבי המשמש להצגת מידע גיאוגרפי. אנו יכולים לאחסן את המיקום, הגיאומטריה והייחוס של תכונות נקודה, קו ומצולע ב-Shapefile. במאמר זה נלמד כיצד ליצור ולקרוא Shapefile ב-C#.
מאמר זה יעסוק בנושאים הבאים:
- מהו Shapefile
- כיצד להשתמש ב- Shapefile
- C# API ליצירה ולקריאת Shapefile – ספריית .NET GIS
- צור Shapefile באמצעות C#
- הוסף תכונות ל-ShapeFile קיים ב-C#
- קרא Shapefile באמצעות C#
מהו Shapefile
Shapefile מייצג מידע גיאו-מרחבי בצורה של נתונים וקטוריים לשימוש יישומי GIS. הוא פותח על ידי ESRI כמפרט פתוח כדי להקל על יכולת פעולה הדדית בין ESRI ומוצרי תוכנה אחרים. הוא מכיל את הנתונים הגיאומטריים המציירים נקודות, קווים או מצולעים במפה ואת תכונות הנתונים. ניתן לקרוא קבצי Shape ישירות על ידי מספר תוכנות GIS כגון ArcGIS ו-QGIS.
כיצד להשתמש ב- Shapefile
לא ניתן להשתמש ב-shapefile עצמאי (.shp) על ידי יישומי תוכנה. עם זאת, קובץ צורה חוקי שניתן להשתמש בתוכנת GIS צריך להכיל את קבצי החובה הנוספים הבאים:
- קובץ אינדקס צורה (.shx) - a positional index of the feature geometry;
- קובץ תכונות dBase (.dbf) - a dBASE file that stores all the attributes of the shapes;
- קובץ עמוד קוד (.cpg) - הקובץ לזיהוי קידוד התווים.
C# API ליצירה וקריאה של Shapefile – ספריית .NET GIS
כדי ליצור או לקרוא קבצי צורה, נשתמש ב-Aspose.GIS for .NET API. זה מאפשר לעבד מפות, ליצור, לקרוא ולהמיר נתונים גיאוגרפיים ללא תוכנה נוספת. הוא תומך בעבודה עם קבצי צורה יחד עם מספר [פורמטים נתמכים של קבצים] אחרים 14.
המחלקה VectorLayer של ה-API מייצגת שכבה וקטורית. הוא מציע מאפיינים ושיטות שונות לעבודה עם אוסף של תכונות גיאוגרפיות המאוחסנות בקובץ. השיטה Create() של מחלקה זו מאפשרת יצירת שכבות וקטור נתמכות. מחלקה Drivers מספקת מנהלי התקנים לכל הפורמטים הנתמכים. המחלקה Feature של ה-API מייצגת תכונה גיאוגרפית המורכבת מגיאומטריה ותכונות מוגדרות על ידי המשתמש.
אנא הורד את ה-DLL של ה-API או התקן אותו באמצעות NuGet.
PM> Install-Package Aspose.GIS
צור Shapefile באמצעות C#
אנו יכולים ליצור בקלות קובץ צורה באופן תוכנתי על ידי ביצוע השלבים המפורטים להלן:
- ראשית, צור שכבה באמצעות שיטת VectorLayer.Create() .
- לאחר מכן, הוסף FeatureAttributes לאוסף התכונות של השכבה.
- לאחר מכן, צור מופע של המחלקה Feature באמצעות השיטה ConstructFeature() .
- לאחר מכן, הגדר ערכים של תכונות שונות.
- לבסוף, הוסף את התכונה באמצעות שיטת Add() .
דוגמת הקוד הבאה מראה כיצד ליצור קובץ shape ב-C#:
// דוגמה זו מדגימה כיצד ליצור קובץ צורה חדש.
// צור 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);
}
הוסף תכונות ל-ShapeFile קיים באמצעות C#
אנו יכולים גם להוסיף תכונות חדשות לקובץ shapefile קיים על ידי ביצוע השלבים המפורטים להלן:
- ראשית, טען קובץ shape באמצעות שיטת Drivers.Shapefile.EditLayer() .
- לאחר מכן, צור מופע של המחלקה Feature באמצעות שיטת ConstructFeature() .
- לאחר מכן, הגדר ערכים של תכונות שונות.
- לבסוף, הוסף את התכונה באמצעות שיטת Add() .
דוגמת הקוד הבאה מראה כיצד להוסיף תכונות לקובץ shapefile קיים באמצעות 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);
}
קרא קובץ Shape באמצעות C#
אנו יכולים לקרוא תכונות מקובץ shape על ידי ביצוע השלבים המפורטים להלן:
- ראשית, טען קובץ shape באמצעות שיטת Drivers.Shapefile.OpenLayer().
- עברו בלולאה דרך כל תכונה בשכבה.
- עברו בלולאה בין תכונות והצגו פרטי תכונות.
- לבסוף, בדוק את גיאומטריית הנקודה וקרא נקודות.
דגימת הקוד הבאה מראה כיצד לקרוא קובץ shape באמצעות C#.
// דוגמה זו מדגימה כיצד לקרוא קובץ צורה חדש.
// נתיב הקובץ
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
קבל רישיון חינם
אתה יכול לקבל רישיון זמני בחינם כדי לנסות את הספרייה ללא מגבלות הערכה.
סיכום
במאמר זה למדנו כיצד לעשות זאת
- צור קובץ צורה חדש באופן תכנותי;
- הוסף תכונות חדשות ל- shapefile;
- ערוך שכבת shapefile;
- פתח את שכבת shapefile וקרא את התכונות באמצעות C#.
חוץ מזה, אתה יכול לחקור כיצד לעבוד עם מספר פורמטים אחרים של קבצי GIS וללמוד עוד על Aspose.GIS עבור .NET API באמצעות תיעוד. בכל מקרה של אי בהירות, אנא אל תהסס לפנות אלינו בפורום שלנו.