在c#中如何将多个点位(Point)转换为多边形(Polygon)并装换为shp图层

本文主要是介绍在c#中如何将多个点位(Point)转换为多边形(Polygon)并装换为shp图层,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

👻如图,我现在有一组经纬度点位Point,接下来我们将他装换为多边形Polygon格式

👻使用QGIS => 图层 => 添加图层 => 添加分隔文本图层 => 打开这个csv点位文件

👻打开后如左下图,csv文件中的四个点位都显示在地图中,我们现在要做的就是,如何在c#中使用代码,像右下图一样,把这四个点位连接起来。

👻 操作之前我们需要安装一个nuget包 NetTopologySuite

NetTopologySuite是一个.NET库,它提供了一系列的类和方法来处理地理空间数据。这个库主要用于处理和操作地理空间数据,包括点、线、多边形等几何图形的创建、查询、分析和转换等操作。它实现了开放地理空间联盟(OGC)的简单特性访问规范,并提供了对地理空间数据库的支持。

👻安装完成之后

  1. 创建一个长度为5的坐标数组coordinates,并初始化它。每个坐标都是一个Coordinate对象,包含经度和纬度两个属性。

  2. 使用这个坐标数组创建一个LinearRing对象。线性环是一个封闭的线性几何对象,它的首尾坐标点是相同的,这里的线性环就是多边形的边界。

  3. 使用这个线性环创建一个Polygon对象。多边形是一个封闭的二维几何对象,由一个外部线性环和零个或多个内部线性环(代表洞)组成。这里创建的多边形只有一个外部线性环,没有内部线性环。

👻在下面代码中,我直接将csv中的四个点位,放到数组中,但是可以看见我往数组中放的却是5组点位,这是因为在创建一个多边形或线性环时,需要确保形状是封闭的。也就是说,开始的点和结束的点必须是同一个点。在这个例子中,第一条坐标和第五条坐标是相同的,这样就形成了一个封闭的多边形。

using NetTopologySuite.Geometries;class MyClass
{public static void Main(string[] args){Coordinate[] coordinates = new Coordinate[5]{new Coordinate(119.0156902,32.08318989),new Coordinate(119.016566,32.08127968),new Coordinate(119.0150461,	32.0807794),new Coordinate(119.0141703,32.08268962),new Coordinate(119.0156902,32.08318989),};// 创建一个线性环LinearRing ring = new LinearRing(coordinates);//创建一个多边形Polygon polygon = new Polygon(ring);Console.WriteLine(polygon.ToString());}
}

👻运行程序后我们将一个Polygon对象打印在控制台

POLYGON ((119.0156902 32.08318989, 119.016566 32.08127968, 119.0150461 32.0807794, 119.0141703 32.08268962, 119.0156902 32.08318989))

👻将这条字符串像刚刚的point一样放到csv文件中

👻然后一样的步骤使用QGIS打开,但是几何图形定义的时候要选择几何图形字段为polygon

👻我们一开始的四个点位已经成为一个面了,接下来我们将它保存为shp

👻在图层中右键这个面 => 导出 => 要素另存为 格式选择ESRI Shapefile

👻点击ok,目录下就有这个面的矢量文件了,点转面转矢量的工作就完成了

这篇关于在c#中如何将多个点位(Point)转换为多边形(Polygon)并装换为shp图层的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/395134

相关文章

Kotlin Map映射转换问题小结

《KotlinMap映射转换问题小结》文章介绍了Kotlin集合转换的多种方法,包括map(一对一转换)、mapIndexed(带索引)、mapNotNull(过滤null)、mapKeys/map... 目录Kotlin 集合转换:map、mapIndexed、mapNotNull、mapKeys、map

JAVA中安装多个JDK的方法

《JAVA中安装多个JDK的方法》文章介绍了在Windows系统上安装多个JDK版本的方法,包括下载、安装路径修改、环境变量配置(JAVA_HOME和Path),并说明如何通过调整JAVA_HOME在... 首先去oracle官网下载好两个版本不同的jdk(需要登录Oracle账号,没有可以免费注册)下载完

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

C#读写文本文件的多种方式详解

《C#读写文本文件的多种方式详解》这篇文章主要为大家详细介绍了C#中各种常用的文件读写方式,包括文本文件,二进制文件、CSV文件、JSON文件等,有需要的小伙伴可以参考一下... 目录一、文本文件读写1. 使用 File 类的静态方法2. 使用 StreamReader 和 StreamWriter二、二进

C#中Guid类使用小结

《C#中Guid类使用小结》本文主要介绍了C#中Guid类用于生成和操作128位的唯一标识符,用于数据库主键及分布式系统,支持通过NewGuid、Parse等方法生成,感兴趣的可以了解一下... 目录前言一、什么是 Guid二、生成 Guid1. 使用 Guid.NewGuid() 方法2. 从字符串创建

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

java Long 与long之间的转换流程

《javaLong与long之间的转换流程》Long类提供了一些方法,用于在long和其他数据类型(如String)之间进行转换,本文将详细介绍如何在Java中实现Long和long之间的转换,感... 目录概述流程步骤1:将long转换为Long对象步骤2:将Longhttp://www.cppcns.c