เราอาจมีข้อมูลทางภูมิศาสตร์ในหลายรูปแบบที่รองรับโดยระบบต่างๆ ในบางกรณี เราอาจต้องส่งออกข้อมูลทางภูมิศาสตร์จากรูปแบบ ESRI Shapefile (SHP) เป็นรูปแบบ Keyhole Markup Language (KML) รูปแบบ Shapefile เป็นหนึ่งในรูปแบบข้อมูลเวกเตอร์เชิงพื้นที่ทั่วไปของ ESRI ที่ใช้เพื่อแสดงข้อมูลทางภูมิศาสตร์ KML เป็นรูปแบบที่ใช้ XML ใช้เพื่อแบ่งปันข้อมูลทางภูมิศาสตร์กับผู้ใช้ที่ไม่ใช่ GIS รูปแบบ KML ใช้เพื่อแสดงข้อมูลทางภูมิศาสตร์ใน Google Earth หรือ Google Maps ในบทความนี้ เราจะเรียนรู้วิธีแปลงไฟล์รูปร่างเป็น KML ในภาษา C#
บทความนี้จะครอบคลุมหัวข้อต่อไปนี้:
C# Shapefile เป็น KML Converter API - ดาวน์โหลดฟรี
ในการแปลงไฟล์รูปร่างเป็น KML เราจะใช้ API Aspose.GIS for .NET อนุญาตให้ส่งออกไฟล์รูปร่างเป็น KML โดยไม่ต้องใช้ซอฟต์แวร์ เช่น ArcGIS, ArcMap, QGIS หรือ Google Earth API ยังอนุญาตให้แสดงแผนที่ สร้าง อ่าน และแปลงข้อมูลทางภูมิศาสตร์ที่มีอยู่ใน รูปแบบไฟล์ที่รองรับ
คลาส ConversionOptions ของ API มีตัวเลือกสำหรับการแปลงข้อมูลระหว่างรูปแบบต่างๆ คลาส SpatialReferenceSystem จัดเตรียมรายการระบบอ้างอิงเชิงพื้นที่ต่างๆ เพื่อใช้ในการแมปพิกัดกับสถานที่ต่างๆ บนโลก เรามีคลาส VectorLayer ที่แสดงถึงเลเยอร์เวกเตอร์ใน API เมธอด Convert(string, FileDriver, string, FileDriver, ConversionOptions) ของคลาสนี้จะแปลงเลเยอร์เป็นรูปแบบอื่น
โปรด ดาวน์โหลด DLL ของ API หรือติดตั้งโดยใช้ NuGet
PM> Install-Package Aspose.GIS
วิธีแปลง Shapefile เป็น KML ใน C#
เราสามารถแปลงไฟล์รูปร่างเป็น KML โดยใช้ Aspose.GIS for .NET โดยทำตามขั้นตอนด้านล่าง:
- กำหนดการอ้างอิงเชิงพื้นที่ Wgs84 ให้กับเลเยอร์ปลายทาง
- โหลดและแปลงรูปแบบไฟล์จาก SHP เป็น KML
ตอนนี้ มาดูวิธีการทำตามขั้นตอนเหล่านี้ใน C# เพื่อแปลงไฟล์เชพไฟล์เป็นรูปแบบ KML
ส่งออก ShapeFile เป็น KML ใน C#
โปรดปฏิบัติตามขั้นตอนด้านล่างเพื่อส่งออกข้อมูลจากไฟล์รูปร่างไปยัง KML:
- เริ่มต้นอินสแตนซ์ของคลาส ConversionOptions
- ตั้งค่า DestinationSpatialReferenceSystem เป็น Wgs84
- สุดท้าย เรียกเมธอด VectorLayer.Convert() เพื่อแปลงไฟล์รูปร่างต้นฉบับเป็น KML
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีแปลงไฟล์รูปร่างเป็น KML โดยใช้ C#
// ตัวอย่างโค้ดนี้สาธิตวิธีแปลงไฟล์รูปร่างเป็น KML ในภาษา C#
// ไดเร็กทอรีการทำงาน
string dataDir = @"C:\Files\GIS\";
// ระบุการตั้งค่าการแปลงหากจำเป็น เป็นทางเลือก
ConversionOptions options = null;
// การแปลงอาจเกิดข้อผิดพลาด หากเลเยอร์ปลายทางไม่รองรับการอ้างอิงเชิงพื้นที่ Wgs84 ดังนั้นต้องตรวจสอบ
if (Drivers.Shapefile.SupportsSpatialReferenceSystem(SpatialReferenceSystem.Wgs84))
{
// กำหนด Wgs84 ให้กับเลเยอร์ปลายทาง
options = new ConversionOptions()
{
DestinationSpatialReferenceSystem = SpatialReferenceSystem.Wgs84,
};
}
// แปลง Shapefile เป็น KML
VectorLayer.Convert(dataDir + "Shapefile.shp", Drivers.Shapefile, dataDir + "destination.kml", Drivers.Kml, options);
รับใบอนุญาตฟรี
คุณสามารถ รับใบอนุญาตชั่วคราวได้ฟรี เพื่อทดลองใช้ห้องสมุดโดยไม่มีข้อจำกัดในการประเมิน
บทสรุป
ในบทความนี้ เราได้เรียนรู้วิธีแปลงไฟล์รูปร่างเป็น KML ในภาษา C# เราได้เห็นวิธีกำหนดตัวเลือกการแปลงโดยทางโปรแกรมด้วย นอกจากนี้ คุณสามารถสำรวจวิธีการทำงานกับไฟล์ GIS รูปแบบอื่นๆ และเรียนรู้เพิ่มเติมเกี่ยวกับ Aspose.GIS for .NET API โดยใช้ เอกสารประกอบ ในกรณีที่มีความคลุมเครือ โปรดติดต่อเราได้ที่ ฟอรัม