GIS基础知识

标签: 无 分类: 未分类 创建时间:2021-04-21 02:28:15 更新时间:2025-01-17 10:39:22

题目为GIS基础知识,其实我整理的很多的东西,可能已经不算是基础知识了,但是对于理解和开发来说,我觉得都是比较重要的事情。

1.影像数据的分辨率与比例尺关系

根据参考文章有如下的公式可用,我要说明的是,1英寸换算96像素,也就是分辨率,即DPI。像素(Pixel)是指构成图片的小色点,分辨率(单位DPI)是指每英寸(Inch)上的像素数量,可以看做是这些小色点的分布密度;像素相同时,分辨率越高则像素密度越大,实际打印尺寸越小,图像也越清晰。

1
2
3
4
5
6
7
8
9
10
11
1英寸=96像素(一般的屏幕比例尺)

1英寸(inch)=25.4mm

1米=1000/25.4=39.37英寸

1像素宽度 / 2.5米

1像素=1/96*25.4/1000米

1像素宽度 / 2.5米=1/96*25.4/1000/2.5=1/9448.82,所以可以用来做1:10000的数据

在参考文章5中,对于这种描述更加的详细:

在地图中,比例尺与分辨率是两个常用的术语,比例尺与分辨率的大小决定了地图要素对实际地物描述的详细程度。在 GIS 领域所提到的地图分辨率(Resolution),也称地面分辨率(Ground Resolution)或空间分辨率(Spatial Resolution),表示屏幕上一个像素(pixel)所代表的实际地面距离(米)。
地图比例尺(scale)是指地图上距离与地面实际距离的比例。在计算地图比例尺的时候,通常用到地面分辨率和屏幕分辨率这两个参数。
屏幕分辨率,也叫做像素分辨率,常用屏幕上每英寸长度内包含的像素数量来表达,即,Pixel per Inch,因此简写为 PPI(或 DPI),一般地图的默认屏幕分辨率是96。有的地方也用像素大小(pixel size)来描述屏幕的可分辨率,如 WMTS 标准中的0.28mm。
SuperMap 的比例尺是通过地面分辨率和屏幕分辨率由如下公式来定义的:Resolution:即地图分辨率、地面分辨率,是指一个像素(pixel)所代表的实际地面距离(m);PPI,屏幕分辨率,是指屏幕上每英寸长度内包含的像素数量,默认是96;0.0254(m/inch)是指米与英寸的单位转换。
参考文章:
1.影像数据的分辨率与比例尺关系 (这里写的是知道了像素数,和分辨率,求比例尺的关系)
2.尺寸分析/转换问题:将比例尺缩放到图像分辨率(dpi) (这个有点乱)
3.对屏幕的理解—分辨率,dpi,ppi,屏幕尺寸,像素 (讲了各个名词的概念及其之间的关系,对于运算,实际上没有帮助)
4.图片像素尺寸(厘米/英寸)换算器、在线转换 (这是一个工具,提供了DPI和英寸的在线转换)
5.比例尺与分辨率 (这里提供了公式,是从比例尺求屏幕分辩率的关系)

2.数据格式

  • MBTiles
    MbTiles 是一种用于在 sqllite 数据库中存储任意瓦片地图数据用于即时使用和高效传输的规范。MBTiles 是一种紧凑的、限制性的规范。它仅支持切片数据,包括矢量或栅格和规则格网瓦片。展示仅支持Web墨卡托投影,bounds和center等元数据仅支持经纬度坐标。它是最低规范,仅指定数据必须能检索到的方式。因此,MBTiles 文件可以在内部压缩和优化数据,并构建符合 MBTiles 规范的视图。
  • MVT

  • TopoJSON

3.坐标系及其转换

坐标系分为以下两种:

  • 地理坐标系(Geographic Coordinate System, GCS)
  • 投影坐标系(Projected Coordinate System, PCS)

4.地图引擎

根据公瑾的话这么总结了地图引擎的优缺点:
以严格的3D定义标准而言,Cesium(开源)、MapboxGL(开核)、Maptalks (3D部分不开源)、ArCGIS AP1 4(不开源)都是妥妥的webGIS 3D51擎。

Cesium:唯一支持球的主流开源GIS 3D 引擎,拥有OGC 3DTiles的标准,同时有大量的API,虽然方便了用户但也会造成较大的心智负担,各种3D空问数据格式开箱即用,国内3D场景开发的事实标准。缺点是:复杂,贼卡,效果一股股。我并不看好其未来,长期看随着新的引擎成熟,cesium的用户会逐渐分流,因为它太重视功能,却不重视体验。

MapboxGL:最美的G1S引擎,拥有矢量切片的事实标准,开启了底图定制化时代的能手,其特点就是底图特别美,性能贼好,非常适合互联网2c等场最应用,缺点就是:3D API几乎没有,需要用户自己写WebGL着色器,劝退了大部分API开发者。。

MapTalks:集装箱式的GIS引擎,没有自己的技术标准,通过兼容其他优秀引孕,如矢量切片、3Dtiles、各种地理ogc还是esri的常用服务,反正就是各种兼容,优化,我认为会极大简化gis开发,很像gis 引擎的低代码,你能想到的能见到的他都在实现。

ArcGIS:没啥好说的,大哥永远还是大哥,如果你有钱可以用。毕竟它不是纯前端的,依托ArCGIS庞大的技术体系支撑才能玩出花。

webgis加载地图,需要地图引擎,常见的地图引擎,主要包括:

  • Openlayers

  • Leftlet

  • maptalks

  • [Google Maps API]

  • HereMap
    Here是一個曾由諾基亞提供的地圖服務,現為德國汽車廠商奧迪、BMW、戴姆勒合資持有。 HERE地圖包括建築、公園、交通等資訊,同時提供到商業公司的導航,例如:Garmin、BMW、亞馬遜、甲骨文公司。

  • MapBox

  • maplibre 在mapbox的基础上增加了一些其他的功能,是mapbox开源版本。

  • openglobus 这是刚开源的一个地图引擎,用的人还不是很多,微软的就是用这个的。Openglobus main goal is to make 3d map features fast, good lookin, user friendly and easy to implement in any related project.

参考文章:
1.市面常见的地图引擎
2.国产的三维GIS地图开发引擎有哪些?
3.maputnik Maputnik 是 Mapbox 样式规范的开源可视化编辑器
4.三维WebGIS新玩具:OpenGlobus 它创建于 2018 年,但是在 GitHub 上是今年 3 月才活跃起来的
小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。