地理数据表达方式学习——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++)

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

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

相关文章

AMRT 3D 数字孪生引擎(轻量化图形引擎、GIS/BIM/3D融合引擎):智慧城市、智慧工厂、智慧建筑、智慧校园。。。

AMRT3D 一、概述 1、提供强大完整的工具链 AMRT3D包含开发引擎、资源管理、场景编辑、UI搭建、项目预览和发布等项目开发所需的全套功能,并整合了动画路径、精准测量、动态天气、视角切换和动画特效等工具。 2、轻量化技术应用与个性化定制 AMRT3D适用于快速开…

体验函数式组件简单实现Loading 加载(造轮子篇)

一、前言 最近想着优化一下网站,在文章列表页加一个Loading操作,于是就想到了函数式组件,于是本章就来和大家一起简单探讨下实现思路。 二、Loading设计 这里我想实现的效果是:当我们刷新页面的时候,前端请求接口&…

Python爬虫之Scrapy框架系列(24)——分布式爬虫scrapy_redis完整实战【XXTop250完整爬取】

目录: 每篇前言:1.使用分布式爬取豆瓣电影信息(1)settings.py文件中的配置:(2)spider文件的更改:(3)items.py文件(两个项目一致!&…

Vue el-table 合并单元格

一般常见的就是下图这种的单列&#xff0c;上下重复进行合并。 有时候可能也会需要多行多列的合并。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content&qu…

3.19网络编程

select实现的TCP并发服务器 #include <myhead.h> #define SER_IP "192.168.141.134" #define SER_PORT 8888 int main(int argc, const char *argv[]) {// 1、创建一个套接字int sfd -1;sfd socket(AF_INET, SOCK_STREAM, 0);if (sfd -1){perr…

Division by Invariant Integers using Multiplication

在处理器中&#xff0c;整数除法的成本通常是整数乘法的几倍&#xff1a; 流水线式的组合乘法器通常在不到10个周期内完成操作&#xff1b;而对于整数除法则没有硬件支持&#xff0c;或者使用的迭代除法器比乘法器慢几倍。 表 1.1 比较了一些处理器上乘法和除法的时间。这张表…

php 页面中下载文件|图片

一、需求 页面中点击下载图片 二、实现 protected function pageLoad(){$filePath $_GET[file];$host $_SERVER[HTTP_HOST];$file http://.$host.$filePath;$fileName basename($filePath);$content file_get_contents($file);ob_clean();$suffixArr explode(., $file…

数据库系统概论-练手题集合【期末复习|考研复习】

前言 总结整理不易&#xff0c;希望大家点赞收藏。 给大家整理了一下数据库系统概论中的练手题&#xff0c;以供大家期末复习和考研复习的时候使用。 数据库系统概论系列文章传送门&#xff1a; 第一章 绪论 第二/三章 关系数据库和标准语言SQL 第四/五章 数据库安全性和完整性…

服务器硬件基础知识和云服务器的选购技巧

概述 服务器硬件基础知识涵盖了构成服务器的关键硬件组件和技术&#xff0c;这些组件和技术对于服务器的性能、稳定性和可用性起着至关重要的作用。其中包括中央处理器&#xff08;CPU&#xff09;作为服务器的计算引擎&#xff0c;内存&#xff08;RAM&#xff09;用于数据临…

zookeeper快速入门(合集)

zookeeper作为一个分布式协调框架&#xff0c;它的创建就是为了方便或者简化分布式应用的开发。除了服务注册与发现之外&#xff0c;它还能够提供更多的功能&#xff0c;但是对于入门来说&#xff0c;看这一篇就够了。后续会讲zookeeper的架构设计与原理&#xff0c;比如zookee…

【学习】软件测试中的二八定理是什么?如何提高测试的效率和质量

软件测试领域的二八定理&#xff0c;是指在软件测试过程中&#xff0c;通常只有20%的测试用例能够发现软件中80%的错误。这一现象表明&#xff0c;软件测试的效率和效果并不成正比&#xff0c;测试用例的数量并不等于发现错误的能力。因此&#xff0c;在软件测试过程中&#xf…

<Linux> 生产者消费者模型

目录 前言&#xff1a; 一、什么是生产者消费者模型 &#xff08;一&#xff09;概念 &#xff08;二&#xff09;生产者消费者之间的关系 &#xff08;三&#xff09;生产者消费者模型特点 &#xff08;四&#xff09;生产者消费者模型的优点 二、基于阻塞队列实现生产…

前端标准 JsDoc 代码片段注释 ( 快速生成代码片段网站 )

{ "快速单行注释": {"prefix": "z","body": [" /**"," * $1"," * param { }"," * return { }"," */"],"description": "快速注释" } } 配置之后…

嵌入式科普(12)西门子PROFINET ERTECH 200P-3路演

目录 一、路演观后感/总结 二、分享两个公众号 2.1 HMS工业网络 2.2 Omdia 三、ERTECH 200P-3资料 四、ERTECH 200P-3路演分享 嵌入式科普(12)西门子PROFINET ERTECH 200P-3路演 一、路演观后感/总结 老罗砸西门子冰箱时候的傲慢 -> 路演的谦逊 国外工程师包吃住差旅…

Linux(openEuler)部署SpringBoot前后端分离项目(Nginx负载均衡)

假如数据库在本地&#xff0c;没有放在Linux中 1.先把数据库中root的主机改成% 2.项目中的数据库链接配置换成本机ip 3.打包 4.把打包好的jar包放到Linux中 一般把jar包放到opt下 5.把前端部分拷贝到Linux的nginx中 5.1在package.json中修改build的值为图中这样 5.2同时由于在…

动态规划(算法竞赛、蓝桥杯)--单调队列优化修建草坪

1、B站视频链接&#xff1a;E44 单调队列优化DP 修剪草坪_哔哩哔哩_bilibili #include <bits/stdc.h> using namespace std; typedef long long LL; const int N1e510; int n,k,q[N]; LL w[N],f[N],sum;int main(){cin>>n>>k; k; //for(int i1;i<n;i){ci…

Vue多文件学习项目综合案例——小兔鲜,黑马vue教程

文章目录 一、项目截图二、主要知识点三、Main.js四、App.vue五、componentsXtxBanner.vueXtxFooter.vueXtxHeaderNav.vueXtxHotBrand.vueXtxNewGoods.vueXtxShortCut.vueXtxTopic.vue 六、stylesbase.csscommon.css 一、项目截图 二、主要知识点 把静态页面拆分成一个个vue组…

数据库简介与MySQL编译安装

1数据库基础 什么是数据库 数据库&#xff08;Database&#xff09;是一个有组织的数据存储系统&#xff0c;用于有效地存储、检索、管理和维护数据。数据库系统允许用户以结构化的方式存储和操作大量数据&#xff0c;并提供了一种可靠的方法来管理和维护这些数据&#xff0c…

数据库的基本概念与安装MySQL

一、数据库的基本概念 1、什么是数据&#xff1f; 描述事物的符合记录包括数字、文字、图形、图像、声音、档案记录等以“记录”形式按统一的格式进行存储 2、什么是表&#xff1f; 将不同的记录组织在一起用来存储具体数据 3、什么是数据库 表的集合&#xff0c;是存储数…

2023年中国电商市场研究报告

研究范畴界定为中国国内2C电商市场 ⚠️ 关键点&#xff1a; 流量红利减少&#xff0c;电商市场进入存量增量 竞争的发展阶段&#xff1b;新兴电商平台不断挑战现有头部电商平台行业地位&#xff1b;消费者更加趋于理性&#xff0c;更加关注低价和服务&#xff1b;市场趋势&…