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

news2024/11/18 13:28:31

一、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++)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

20240313-1-链表linklist

linklist 链表也是面试中常问道的题目,链表定义简单很容易考察面试者的水平,比如在数组中很简单的题目转换成链表就有很大的变动。例如链表的插入和归并排序、查找倒数第k个节点等. 1.回文链表(234) 请判断一个链表是否为回文链…

怎么看一手伦敦银多少钱?

做伦敦银投资的朋友需要搞清楚“一手伦敦银多少钱”的问题,这也是伦敦银交易的基础问题。为什么需要搞清楚这个基础问题呢?有些基础问题我们不需要搞懂,但是关于一手伦敦银多少钱却需要搞清楚,因为这决定了投资者的资金利用率。 关…

智慧城市与数字经济:共创城市新价值

随着科技的快速发展,智慧城市与数字经济已成为推动城市现代化进程的重要引擎。它们不仅提升了城市治理的效率和公共服务水平,还为城市经济发展注入了新的活力。本文旨在探讨智慧城市与数字经济如何共同创造城市新价值,并分析其面临的挑战与发…

OSPF协议全面学习笔记

作者:BSXY_19计科_陈永跃 BSXY_信息学院 注:未经允许禁止转发任何内容 OSPF协议全面学习笔记 1、OSPF基础2、DR与BDR3、OSPF多区域4、虚链路Vlink5、OSPF报文6、LSA结构1、一类/二类LSA(Router-LSA/Network-LSA) 更新完善中... 1、…

做一个个人网站分几步?第一步,找个简单的模板借鉴(抄)一下

做一个个人博客第一步该怎么做? 好多零基础的同学们不知道怎么迈出第一步。 那么,就找一个现成的模板学一学呗,毕竟我们是高贵的Ctrl c v 工程师。 但是这样也有个问题,那就是,那些模板都,太!…

Linux运维相关基础知识

linux 开机流程 shell(bash / dash) 终端仿真器/终端仿真程序 虚拟控制台tty1(桌面环境 gnome等) | tty2 | tty3 … Linux kernel <LVM> 分区&#xff08;分区表&#xff0c;GPT等&#xff09; 物理磁盘 Linux系统拥有很高的灵活性和自由度&#xff0c;系统启动后首先进…

分布式(计算机算法)

目录 分布式计算 分布式​编辑 分布式和集群 分布式和集群的应用场景 分布式应用场景 集群应用场景 哪种技术更优、更快、更好呢 性能 稳定性 以下概念来源于百度百科 分布式计算 分布式计算是近年提出的一种新的计算方式。所谓分布式计算就是在两个或多个软件互相共享信息…

【ArcGISProSDK】添加异步执行时进度窗口

运行结果 代码 protected override async Task InitializeAsync(){using (ProgressorSource progressorSource new ProgressorSource("初始化...")){await QueuedTask.Run(delegate{MessageBox.Show(licenseExpirationDate.ToString());}, progressorSource.Progres…

jvm调优实战操作

1.什么是jvm jvm就是lava虚拟机&#xff0c;他是java运行环境的一部分&#xff0c;它虚构出来的一台计算机&#xff0c;在通过在实际的计算机上仿真模拟各种计算机功能来实现Java应用程序&#xff0c;有JVM从软件层面屏蔽了底层硬件、指令层面的细节让他兼容各种系统 2.我们调…

代码随想录算法训练营第14天 part01 | 二叉树理论基础篇

代码随想录 二叉树理论基础篇 二叉树的种类 二叉树有两种主要的形式&#xff1a;满二叉树和完全二叉树 满二叉树&#xff1a;如果一棵二叉树只有度为0的结点和度为2的结点&#xff0c;并且度为0的结点在同一层上&#xff0c;则这棵二叉树为满二叉树。 这棵二叉树为满二叉树…

最新WooCommerce教程指南-如何搭建B2C外贸独立站

WooCommerce是全球最受欢迎的开源电子商务平台之一。它基于WordPress建站&#xff0c;只需一键安装即可使用。该平台提供了丰富的功能&#xff0c;包括产品发布、库存管理、支付网关和运输发货等&#xff0c;可以帮助搭建各种类型的电子商务网站。相比其他竞争对手&#xff0c;…

【数字孪生】Nginx发布数字孪生三维建模模型服务及调用方法

【数字孪生】Nginx发布数字孪生三维建模模型服务及调用方法 一、需求二、实施步骤2.1 准备模型文件2.1.1 3D tiles模型2.1.2 3D Tiles标准文件格式 2.2 配置nginx server块2.2.1 Nginx能干啥 2.3 访问 三、实现效果 一、需求 利用三维渲染引擎Cesium加载3D tiles模型。 二、实…

AI实景无人自动直播间怎么搭建?三步教你轻松使用

最近很多朋友看到AI自动直播带货玩法&#xff0c;也想开启自己的自动直播间&#xff0c;但还是有些问题比较担心&#xff0c;这种自动讲解、自动回复做带货的直播间是不是很麻烦&#xff1f; 实景无人自动直播 ​ 实际上这种直播间搭建相当简单便捷&#xff01;今天跟着笔者&…

802.11 OFDM数据包结构

各层数据单元 首先&#xff0c;来了解一下传输过程中的数据单元&#xff1a; 图1 数据单元解释 也就是说PSDU包含了MAC层要发送的数据&#xff0c;在物理层根据PLCP协议将PSDU加上PLCP前导码和报头后变为PPDU&#xff0c;在物理媒介上传输&#xff0c;从发射端传到接收端。那么…

[薅羊毛]通义灵码做活动,送挺多礼品,快来薅羊毛!!!

你的编辑器装上智能ai编辑了吗&#xff0c;的确挺好用的。 最近阿里云AI编码搞活动&#xff0c;可以免费体验并且还可以抽盲盒。有日历、马克杯、代金券、等等其他数码产品。 大多数都是日历。 点击链接参与「通义灵码 体验 AI 编码&#xff0c;开 AI 盲盒」 https://develope…

爬虫神器!使用Python一键下载网页图片,省时高效!

引言 爬虫技术在当今信息时代中扮演着重要的角色&#xff0c;可以自动化获取互联网上的数据。本教程将围绕你提供的Python爬虫代码展开&#xff0c;旨在实现自动下载图片的功能。通过这个示例&#xff0c;你将学习如何利用爬虫技术批量获取网页中的图片&#xff0c;并将其保存…

redis瘦身版

线程模型 纯内存操作/非阻塞io多路复用/单线程避免多线程频繁上下文切换 基于Reactor模式开发了网络事件处理器&#xff1a;文件事件处理器&#xff0c;单线程的 io多路监听多个socket&#xff0c;据socket事件类型选择对应的处理器&#xff0c;高性能网络通信模型&#xff0c…

PMP能两周快速通过吗?

两周时间有点赶&#xff0c;一般备考要2个月左右&#xff0c;有时间尽量多准备准备。 分享一篇左羊学霸的备考总结&#xff0c;希望能帮你 前言 作为⼀名通过PMP项⽬管理认证并且拿到3A成绩 ( PMP认证最好成绩) 的 学习者&#xff0c; 来跟⼤家分享下我考取PMP证书的动机与过程…

Matplotlib数据可视化实战-1数据可视化Matplotlib基础

1.1绘图的一般过程&#xff1a; 1.导入相关库 2.生成、读入或计算得到数据&#xff1b; 3.根据需要绘制折线图、散点图、柱状图、饼状图、雷达图、箱线图、三维曲线/曲面以及极坐标系图形&#xff1b; 4.根据需要设置图形属性&#xff1b; 5.显示或保存绘图结果。 例如&…

【STL源码剖析】【2、空间配置器——allocator】

文章目录 1、什么是空间配置器&#xff1f;1.1设计一个简单的空间配置器&#xff0c;JJ::allocator 2、具备次配置力( sub-allocation)的 SGI 空间配置器2.1 什么是次配置力2.2 SGI标准的空间配置器&#xff0c;std::allocator2.2 SGI特殊的空间配置器&#xff0c;std::alloc2.…