รูปแบบ Shapefile เป็นรูปแบบข้อมูลเวกเตอร์เชิงพื้นที่ที่ใช้แสดงข้อมูลทางภูมิศาสตร์ เราสามารถจัดเก็บตำแหน่ง รูปทรงเรขาคณิต และลักษณะของจุด เส้น และรูปหลายเหลี่ยมใน Shapefile ในบทความนี้ เราจะมาเรียนรู้วิธีการสร้างและอ่าน Shapefile ใน C#
บทความนี้จะครอบคลุมหัวข้อต่อไปนี้:
- Shapefile คืออะไร
- วิธีใช้ Shapefile
- C# API เพื่อสร้างและอ่าน Shapefile – .NET GIS Library
- สร้าง Shapefile โดยใช้ C#
- เพิ่มคุณสมบัติให้กับ ShapeFile ที่มีอยู่ใน C#
- อ่าน Shapefile โดยใช้ C#
Shapefile คืออะไร
ไฟล์รูปร่างแสดงข้อมูลเชิงพื้นที่ในรูปแบบของข้อมูลเวกเตอร์ที่จะใช้โดยแอปพลิเคชัน GIS ได้รับการพัฒนาโดย ESRI เป็นข้อกำหนดแบบเปิดเพื่ออำนวยความสะดวกในการทำงานร่วมกันระหว่าง ESRI และผลิตภัณฑ์ซอฟต์แวร์อื่นๆ ประกอบด้วยข้อมูลทางเรขาคณิตที่วาดจุด เส้น หรือรูปหลายเหลี่ยมบนแผนที่และแอตทริบิวต์ของข้อมูล Shapefiles สามารถอ่านได้โดยตรงจากโปรแกรมซอฟต์แวร์ 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 Library
ในการสร้างหรืออ่านไฟล์รูปร่าง เราจะใช้ API ของ Aspose.GIS for .NET ช่วยให้แสดงแผนที่ สร้าง อ่าน และแปลงข้อมูลทางภูมิศาสตร์โดยไม่ต้องใช้ซอฟต์แวร์เพิ่มเติม รองรับการทำงานกับไฟล์รูปร่างพร้อมกับ [รูปแบบไฟล์ที่รองรับ] อื่น ๆ อีกมากมาย 14
คลาส VectorLayer ของ API แสดงถึงเลเยอร์เวกเตอร์ นำเสนอคุณสมบัติและวิธีการต่างๆ ในการทำงานกับคอลเลกชันของคุณลักษณะทางภูมิศาสตร์ที่จัดเก็บไว้ในไฟล์ เมธอด Create() ของคลาสนี้ทำให้สามารถสร้างเลเยอร์เวกเตอร์ที่รองรับได้ คลาส Drivers มีไดรเวอร์สำหรับรูปแบบที่รองรับทั้งหมด คลาส ฟีเจอร์ ของ API แสดงถึงฟีเจอร์ทางภูมิศาสตร์ที่ประกอบด้วยรูปทรงเรขาคณิตและแอตทริบิวต์ที่ผู้ใช้กำหนด
โปรด ดาวน์โหลด DLL ของ API หรือติดตั้งโดยใช้ NuGet
PM> Install-Package Aspose.GIS
สร้าง Shapefile โดยใช้ C#
เราสามารถสร้างไฟล์รูปร่างโดยทางโปรแกรมได้อย่างง่ายดายโดยทำตามขั้นตอนด้านล่าง:
- ขั้นแรก สร้างเลเยอร์โดยใช้เมธอด VectorLayer.Create()
- ถัดไป เพิ่ม FeatureAttributes ให้กับคอลเลกชันของแอตทริบิวต์ของเลเยอร์
- จากนั้น สร้างอินสแตนซ์ของคลาส Feature โดยใช้เมธอด ConstructFeature()
- หลังจากนั้นให้กำหนดค่าของแอตทริบิวต์ต่างๆ
- สุดท้ายเพิ่มคุณสมบัติโดยใช้วิธีการเพิ่ม ()
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการสร้างไฟล์รูปร่างใน 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
เรายังสามารถเพิ่มคุณสมบัติใหม่ให้กับไฟล์รูปร่างที่มีอยู่โดยทำตามขั้นตอนด้านล่าง:
- ประการแรก โหลดไฟล์รูปร่างโดยใช้เมธอด Drivers.Shapefile.EditLayer()
- จากนั้น สร้างอินสแตนซ์ของคลาส Feature โดยใช้เมธอด ConstructFeature()
- หลังจากนั้นให้กำหนดค่าของแอตทริบิวต์ต่างๆ
- สุดท้ายเพิ่มคุณสมบัติโดยใช้วิธีการเพิ่ม ()
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีเพิ่มฟีเจอร์ให้กับไฟล์รูปร่างที่มีอยู่โดยใช้ 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#
เราสามารถอ่านแอตทริบิวต์จากไฟล์รูปร่างได้โดยทำตามขั้นตอนด้านล่าง:
- ประการแรก โหลดไฟล์รูปร่างโดยใช้เมธอด Drivers.Shapefile.OpenLayer()
- วนซ้ำแต่ละฟีเจอร์ในเลเยอร์
- วนซ้ำแอตทริบิวต์และแสดงรายละเอียดแอตทริบิวต์
- สุดท้าย ตรวจสอบ Point geometry และอ่าน point
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการอ่านไฟล์รูปร่างโดยใช้ 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
รับใบอนุญาตฟรี
คุณสามารถ รับใบอนุญาตชั่วคราวได้ฟรี เพื่อทดลองใช้ห้องสมุดโดยไม่มีข้อจำกัดในการประเมิน
บทสรุป
ในบทความนี้ เราได้เรียนรู้วิธีการ
- สร้างไฟล์รูปร่างใหม่โดยทางโปรแกรม
- เพิ่มคุณสมบัติใหม่ให้กับไฟล์รูปร่าง
- แก้ไขเลเยอร์ไฟล์รูปร่าง
- เปิดเลเยอร์ไฟล์รูปร่างและอ่านแอตทริบิวต์โดยใช้ C#
นอกจากนี้ คุณสามารถสำรวจวิธีการทำงานกับไฟล์ GIS รูปแบบอื่นๆ และเรียนรู้เพิ่มเติมเกี่ยวกับ Aspose.GIS for .NET API โดยใช้ เอกสารประกอบ ในกรณีที่มีความคลุมเครือ โปรดติดต่อเราได้ที่ ฟอรัม