在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,目录下就有这个面的矢量文件了,点转面转矢量的工作就完成了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/160274.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【uniapp】Google Maps

话不多说 直接上干货 提前申请谷歌地图账号一、新建地图 使用h5获取当前定位或者使用三方uniapp插件 var coords ""navigator.geolocation.getCurrentPosition(function(position) {coords {lat: position.coords.latitude,lng: position.coords.longitude};lats …

Linux入门(三)

Linux grep 命令 1: 作用 ​ grep是一种文本搜索工具,它能使用特定的搜索模式,包括[正则表达式]搜索文本,并默认输出匹配行。 ​ windows类似的命令是findstr. 2:语法 grep -options(参数)…

【OpenAI开发者大会,全新大模型它来了,价格大跌...】

继今年春天发布 GPT-4 之后,OpenAI 又创造了一个不眠夜。 过去一年,ChatGPT 绝对是整个科技领域最热的词汇。 北京时间 11 月 7 日凌晨 02:00,OpenAI 的首次 DevDay 开发者日活动正式开始。Keynote 主论坛环节由 Sam Altman 主讲并在油管现…

[HTML]Web前端开发技术1,meta,HBuilder等——喵喵画网页

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…

可视化的mysql慢日志平台,帮助数据库管理员(DBA)和开发者更好地管理和监控 MySQL 数据库的慢查询日志

慢日志查询 慢日志查询通常指的是在数据库管理中,用于识别和记录执行时间超过预设阈值的数据库查询操作的功能。这种功能在数据库如MySQL、PostgreSQL、MongoDB等中广泛存在,旨在帮助开发人员和数据库管理员找出可能影响数据库性能的低效查询&#xff0…

提升提测质量之研测共建 | 京东云技术团队

一、序 日常研测工作演绎 你是否也有同样的困惑? 跟进的需求,就在提测前一秒,被告知不能如期提测了,研测计划被打乱; 提测的功能,犹如遇到不好的购物体验,缺斤短两,与prd预期不符…

wpf devexpress 添加GanttControl到项目

这个教程示范如何添加GanttControl 到你的项目使用内置GanttControl数据类。 要求 添加 Devexpress.Wpf.Gantt Nuget包到你的项目使用GanttControl. 数据模型 GanttControl携带和内置数据对象,可以使用创建视图模型: GanttTask 呈现甘特图任务 Gan…

web服务器练习---配置nginx三种虚拟主机

在做实验之前,大家先安装nginx服务,有两种安装方法: 1、rpm包安装(安装过程简单,适用于学习阶段,方便测试) 2、源码安装(安装过程较为复杂,适用于生产环境)…

三十分钟学会Hive

Hive的概念与运用 Hive 是一个构建在Hadoop 之上的数据分析工具(Hive 没有存储数据的能力,只有使用数据的能力),底层由 HDFS 来提供数据存储,可以将结构化的数据文件映射为一张数据库表,并且提供类似 SQL …

设计模式--模板方法外观模式

模板方法模式 场景:需使用代码方式实现,考完试后,将各个学生的试卷及答案誊抄一份。 假如有两个学生的试卷誊抄完毕. // 学生A public class TestPaperA {// 试题1public void testQuestion1() {System.out.println("问题一:XXXXXXXX…

一文搞懂RC滤波器的设计?

滤波器是一种可以对“波”进行过滤的器件,一般是特定频率的信号。所以可以常常看到滤波器的种类繁多,有高通滤波器,低通滤波器,带通滤波器及带阻滤波器等等。 滤波器的主要作用就是滤波,它需要尽可能的让有用信号能够做…

九. Linux网络命令

网络命令write 网络命令wall 网络命令ping 首先,ping程序会向域名服务器(DNS)发送请求,解析域名www.baidu.com的IP地址。DNS返回域名的一个别名www.a.shifen.com以及对应的IP地址183.2.172.185。之后ping程序开始向这个地址发送请求报文,每1s…

大模型重塑软件设计,南京真我加入飞桨技术伙伴,大模型生态圈成员又添一员!...

为帮助伙伴更快、更好的应用大模型技术,飞桨技术伙伴体系及权益基于星河共创计划全面升级,通过丰富的场景、技术、算力、品牌等资源,为伙伴企业提供一站式的大模型资源对接,全面降低创建AI原生应用的门槛。 近日,南京真…

C 语言字符串

C 语言字符串 在本教程中,您将学习C语言编程中的字符串。您将在示例的帮助下学习声明它们,对其进行初始化以及将它们用于各种 I / O(输入/输出)操作。 在C语言编程中,字符串是以null字符\0结束的字符序列。例如: ch…

电子学会2023年06月青少年软件编程(图形化)等级考试试卷(一级)真题,含答案解析

青少年软件编程(图形化)等级考试试卷(一级) 一、单选题(共25题,共50分) 1. 看图找规律,请问下图红框中是?( ) A.

京东数据采集与挖掘(京东大数据):2023年10月京东冰箱品牌销售排行榜

鲸参谋监测的京东平台10月份冰箱市场销售数据已出炉! 10月份,冰箱市场的销售额有小幅上涨。鲸参谋数据显示,在京东平台上,今年10月冰箱市场的销量为94万,销售额将近23亿,同比增长超过1%。从价格上看&#x…

Flume学习笔记(1)—— Flume入门

Flume 概述 Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统 Flume 基于流式架构,灵活简单 Flume最主要的作用就是,实时读取服务器本地磁盘的数据,将数据写入到HDFS 基础架…

4.3每日一题(知全微分求函数本身)

公式 1、先通过公式:dx前系数对y求偏导、dy前面的系数对x求偏导,求出 f(x)的表达式;对x求不定积分,再通过 f(0)0求出常数C,即可求出 f(x) 2、把F(x)的全微分列出来,dx、dy前面的表达式分别为F(x)偏x、y的…

数据库编程sqlite3库安装及使用

数据库编程 数据库的概念 数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。 数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是…

在python中os.chdir()的含义以及用法

文章目录 一、os.chdir() 是什么?二、用法注意 一、os.chdir() 是什么? 在Python中,os.chdir() 是 “change directory” 的缩写,意思是改变当前工作目录。这个函数是Python的 os 模块的一部分,允许你更改程序的工作目…