前端地图数据格式标准及应用

前端地图数据格式标准及应用

      • 坐标系EPSG
      • geojson标准格式
      • 基于OGC标准的地图服务
      • shapefile文件
      • 3D模型数据
      • 常见地图框架

坐标系EPSG

EPSG(European Petroleum Survey Group)是一个国际组织,负责维护和管理地理坐标系统和投影系统的标准化编码
EPSG 用于标识不同的地理空间参考系统,包括坐标系统、地理坐标系、投影坐标系等。这些标识符可用于许多应用程序和地理信息系统软件,以确保数据在不同系统之间的正确转换和处理。现在,EPSG已被Open Geospatial Consortium(OGC)承认并管理,成为了一个全球性的标准。
EPSG负责维护全球的坐标系统,虽然EPSG不是一个强制的标准,但是因为有ERSI、Google、Microsoft和W3C等大型公司组织的使用加持,所以对于后面进入行业的GISer和开发者而言,该标准有一定的权威性和方便性。

  1. WGS84(World Geodetic System 1984):是 GPS 全球定位系统建立的坐标系统,通过GPS定位拿到的原始经纬度。EPSG代号为4326 谷歌地图
  2. GCJ-02(国家测量局02号标准):GCJ-02 是由中国国家测绘局(G表示Guojia国家,C表示Cehui测绘,J表示Ju局)制订的地理信息系统的坐标系统,是在WGS84经纬度的基础上执行加密算法而成。因为GPS得到的经纬度直接在 GCJ-02 坐标系下会定位到错误的地点,有种到了火星的感觉,因此在坊间也将 GCJ-02 戏称为火星坐标系。国内的高德腾讯地图就是用的 GCJ-02 坐标系
  3. BD-09(Baidu, BD):是百度地图使用的地理坐标系,其在GCJ-02上多增加了一次变换,用来保护用户隐私。从百度产品中得到的坐标都是BD-09坐标系。

EPSG:4326:WGS84
EPSG:3857:是Web墨卡托投影坐标系
4214:Beijing 1954地理坐标系统
4490:CGCS 2000地理坐标系统
4547:深圳

https://blog.csdn.net/josiecici/article/details/127666605
epsg查询https://epsg.io/map#srs=4326&x=109.775391&y=34.452218&z=6&layer=streets
epsg链接: link

坐标转换案例
1、amap等地图框架自带方法转换
链接: link
2、通过epsg编码互转
使用proj4JS进行坐标转换
链接: link

geojson标准格式

geojson是用json的语法表达和存储地理数据
Point、MultiPoint、LineString、MultiLineString、Polygon、MultiPolygon、GeometryCollection
geojson将所有的地理要素分为Point、MultiPoint、LineString、MultiLineString、Polygon、MultiPolygon、GeometryCollection。首先是将这些要素封装到单个的geometry里,然后作为一个个的Feature(也就是要素);要素放到一个要素集合里,从树状结构来理解FeatureCollection就是根节点,表示为:

点要素Point
点要素是最简单的,类型type对应Point,然后坐标是一个1维的数组,里面有两个元素(如果是立体的坐标就是三维x,y,z),分别为经度和纬度。properties里面可以封装各种属性,例如名称、标识颜色等等。

{"type":"Feature","properties":{},"geometry":{"type":"Point","coordinates":[105.380859375,31.57853542647338]}
}

多点要素MultiPoint

{"type":"Feature","properties":{},"geometry":{"type":"MultiPoint","coordinates":[[105.380859375,31.57853542647338],[105.580859375,31.52853542647338]]}
}

线要素LineString
线要素就是指线段,记录的是线的端点坐标,可视化时会按照记录顺序联结。对于曲线(如贝塞尔曲线)目前还没有很好的表达,但是在地理数据中,曲线一般会用LineString去拟合,现实地理世界中也没有标准的曲线地理要素。
线要素的坐标coordinates里的二维数组和多点要素基本一样,区别就在type上了。

{"type":"Feature","properties":{},"geometry":{"type":"LineString","coordinates":[[105.6005859375,30.65681556429287],[107.95166015624999,31.98944183792288],[109.3798828125,30.031055426540206],[107.7978515625,29.935895213372444]]}
}

MultiLineString
也是一个三维数组(和多边形一样);

{"type":"Feature","properties":{},"geometry":{"type":"MultiLineString","coordinates":[[[105.6005859375,30.65681556429287],[107.95166015624999,31.98944183792288],[109.3798828125,30.031055426540206],[107.7978515625,29.935895213372444]],[[109.3798828125,30.031055426540206],[107.1978515625,31.235895213372444]]]}
}

多边形Polygon
注:单个多边形是一个3维数组,可以包含多个二维数组,这种情况和MultiPolygon效果很像。

{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[106.10595703125,33.33970700424026],[106.32568359375,32.41706632846282],[108.03955078125,32.2313896627376],[108.25927734375,33.15594830078649],[106.10595703125,33.33970700424026]]]}}

案例:
高德加载geojson数据: link

基于OGC标准的地图服务

OGC全称是开放地理空间信息联盟,是一个非盈利的国际标准组织,它制定了数据和服务的一系列标准,GIS厂商按照这个标准定义开放服务接口等
OGC提供的标准有很多种,常用的如:WMS、WMTS、WFS、WCS
常见地图服务_WMS_WFS_WCS_ WMTS

在这里插入图片描述

在这里插入图片描述

WMS服务
Web Map Service (web地图服务,能够根据用户的请求,返回相应的地图,包括PNG、GIF、JPEG等栅格形式,或者SVG或者WEB CGM等矢量形式。
GetCapabitities返回服务级元数据,它是对服务信息内容和要求参数的一种描述;
GetMap返回一个地图影像,其地理空间参考和大小参数是明确定义了的;
GetFeatureInfo(可选)返回显示在地图上的某些特殊要素的信息。
参考:网络地图服务(WMS)的三大操作: link.
如amap支持

接口名称接口说明
GetCapabilities返回服务级元数据,它是对服务信息内容和要求参数的一种描述
GetMap获取地图图片。该操作根据客户端发出的请求参数在服务端进行检索,服务器端返回一个地图图像,其地理空间参数和大小参数是已经明确定义的,返回的地图图像可以是GIF、JPEG、PNG或SVG格式
GetFeatureinfo返回显示在地图上的某些特殊要素的信息。该操作根据用户所请求的X、Y坐标或感兴趣的图层,返回地图上某些特殊要素的信息,信息以HTML,GML或ASCII的格式表示

WMTS服务
Web Map Tile Service(Web地图瓦片服务)wmts相比于wms,它能够提供分块地图。wmts使用瓦片矩阵集来表示 。类似一个金字塔,每一层即每一个矩阵的瓦片有不同的分辨率,每个瓦片都有唯一的编码。
WMTS 1.0.0规范支持以HTTP KVP(Key-Value Pair)方式、SOAP 方式和REST 方式发布WMTS服务。
WMTS的读取:
GetCapabilities:服务元数据
GetTile:图块资源
GetFeatureInfo:要素信息
天地图请求基于wmts服务的切片数据示例:
http://198.18.128.114:8080/geomap-api/proxy?url=http://198.18.129.17:8003/JYWL/wmts?LAYER=JYWL_JYDT&FORMAT=image/tile&TILEMATRIXSET=Matrix_JYWL_JYDT_0&VERSION=1.0.0&STYLE=JYWL_JYDT&TILEMATRIX=13&TILEROW=1320&TILECOL=6799&service=WMTS&request=GetTile
天地图请求GetCapabilities:
http://r740.youlishu.com:18081/GIS_JDSQWG/wmts?SERVICE=WMTS&VERSION=1.0.0&REQUEST=GetCapabilities
参考: link.
link.

接口名称接口描述
GetCapabilities获取WMTS的能力文档(即元数据文档),里面包含服务的所有信息
GetTile获取地图瓦片。该操作根据客户端发出的请求参数在服务端进行检索,服务器端返回地图瓦片图像
GetFeatureInfo通过在WMTS图层上指定一定的条件,返回指定的地图瓦片内容对应的要素信息

天地图请求wmts服务的切片案例
http://198.18.128.114:8080/geomap-api/proxy?url=http://198.18.129.17:8003/JYWL/wmts?LAYER=JYWL_JYDT&FORMAT=image/tile&TILEMATRIXSET=Matrix_JYWL_JYDT_0&VERSION=1.0.0&STYLE=JYWL_JYDT&TILEMATRIX=13&TILEROW=1320&TILECOL=6796&service=WMTS&request=GetTile
请求wmts服务的切片案例

天地图请求wmts服务的切片案例-矢量瓦片,返回二进制文件
http://198.18.128.114:8080/geomap-api/proxy?url=http://58.213.148.61:8089/geostar/SLDT_DT/wmts?LAYER=SLDT_9_20&FORMAT=protobuf&TILEMATRIXSET=SLDT_9_20_Matrix_0&VERSION=1.0.0&TILEMATRIX=12&TILEROW=662&TILECOL=3401&service=WMTS&request=GetTile
在这里插入图片描述
百度地图加载wmts图层数据案例:
链接: link

WCS服务
Web Coverage Service(web地图栅格数据服务),如卫星影像。
栅格是一种基于像素的数据格式,可以有效地表示连续的曲面。栅格中的信息以网格结构存储,每个信息单元或像素具有相同的大小和形状,但值不同。数码照片,正射影像和卫星图像都以这种格式存储。
参考mapbox卫星影像介绍:
link.

接口名称接口说明
GetCapabilities返回描述服务和数据集的XML文档
DescribeCoverage在GetCapabilities确定什么样的查询可以执行、什么样的数据能够获取之后执行的,它使用通用的栅格格式返回地理位置的值或属性
GetCoverage允许客户端请求由具体的WCS服务器提供的任一覆盖层的完全描述

WFS服务
Web Feature Service(web要素服务)
返回的是要素级的GML编码,并提供对要素的增加、修改、删除等事务操作,是对Web地图服务的进一步深入
回结果的是XML格式的WFS服务元数据文档

接口名称接口说明
GetCapabilitiesGetCapabilities请求用于查询WFS服务的能力信息,包括支持的操作、支持的格式、空间坐标、包含的资源等。它主要的目的是使客户端在使用GetFeature请求前可以对WFS服务有一个基本的了解,从而可以设置正确的参数
DescribeFeatureType返回描述可以提供服务的任何要素结构的XML文档,即图层描述信息

shapefile文件

‌Shapefile文件格式‌是一种在地理信息系统(GIS)中广泛使用的开放标准格式,用于存储地理空间数据。它由ESRI(Environmental Systems Research Institute)开发,于1998年正式推出。Shapefile格式因其开放性、兼容性和广泛的支持,成为GIS领域最为流行的矢量数据存储格式之一‌
组成
Shapefile文件格式由以下几个核心组成部分:
‌.shp文件‌:存储几何形状信息,包括点(Points)、线(Lines)、多边形(Polygons)等‌

‌.shx文件‌:索引文件,用于快速定位几何形状‌

‌.dbf文件‌:存储与几何形状相关的属性信息‌

此外,还有可选文件,如.prj文件包含空间参考信息,而.cpg文件提供特定编码‌

应用领域
Shapefile格式广泛应用于地图制作、土地管理、环境监测、交通规划等多个领域。由于其开放性和跨平台使用的特性,Shapefile文件成为GIS数据交互的标准文件格式‌

.shp几何数据文件
.shp文件是Shapefile格式的核心部分,它存储了所有的几何信息。几何数据类型通常包括点(Points)、线(Lines)、多边形(Polygons)等。几何数据按照记录的方式存储,每条记录都对应一个具体的地理特征。每条记录的开始包含一个记录头,记录了记录的编号、内容长度和几何类型等信息。紧随其后的是实际的几何数据,这可能是坐标点序列,线段或面边界的集合。

每条几何记录通常都是以记录头开始,随后是其几何数据。在Shapefile中,点的坐标使用x和y的值表示,而线和面则需要记录一系列点的集合。例如,对于多边形来说,还可能包括其内环的信息。数据使用固定长度的记录,但在需要时会使用补丁填充来保持记录的固定长度。

.dbf属性数据文件
.dbf文件包含与.shp几何数据文件相对应的属性信息,它是一个标准的dBase格式数据库文件。每一个地理特征在.dbf文件中都有一个记录,记录的顺序与.shp文件中的几何记录顺序一一对应。.dbf文件包含了字段定义和数据记录两个部分。

字段定义部分存储了文件中每列的名称、类型和大小。常见的字段类型包括字符型(C)、数值型(N)、逻辑型(L)、日期型(D)等。数据记录部分则存储了每个地理特征的属性值,对于每一条记录,都有一个与之对应的属性数据。

.shx几何索引文件
.shx文件是索引文件,它存储了.shp文件中几何数据的索引信息,以便快速访问特定的几何记录。索引文件通过记录编号对应到.shp文件中的实际位置,这有助于提高数据检索的效率。

一个索引项是由100字节组成的结构,其中前四个字节表示偏移量,指的是.shp文件中该记录开始的位置,接下来四个字节表示记录的长度。因此,.shx文件允许程序在不知道具体数据内容的情况下,快速定位和访问.shp文件中的几何数据。

shapefile介绍:链接: link
链接: link
对shapefile文件进行转换并使用
链接: link

3D模型数据

3D模型: link

常见地图框架

amap
mapbox
cesium
openlayers
maptalks

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

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

相关文章

Python爬虫(35)Python爬虫高阶:基于Docker集群的动态页面自动化采集系统实战

目录 一、技术演进与行业痛点二、核心技术栈深度解析2.1 动态渲染三件套2.2 Docker集群架构设计2.3 自动化调度系统 三、进阶实战案例3.1 电商价格监控系统1. 技术指标对比2. 实现细节 3.2 新闻聚合平台1. WebSocket监控2. 字体反爬破解 四、性能优化与运维方案4.1 资源消耗对比…

04-jenkins学习之旅-java后端项目部署实践

1、创建被管理项目 2、构建流程说明 jenkins其实就是将服务部署拆分成了: 1、拉取代码(git) 2、打包编译 3、自定义脚本(jar复制、执行启动脚本) 4、部署成功后的一些通知等 3、demo配置 3.1、General 3.2 源码管理 添加用户名密码方式如下图 3.2.1 常见错误(r…

科研经验贴:AI领域的研究方向总结

一、数据集(Dataset) 定义: 用于训练、验证和测试模型的样本集合,通常包含输入特征(如图像、文本)和对应标签(如类别、回归值)。 关键作用: 数据划分: 训练…

Android 网络全栈攻略(四)—— 从 OkHttp 拦截器来看 HTTP 协议一

上一篇我们详解了 OkHttp 的众多配置,本篇来看 OkHttp 是如何通过责任链上的内置拦截器完成 HTTP 请求与响应的,目的是更好地深入理解 HTTP 协议。这仍然是一篇偏向于协议实现向的文章,重点在于 HTTP 协议的实现方法与细节,关于责…

免费AI工具整理

1、NVIDIA models ALL:Try NVIDIA NIM APIs example:llama-3.1-405b-instruct Model by Meta | NVIDIA NIM 2、文心一言 文心一言 3、纳米AI 纳米AI搜索 4、其他 ChatGPT 镜像网址(5月持续更新) - 最优网址

C++ std::find() 函数全解析

std::find()是C标准库中用于线性查找的基础算法&#xff0c;属于<algorithm>头文件&#xff0c;可应用于任何支持迭代器的容器。 一、函数原型与参数 template< class InputIt, class T > InputIt find( InputIt first, InputIt last, const T& value );​​…

MySQL--day6--单行函数

&#xff08;以下内容全部来自上述课程&#xff09; 单行函数 1. 内置函数及分类 单行函数聚合函数&#xff08;或分组函数&#xff09; 1.1 单行函数特点 操作数据对象接受参数返回一个结果只对一行进行变换每行返回一个结果可以嵌套参数可以是一列或一个值 2. 数值函…

GO语言学习(九)

GO语言学习&#xff08;九&#xff09; 上一期我们了解了实现web的工作中极为重要的net/http抱的细节讲解&#xff0c;大家学会了实现web开发的一些底层基础知识&#xff0c;在这一期我来为大家讲解一下web工作的一个重要方法&#xff0c;&#xff1a;使用数据库&#xff0c;现…

解决MybatisPlus使用Druid1.2.11连接池查询PG数据库报Merge sql error的一种办法

目录 前言 一、问题重现 1、环境说明 2、重现步骤 3、错误信息 二、关于LATERAL 1、Lateral作用场景 2、在四至场景中使用 三、问题解决之道 1、源码追踪 2、关闭sql合并 3、改写处理SQL 四、总结 前言 在博客&#xff1a;【写在创作纪念日】基于SpringBoot和PostG…

嵌入式学习--江协51单片机day8

这个本来应该周末写的&#xff0c;可是一直想偷懒&#xff0c;只能是拖到周一了&#xff0c;今天把51结个尾&#xff0c;明天开始学32了。 学习内容LCD1602&#xff0c;直流电机&#xff0c;AD/DA&#xff0c;红外遥控 LCD1602 内部的框架结构 屏幕小于数据显示区&#xff…

HUAWEI华为MateBook D 14 2021款i5,i7集显非触屏(NBD-WXX9,NbD-WFH9)原装出厂Win10系统

适用型号&#xff1a;NbD-WFH9、NbD-WFE9A、NbD-WDH9B、NbD-WFE9、 链接&#xff1a;https://pan.baidu.com/s/1qTCbaQQa8xqLR-4Ooe3ytg?pwdvr7t 提取码&#xff1a;vr7t 华为原厂WIN系统自带所有驱动、出厂主题壁纸、系统属性联机支持标志、系统属性专属LOGO标志、Office…

【Python】Python 装饰器的用法总结

在 Python 中&#xff0c;装饰器&#xff08;Decorator&#xff09; 是一种设计模式&#xff0c;用于在不修改函数或类代码的情况下动态地扩展其功能。装饰器广泛应用于日志记录、性能监控、权限验证等场景&#xff0c;提供了一种简洁优雅的方式来“包裹”现有的代码。本文将介…

【C++】控制台小游戏

移动&#xff1a;W向上&#xff0c;S上下&#xff0c;A向左&#xff0c;D向右 程序代码&#xff1a; #include <iostream> #include <conio.h> #include <windows.h> using namespace std;bool gameOver; const int width 20; const int height 17; int …

「MATLAB」计算校验和 Checksum

什么是校验和 是一个算法&#xff0c;将一串数据累加&#xff0c;得到一个和。 MATLAB程序 function c_use Checksum(packet) %Checksum 求校验和 % 此处checksum提供详细说明checksum 0;for i 1:length(packet)value hex2dec(packet(i));checksum checksum value; …

JavaScript面试题之消息队列

JavaScript消息队列详解&#xff1a;单线程的异步魔法核心 在JavaScript的单线程世界中&#xff0c;消息队列&#xff08;Message Queue&#xff09;是实现异步编程的核心机制&#xff0c;它像一位高效的调度员&#xff0c;让代码既能“一心多用”又避免卡顿。本文将深入剖析消…

京东外卖分润系统部署实操!0门槛入驻+全平台接入+自定义比例...这些人,赚翻了!

随着京东外卖的发展势头日渐迅猛&#xff0c;许多创业者们的态度也逐渐从原本的观望转变为了切实的行动&#xff0c;并开始通过各个渠道询问起了京东外卖自动分润系统部署相关的各项事宜&#xff0c;连带着以京东外卖自动分润系统质量哪家强为代表的多个问题&#xff0c;也成为…

【办公类-18-06】20250523(Python)“口腔检查涂氟信息”批量生成打印(学号、姓名、学校、班级、身份证、户籍、性别、民族)

背景需求: 6月是常规体检,前几天发了体检表(验血单),用Python做了姓名等信息的批量打印 【办公类-18-04】20250520(Python)“验血单信息”批量生成打印(学校、班级、姓名、性别)-CSDN博客文章浏览阅读969次,点赞19次,收藏11次。【办公类-18-04】20250520(Python)…

Python邮件处理:POP与SMTP

poplib简介 poplib 是Python 3中的官方邮件库&#xff0c;实现了POP的标准&#xff1a;RFC1939&#xff0c;用于邮件的收取。与之类似的还有imaplib 。 &#xff08;注&#xff1a;本文仅拿pop举例&#xff09; poplib的使用方法&#xff0c;就是几步&#xff1a; 先创建一…

IP风险度自检,多维度守护网络安全

如今IP地址不再只是网络连接的标识符&#xff0c;更成为评估安全风险的核心维度。IP风险度通过多维度数据建模&#xff0c;量化IP地址在网络环境中的安全威胁等级&#xff0c;已成为企业反欺诈、内容合规、入侵检测的关键工具。据Gartner报告显示&#xff0c;2025年全球78%的企…

Flink集成资源管理器

Flink集成资源管理器 Apache Flink 支持多种资源管理器&#xff0c;主要包括以下几种‌&#xff1a; YARN ResourceManager ‌&#xff1a;适用于使用 Hadoop YARN 作为资源管理器的环境。YARN ResourceManager 负责管理集群中的资源&#xff0c;包括 CPU、内存等&#xff0c;并…