地理数据表达方式学习——KML与SHP

一、KML-Keyhole Markup Language

        Keyhole Markup Language (KML)是一种XML符号,用于浏览器中二维地图和三维地球的地理注释和地理可视化(地理数据包括点、线、面、多边形、多面体以及模型等)。KML是伴随着Google Earth的使用而开发的,Google Earth是第一个能够查看和图形化编辑KML文件的程序。KML于2008年成为开放地理空间联盟的国际标准,其逐渐成为很多GIS相关企业进行地理数据交换的格式[1]。

图一 KML格式样例展示

二、SHP-Shapefile

        ESRI Shapefile(shp),或简称shapefile,是美国环境系统研究所(ESRI)开发的空间数据开放格式,是能够在ESRI与其他公司的产品之间进行数据互操作的交换格式。目前,该文件格式已经成为了地理信息软件界的开放标准。Shapefile属于一种矢量图形格式,它能够保存几何图形的位置及相关属性,但没法存储地理数据的拓扑信息[2]。

        Shapefile文件指的是一种文件存储的方法,实际上该种文件格式是由多个文件组成的。其中,要组成一个Shapefile,有三个文件是必不可少的,它们分别是".shp", ".shx"与 ".dbf"文件(表示同一数据的一组文件其文件名前缀应该相同)。除了这三个必须的文件以外,还有八个可选的文件,使用它们可以增强空间数据的表达能力。值得注意的是,Shapefile的所有文件都必须位于同一个目录之中[2]。

图二 Shapefile的文件组成(图源wikipedia)

        Shapefile图形格式(.shp)是Shapefile的主文件,其包含了地理参照数据。该文件由一个定长的文件头和一个或若干个变长的记录数据组成。每一条变长数据记录包含一个记录头和一些记录内容。主文件头包含17个字段,共100个字节,其中包含九个4字节(32位有符号整数,int32)整数字段,紧接着是八个8字节(双精度浮点数)有符号浮点数字段[2]。

图三 .shp文件的组成结构(图源wikipedia)
图四 .shp文件的图形类型编号表(图源wikipedia)

二、三维线矢量数据结构分析

        本实验基于ArcGIS软件(ArcScene)对三维线矢量数据结构进行了查看并尝试基于GeoPandas库进行三维线矢量的模拟生成且利用CloudCompare开源软件进行模拟三维线矢量数据可视化,其旨在探索三维线矢量生成方法并针对三维线矢量进行结构分析。

(一)获取三维曲线矢量数据并可视化

图五 三维曲线矢量数据ArcScene可视化图

(二)查询三维曲线矢量数据的数据结构表达

        由图六及图四图形类型表可知,该三维曲线矢量数据的几何图形类型为LINESTRING Z,其存储序列为位于计算曲线上的多个XYZ三维点坐标。熟悉GIS矢量数据结构的学者都应该知道,线是由点构成的,其在数据结构上表现的就是一连串有序排列的点[4]。

图六 三维曲线矢量数据的数据结构查阅

(三)基于GeoPandas生成模拟曲线数据的矢量化文件

        详细代码详见参考资料[4],此处仅作为简单实验以验证操作可行性。

import geopandas
import numpy as np
from shapely.geometry import LineString

# 制造模拟直线数据
LineDataX = np.array([i*3 for i in range(10)])
LineDataY = np.array([i*3 for i in range(10)])
LineDataZ = np.array([i*3 for i in range(10)])
LineDataXYZ = np.vstack((np.vstack((LineDataX,LineDataY)),LineDataZ)).T
# 创建并保存三维直线矢量数据
# 无论矢量线条的数量为多少,均需要将每一条LINESTRING Z存于一个列表之中
line = [LineString(LineDataXYZ)]
geoDataFrame = geopandas.GeoDataFrame(geometry = line)
geoDataFrame.to_file("test.shp")

(四)实验结果展示

图七 shpfile文件生成结果
图八 模拟数据直线矢量化结果可视化

参考资料:

[1] https://en.wikipedia.org/wiki/Keyhole_Markup_Language

[2] https://en.wikipedia.org/wiki/Shapefile

[3] CloudCompare - home

[4] 强大的GeoPandas,几行代码实现点转线功能_geopandas存储为geojson-CSDN博客

[5] 三维空间点的直线方程拟合(最小二乘法)_三维空间拟合直线方程ppt-CSDN博客

参考工具库:

/*1*/ User guide — GeoPandas 0+untagged.50.g5558c35.dirty documentation

/*2*/ pyshp · PyPI

/*3*/ shapely · PyPI

/*4*/ API — GDAL documentation

/*5*/ The Computational Geometry Algorithms Library(The Computational Geometry Algorithms Library,C++)

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

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

相关文章

ROS机器人入门第一课:ROS快速体验——python实现HelloWorld

文章目录 ROS机器人入门第一课:ROS快速体验——python实现HelloWorld一、HelloWorld实现简介(一)创建工作空间并初始化(二)进入 src 创建 ros 包并添加依赖 二、HelloWorld(Python版)(二)进入 r…

Doris实战——工商信息查询平台的湖仓一体建设

目录 前言 一、架构1.0:传统Lambda架构 二、OLAP引擎调研 三、架构2.0:数据服务层All in Apache Doris 四、架构 3.0:基于Doris Multi-Catalog的湖仓一体架构 五、实践经验 5.1 引入Merge-on-Write,百亿级单表查询提速近三…

好用的客服快捷回复软件推荐

在当今快节奏的商业环境中,客户服务的效率和质量已经成为企业成功的关键因素之一。对于客服工作人员来说,面对海量的客户咨询和问题解答,如何快速而准确地回复,成为了他们日常工作中的一大挑战。选择一款好用的快捷回复工具是非常…

如何做人才运营战略?

招聘人才和人才获取是同义词,但它们并不相同。招聘是大多数雇主的短期解决方案,而人才获取是一个长期解决方案。 企业要想改善企业文化朝着统一的愿景努力,就需要关注长期规划。 人才获取vs人才招聘 招聘是为了填补空缺,人才获取…

“人工智能+”平台能力,如何助力企业打造新质生产力?

导读:打造新质生产力,为什么离不开强大的数智平台? 2024年开年,新质生产力成为经济领域的第一热词。 提到新质生产力,很多人会想到以人工智能为代表的科技创新。2024年政府工作报告提出:要“深化大数据、人…

C# 异常捕获

文章目录 C# 异常捕获捕获异常运行效果 自定义异常运行结果 抛出异常 C# 异常捕获 捕获异常 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace ConsoleApp2 {class Test{int result;Test(){r…

力扣Lc20--- 202.快乐数(java版)-2024年3月20日

1.题目 2.知识点 (1)while (seen.contains(n) false) { // 循环体 } 与 !seen.contains(n) 等同 (2) 当传入数字 19 给 isHappy(19) 方法时,下面是每一行代码的执行过程: 初始化一个空的 HashSet&#…

元宇宙:数字化世界的下一个时代

元宇宙(Metaverse)概念是一个3D平台,作为用户可以参与不断成熟的虚拟世界,元宇宙应该被视为互联网发展的延续,以用户为中心。因为在这个三维虚拟平台上,我们都可以结识其他人、玩游戏、购物或工作。设想一个…

栈和队列的学习

存储方式分两类:顺序存储和链式存储 栈:只允许从一端进行数据插入和删除的线性表:先进后出 FILO 队列:只允许从一端进行数据插入,另一端进行数据删除的线性表:先进先出 FIFO 栈 创建空栈,创建…

【漏洞复现】WordPress Plugin NotificationX 存在sql注入CVE-2024-1698

漏洞描述 WordPress和WordPress plugin都是WordPress基金会的产品。WordPress是一套使用PHP语言开发的博客平台。该平台支持在PHP和MySQL的服务器上架设个人博客网站。WordPress plugin是一个应用插件。 WordPress Plugin NotificationX 存在安全漏洞,该漏洞源于对用户提供的…

【skimage包如何安装】

【skimage包如何安装】 直接安装pip install scikit-image,而不是安装pip install skimage pip install scikit-image

【深度学习】基于机器学习的无机钙钛矿材料形成能预测,预测形成能,神经网络,回归问题

文章目录 任务分析数据处理处理离散数值处理缺失值处理不同范围的数据其他注意事项 我们的数据处理模型训练网页web代码、指导 任务分析 简单来说,就是一行就是一个样本,要用绿色的9个数值,预测出红色的那1个数值。 数据处理 在进行深度数…

从IO操作与多线程的思考到Redis-6.0

IO操作->线程阻塞->释放CPU资源->多线程技术提升CPU利用率 在没有涉及磁盘操作和网络请求的程序中,通常不会出现线程等待状态。线程等待状态通常是由于线程需要等待某些事件的发生,比如I/O操作完成、网络请求返回等。如果程序只是进行计算或者简…

低代码开发平台开源:依靠科技力量实现数字化转型!

在竞争激烈的当今社会,数字化转型、流程化办公等字眼早已充斥在我们的职场生活中。虽然如此,但是我们依然要面临着这样一个现实问题:很多中小企业发展面临着资源有限、技术储备不足、人才短缺的现实问题,进入流程化办公困境依然明…

JSP基础知识

前言:开发需要,有一个老项目,使用的是前后端不分离的框架,前端使用的JSP开发,于是需要恶补JSP的基础知识和语法。以下是学习过程总结的一些有用的基础知识。 推荐学习: JSP 语法 | 菜鸟教程 简介 Jsp是一…

Mybatis总结(持续补充),kafka和mq的区别面试

配置环境:需要引入Mybatis的一个jar包 然后写一个mybatis-config.xml的配置文件里面写着mybatis的核心配置文件,例如:连接的哪个数据库,资源文件的注册(Mapper.xml等) 书写一个MybatsiUtils工具类封装一个…

Monoxer Programming Contest 2024(AtCoder Beginner Contest 345)(A,B,C,D,E,F)

比赛链接 这场。。。好像已经是一周之前的比赛来着,终于补完了。 C是个披着字符串外衣的数学容斥题。D是个超级超级暴力的爆搜,写起来超级麻烦,感觉。。。真是一次酣畅淋漓的赤石。E是个DP,朴素想法其实比较直观,不过…

自媒体用ChatGPT批量洗稿软件V5.9环境配置/软件设置教程【汇总】

大家好,我是淘小白~ 首先,感谢大家的支持~~ ChatGPT采集洗稿软件V5.9版本更新,此次版本更新修改增加了一些内容: 1、自定义多条指令,软件自动判断指令条数,进行输入 2、增加谷歌浏览多账号轮询&#xf…

了解Kafka位移自动提交的秘密:避免常见陷阱的方法

欢迎来到我的博客,代码的世界里,每一行都是一个故事 了解Kafka位移自动提交的秘密:避免常见陷阱的方法 前言位移自动提交简介自动提交的优缺点自动提交位移的优点:自动提交位移的缺点:自动提交与手动提交的对比分析&am…

vuex - 21年的笔记 - 后续更新

vuex是什么 Vuex是实现组件全局状态(数据)管理的一种机制,方便的实现组件之间的数据的共享 使用vuex统一管理状态的好处 能够在vuex中集中管理共享的数据,易于开发和后期维护能够高效地实现组件之间的数据共享,提高…