在 C# 中將 Shapefile 轉換為 KML

我們可能擁有各種系統支持的多種格式的地理數據。在某些情況下,我們可能需要將地理數據從 ESRI Shapefile (SHP) 格式導出為 Keyhole Markup Language (KML) 格式。 Shapefile 格式是 ESRI 最常用的地理空間矢量數據格式之一,用於顯示地理信息。 KML 是一種基於 XML 的格式,用於與非 GIS 用戶共享地理數據。 KML 格式用於在 Google Earth 或 Google Maps 中顯示地理數據。在本文中,我們將學習如何在 C# 中將 shapefile 轉換為 KML。

本文應涵蓋以下主題:

  1. C# Shapefile 到 KML 轉換器
  2. 將 Shapefile 轉換為 KML 的步驟
  3. 將 ShapeFile 導出為 KML

C# Shapefile 到 KML 轉換器 API - 免費下載

要將 shapefile 轉換為 KML,我們將使用 Aspose.GIS for .NET API。它允許將 shapefile 導出為 KML,而無需 ArcGISArcMapQGISGoogle Earth 等軟件。 API 還允許渲染地圖,創建、讀取和轉換支持的文件格式 中可用的地理數據。

API 的 ConversionOptions 類提供了在格式之間轉換數據的選項。 SpatialReferenceSystem 類提供了一個不同空間參考系統的列表,用於將坐標映射到地球上的位置。我們有 VectorLayer 類表示 API 中的矢量圖層。此類的 Convert(string, FileDriver, string, FileDriver, ConversionOptions) 方法將層轉換為不同的格式。

下載 API 的 DLL 或使用 NuGet 安裝它。

PM> Install-Package Aspose.GIS

如何在 C# 中將 Shapefile 轉換為 KML

我們可以按照以下步驟使用 Aspose.GIS for .NET 輕鬆地將 shapefile 轉換為 KML:

  • 將 Wgs84 空間參考分配給目標圖層。
  • 將文件格式從 SHP 加載並轉換為 KML。

現在,讓我們看看如何在 C# 中執行這些步驟以將 shapefile 文件轉換為 KML 格式。

在 C# 中將 ShapeFile 導出到 KML

請按照以下步驟將數據從 shapefile 導出到 KML:

  1. 初始化 ConversionOptions 類的實例。
  2. 將 DestinationSpatialReferenceSystem 設置為 Wgs84。
  3. 最後,調用 VectorLayer.Convert() 方法將源 shapefile 轉換為 KML。

以下代碼示例展示瞭如何使用 C# 將 shapefile 轉換為 KML。

// 此代碼示例演示瞭如何在 C# 中將 shapefile 轉換為 KML。
// 工作目錄
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);

獲得免費許可證

您可以 獲得免費的臨時許可證 來試用該庫,而沒有評估限制。

結論

在本文中,我們學習瞭如何在 C# 中將 shapefile 轉換為 KML。我們還看到瞭如何以編程方式定義轉換選項。此外,您可以探索如何使用其他幾種 GIS 文件格式,並使用 文檔 了解有關 Aspose.GIS for .NET API 的更多信息。如有任何歧義,請隨時在我們的 論壇 上與我們聯繫。

也可以看看