在 C# 中将 Shapefile 转换为 SVG

Shapefile 格式是 ESRI 用于显示地理信息的最常见的地理空间矢量数据格式之一。在某些情况下,我们可能需要将地理数据从 ESRI Shapefile (SHP) 格式导出为 SVG 格式。 SVG 是一种基于 XML 的文本格式,用于描述图像的外观。在本文中,我们将学习如何在 C# 中将 shapefile 转换为 SVG。

本文将涵盖以下主题:

  1. C# Shapefile 到 SVG 转换器
  2. 将 Shapefile 转换为 SVG 的步骤
  3. 将 ShapeFile 渲染为 SVG

C# Shapefile 到 SVG 转换器 API - 免费下载

要将 shapefile 转换为 SVG,我们将使用 Aspose.GIS for .NET API。它允许将 shapefile 导出为 SVG,而无需 ArcGISArcMapQGISGoogle Earth 等软件。 API 还允许渲染地图、创建、读取和转换支持的文件格式 中可用的地理数据。

API 的 Map 类是图层的集合,可以通过 Renderer 在彼此之上渲染。 SpatialReferenceSystem 类提供了用于地图的不同空间参考系统的列表。我们可以使用 SimpleLine 类定义一个简单的矢量线符号。我们有 VectorLayer 类,它表示 API 中的矢量图层。我们可以使用该类的 Open(string, FileDriver) 方法将 shapefile 加载到矢量图层中。它打开图层以供阅读。

下载 API 的 DLL 或使用 NuGet 安装它。

PM> Install-Package Aspose.GIS

如何在 C# 中将 Shapefile 转换为 SVG

我们可以按照以下步骤使用 Aspose.GIS for .NET 轻松地将 shapefile 转换为 SVG:

  1. 初始化地图。
  2. 将 Wgs84 空间参考分配给地图。
  3. 打开一个 shapefile 作为矢量图层。
  4. 将 shapefile 图层添加到地图。
  5. 将地图渲染为 SVG 格式。

现在,让我们看看如何将这些步骤转换为 C# 代码并将 shapefile 文件转换为 SVG 格式。

在 C# 中将 ShapeFile 渲染为 SVG

请按照以下步骤将 shapefile 渲染为 SVG:

  1. 首先,创建 Map 类的实例。
  2. 接下来,将 SpatialReferenceSystem 设置为 Wgs84。
  3. 然后,使用 SimpleLine 类定义一个简单的线符号。
  4. 同时,使用 VectorLayer.Open() 方法加载 shapefile。
  5. 之后,使用 Map.Add() 方法将 shapefile 图层添加到地图。
  6. 最后,调用 Map.Render() 方法保存为 SVG。它将输出 SVG 文件路径和 Renderers.Svg 作为参数。

以下代码示例展示了如何使用 C# 将 shapefile 转换为 SVG。

// 此代码示例演示如何将 shapefile 转换为 SVG。
// 文件目录
string dataDir = "C:\\Files\\GIS\\";

// 初始化地图
var map = new Map(800, 400);

// 使用指定的 SRS
map.SpatialReferenceSystem = SpatialReferenceSystem.Wgs84;

// 使用指定样式绘制线条
// 我们还有点、线和曲面的样式。
var symbolizer = new SimpleLine() 
{ 
    Width = Measurement.Pixels(2) 
};

// 将 shapefile 作为图层打开
var shapefileLayer = VectorLayer.Open(dataDir + "buildings.shp", Drivers.Shapefile);

// 将 shapefile 图层添加到地图
map.Add(shapefileLayer, symbolizer);

// 将地图渲染为 Svg 格式
map.Render(dataDir + "buildings_out.svg", Renderers.Svg);

获得免费许可证

您可以 获得免费的临时许可证 试用该库而不受评估限制。

结论

在本文中,我们学习了如何在 C# 中将 shapefile 转换为 SVG。我们还看到了如何以编程方式定义地图和加载 shapefile。此外,您可以探索如何使用其他几种 GIS 文件格式,并使用 文档 了解有关 API 的更多信息。如有任何歧义,请随时在我们的 免费支持论坛 上与我们联系。

也可以看看