在 C# 中将 Shapefile 转换为 KML

我们可能有各种系统支持的多种格式的地理数据。在某些情况下,我们可能需要将地理数据从 ESRI Shapefile (SHP) 格式导出为 Keyhole Markup Language (KML) 格式。 Shapefile 格式是 ESRI 用于显示地理信息的最常见的地理空间矢量数据格式之一。 KML 是一种基于 XML 的格式,用于与非 GIS 用户共享地理数据。 KML 格式用于在 Google 地球或 Google 地图中显示地理数据。在本文中,我们将学习如何在 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 的信息。如有任何歧义,请随时在我们的 论坛 上与我们联系。

也可以看看