二级域名对网站帮助,《php网站开发》电子课件,建设银行光明支行网站,网站建设运营要求文章目录 一、GIS定义1.1 地理信息系统1.2 建模1.3 相关教程1.4 GIS前沿方向 二、GIS数据格式2.1 矢量2.2 栅格2.3 矢量与栅格的区别 三、GIS数据组织3.1 抽象3.2 分层3.3 栅格与切片 四、坐标系4.1 坐标系简介4.2 大地坐标系GCS4.3 投影坐标系PCS4.4 投影变换 五、空间数据库与… 文章目录 一、GIS定义1.1 地理信息系统1.2 建模1.3 相关教程1.4 GIS前沿方向 二、GIS数据格式2.1 矢量2.2 栅格2.3 矢量与栅格的区别 三、GIS数据组织3.1 抽象3.2 分层3.3 栅格与切片 四、坐标系4.1 坐标系简介4.2 大地坐标系GCS4.3 投影坐标系PCS4.4 投影变换 五、空间数据库与空间数据索引5.1 空间索引 六、经验之谈附录 一、GIS定义
1.1 地理信息系统
1.1.1 简称GISGeographic Information System。GIS四层模型如下。
表现层直观展示地理数据如数值化地图。应用层集合了对地理要素进行编辑、查询、分析的软件应用平台。服务层提供接口API面向开发用户和最终用户提供数据处理、数据分析和发布服务。数据层体现了GIS的数据结构以及存储方式。
1.1.2 数据层 GIS数据库层具备存储空间数据以及索引空间数据的能力。对应有文件型的ShapeFile、GeoJSONArcGIS的GeoDatabaseQGIS的GeoPackage以及空间数据格式通过SDE-空间数据引擎架设到PostGIS/MySQL/Oracle上的相关数据等通过空间数据引擎可以索引相关的数据。
1.1.3 服务层 服务层提供接口API让二次开发人员、用户调用。如ArcGIS Server、QGIS Server、GeoServer等。
1.1.4 应用层 一些列GIS特有的功能和应用空间数据加载、显示、编辑、查询、分析、处理和转换等。如ArcGIS Pro(ArcMap/ArcCatalog/ArcToolbox)、QGIS Desktop等。
1.1.5 表示层 如数字地图、行政区划图、专题图等。
1.2 建模 1.2.1 以排水行业为例进行说明如下建模步骤。
抽象将检查井抽象为点管线抽象为线泵站从整个管网研究尺度上抽象为点再加上出水口等其他设施将排水管网相关设施完成空间概化。分层虽然检查井和泵站都概化为点但是由于各自管网模型中有不同角色和功用且具有不同属性特征故将其分为两类不同的要素显示为不同的图层。建模构建排水管道专业模型-SWMM。GIS应用如下 流域分析坡度分析划分汇水区网络分析构建节点与管道的连接关系叠加分析、提取高程信息。
1.3 相关教程
https://www.osgeo.cn/gis-tutorial/index.html https://www.osgeo.cn/tutorial/ https://huzu.likegis.com/main/general/gis
1.4 GIS前沿方向 二、GIS数据格式
2.1 矢量
2.1.1 矢量数据就是代表地图图形的各离散点平面坐标 (x,y)的有序集合主要用于表示地图图形元素几何数据之间及其属性数据之间的相互关系并通过坐标的方式来记录点、线、面地理实体。
有序坐标集合方向性空间与属性关联坐标记录点0维、线1维、面2维
面的方向性采用梯形法计算平面上任意三角形的面积顺时针方向如果采用终点的X-起点的X那么面积为正反之为负如下
2 S A B C ( y A y B ) ∗ ( x B − x A ) ( y B y C ) ∗ ( x C − x B ) ( y C y A ) ∗ ( x A − x C ) S_{ABC}(y_Ay_B)*(x_B-x_A) (y_By_C)*(x_C-x_B) (y_Cy_A)*(x_A-x_C) SABC(yAyB)∗(xB−xA)(yByC)∗(xC−xB)(yCyA)∗(xA−xC) y A x B y B x C y C x A − y B x A − y C x B − y A x C y_Ax_By_Bx_Cy_Cx_A-y_Bx_A-y_Cx_B-y_Ax_C yAxByBxCyCxA−yBxA−yCxB−yAxC
2.1.1 可以采用GeoJSON、shp等格式存储
2.2 栅格
2.2.1 栅格数据结构上就是像元的阵列即像元按矩阵形式的集合栅格中每个像元是栅格数据中最基本的信息存储单元其坐标位置可以用行号和列号确定。
2.3 矢量与栅格的区别
连续性与离散性栅格数据表示的地表是不连续的是量化和近似离散的数据这意味着地表一定面积内像元地面分辨率范围内地理数据的近似性。矢量数据其坐标空间为连续空间不必像栅格数据结构那样进行量化处理因此矢量数据更能精确地确定实体的空间位置。属性值与像元值矢量数据一般是现实世界实体的图形化抽象因此其关联的属性数据为对应的抽象实体的属性信息栅格数据的属性值一般对应波段的像元值图形学中的矢量数据如svg而GIS中的矢量数据可近似理解为图形学矢量数据属性信息投影信息图形学中的栅格数据如BMP而GIS中的栅格数据可近似理解为图形学栅格数据投影信息。 三、GIS数据组织
3.1 抽象
3.1.1 空间层面根据研究尺度和应用需求按实际事务抽象为点、线、面要素。
3.1.2 属性层面数据结构设计抽象要素Feature的属性
3.2 分层
3.2.1 图层矢量图层Vector LayerFeatureLayer将具有同类特征的要素Feature归为一个要素类FeatureClass通过一定的配置标注、渲染符号等渲染到地图。
3.2.2 图层的组成与分解
矢量图层FeatureLayer 数据源要素类FeatureClass 元数据字段结构Field数据表要素Feature 图层装饰 图层标注Label数据时态Timing符号渲染Symbology提示框Tooltip数据过滤Filter数据关联…
3.2.3 矢量图层数据源格式主要有
ESRI ShapeFile.shp标准格式GeoJON常见于WebGIS数据交换ESRI GeoDatabaseQGIS GeoPackage
3.3 栅格与切片
3.3.1 遥感影像 空间分辨率Spatial Resolution又称地面分辨率
后者是针对地面而言指可以识别的最小地面距离或最小目标物大小前者是针对遥感器或者图像而言的指图像上能够详细区分的最小单元的尺寸或大小
卫星遥感图像的计量单位为景即一景指卫星拍摄一次所成像的画面一景的范围一般在几千至上万平方公里。
3.3.2 栅格数据除了常见的遥感影像还有一类叫数字地形模型DTM其中一个分支就是DEM数字高程模型。
数字高程模型DEM 线表示等高线点表示 侠义的DEM如规则网格Grid不规则三角网TIN
3.3.3 切片
地图切片地图瓦片瓦片数据是将矢量数据或影像数据进行预处理采用高效的缓存机制如金字塔形成缓存图片集采用“级、行、列”方式进行组织可在网页中快速加载。
3.3.4 地图切片 切片原点左上角、中点 大部分切片算法是采用左上角为切片原点如天地图、高德地图、谷歌地图等。切片原点定义了第一个256*256的切片的位置。 切片分辨率比例尺 切片分辨率和比例尺是一一对应的。比例尺是指地图上一个单位代表实际多少距离而分辨率代表屏幕上一个像素代表实际多少距离因此当确定一个后对应的另一个也就确定了。 单个切片像素大小一般采用256*256px 四、坐标系
4.1 坐标系简介
4.1.1 EPSG即European Petroleum Survey Group欧洲石油调查组织它为每个坐标系都分配了一个介于1024~32767的数字代码。
4.1.2 Web MercatorEPSG:3857,即Web墨卡托投影投影后整幅世界地图成正方形。不同的坐标投影出来的地图形状各异。
4.1.3 不同的坐标系有不同的特点有些投影能保持角度不变但距离和面积上会有偏差比如纬度越高的地方偏差越大。
4.2 大地坐标系GCS
4.2.1 大地坐标系。也称地理坐标系GCS。
4.2.2 大地水准面假定海水处于“完全”静止状态把海水面延伸到大陆上去形成包围整个地球的连续表面。 4.2.3 地球椭球面凡与局部地区一个或几个国家的大地水准面符合的最好的旋转椭球称为“参考椭球”。
4.2.4 地心坐标系与参心坐标系
地心坐标系选用地球质心作为椭球中心从拟合全球曲面的角度出发来建立空间坐标系适用于全球如WGS84、CGCS2000。参心坐标系从拟合局部区域的角度出发来建立空间坐标系选用最贴合局部地区曲面的椭球中心适用于地方如西安80、北京54。
4.2.5 地球椭球面Datum
椭球体参数 长半轴a短半轴b扁率alpha a l p h a ( a − b ) a alpha \frac{(a-b)}{a} alphaa(a−b)第一偏心率e e a 2 − b 2 a 2 e\sqrt{\frac{a^2-b^2}{a^2}} ea2a2−b2 第二偏心率e‘ e ′ a 2 − b 2 b 2 e\sqrt{\frac{a^2-b^2}{b^2}} e′b2a2−b2 WGS84椭球体的参数为a6378137alpha 1 298.257223563 \frac{1}{298.257223563} 298.2572235631,CGCS2000椭球体的参数为a6378137alpha 1 298.257222101 \frac{1}{298.257222101} 298.2572221011,根据参数a、alpha就可计算其他参数。
4.2.6 大地坐标系有两种表示法分别为采用大地坐标经纬高LBH和空间直角坐标系XYZ来表示。 P点向球体做法线可知XYZ与LBH之间的关系由于是椭球体长半轴与短半轴不同因此法线的延长线与空间直角坐标系不会相交于原点球心。 在不考虑小数精度的情况下此二者转换不会丢失精度。 在地球表面时H为0 零纬度线称为赤道 零经度线称为本初子午线。对于绝大多数地理坐标系本初子午线是指通过英国格林尼治的经线 经纬网的原点00定义在赤道和本初子午线的交点处。
4.3 投影坐标系PCS
4.3.1 投影坐标系大地坐标系投影方法投影函数或映射函数
平面坐标XY FLBF为函数映射L为经度、B为维度 为了便于理解几何透视原理想象地球是一个表面透明的球体其上绘有经纬网用一张巨大的纸称为投影曲面包裹地球假设有一个位于地心处的光源穿过地球将经纬网投影到这张上然后将其展开就可以得到一张地图。
4.3.2 投影坐标系是建立在一种大地坐标系之上的。
4.3.3 投影坐标系分类
按照变形性质分为:等角投影、等距、等积投影等按照地球与投影面的相对位置称为横轴、正轴、斜轴投影按照投影面分为圆柱、圆锥、平面投影等
4.3.4 Web MercatorEPSG3857墨卡托投影
大地坐标GCS为WGS84EPSG4326投影方法采用正轴等角圆柱投影即墨卡托投影。 等角正轴圆柱投影面
Web Mercator WGS1984 正轴等角圆柱投影投影结果为正方形。
投影误区 投影并非直线照射投影到柱面上即非简单的几何透视投影。采用反证法可以证明已知当B约等于85.05度投影展开为正方形如简单的理解为透视投影则正方形的长为赤道长度宽为2L有 长 2 ∗ P I ∗ R 宽 2 L 2 t a n B ∗ R 则 B 72.343 度 长2*PI*R宽2L2tanB*R则B72.343度 长2∗PI∗R宽2L2tanB∗R则B72.343度 B与85.05度不相等因此不能简单的理解为几何透视投影。
4.3.5 CGCS2000 Gauss-Kruger CM 117E(EPSG:4509)
GCS:CGCS2000EPSG4490投影方法等角横切圆柱投影即高斯-克吕格投影 等角横轴圆柱投影面
CGCS2000 Gauss-Kruger CM 117E CGCS2000 高斯-克吕格投影6度带以东经117为中央子午线即117度加减3度
4.3.6 投影比较
Web MercatorCGCS2000 CK CM 117E大地坐标系WGS1984CGCS2000投影方式墨卡托等角正轴切圆柱高斯-克吕格等角横轴切圆柱使用场景优势等角航海适用于小比例尺全世界地图适合Web利于地区图切片等角城市交通、道路交叉适用于大比例尺城市级别高斯克吕格投影在长度和面积上变形很小中央经线无变形劣势纬度越高变形严重面积无参考价值不适合大范围全国地图涉及拼接而每带为瓜瓣状难以无缝拼接
4.4 投影变换
4.4.1 通过分析源代码理解投影变换。 https://github.com/proj4js/proj4jstransform.js源代码如下。 import {D2R, R2D, PJD_3PARAM, PJD_7PARAM, PJD_GRIDSHIFT} from ./constants/values;
import datum_transform from ./datum_transform;
import adjust_axis from ./adjust_axis;
import proj from ./Proj;
import toPoint from ./common/toPoint;
import checkSanity from ./checkSanity;function checkNotWGS(source, dest) {return ((source.datum.datum_type PJD_3PARAM || source.datum.datum_type PJD_7PARAM || source.datum.datum_type PJD_GRIDSHIFT) dest.datumCode ! WGS84) ||((dest.datum.datum_type PJD_3PARAM || dest.datum.datum_type PJD_7PARAM || dest.datum.datum_type PJD_GRIDSHIFT) source.datumCode ! WGS84);
}export default function transform(source, dest, point, enforceAxis) {var wgs84;if (Array.isArray(point)) {point toPoint(point);} else {// Clone the point object so inputs dont get modifiedpoint {x: point.x,y: point.y,z: point.z,m: point.m};}var hasZ point.z ! undefined;checkSanity(point);// Workaround for datum shifts towgs84, if either source or destination projection is not wgs84if (source.datum dest.datum checkNotWGS(source, dest)) {wgs84 new proj(WGS84);point transform(source, wgs84, point, enforceAxis);source wgs84;}// DGR, 2010/11/12if (enforceAxis source.axis ! enu) {point adjust_axis(source, false, point);}// Transform source points to long/lat, if they arent already.if (source.projName longlat) {point {x: point.x * D2R,y: point.y * D2R,z: point.z || 0};} else {if (source.to_meter) {point {x: point.x * source.to_meter,y: point.y * source.to_meter,z: point.z || 0};}point source.inverse(point); // Convert Cartesian to longlatif (!point) {return;}}// Adjust for the prime meridian if necessaryif (source.from_greenwich) {point.x source.from_greenwich;}// Convert datums if needed, and if possible.point datum_transform(source.datum, dest.datum, point);if (!point) {return;}// Adjust for the prime meridian if necessaryif (dest.from_greenwich) {point {x: point.x - dest.from_greenwich,y: point.y,z: point.z || 0};}if (dest.projName longlat) {// convert radians to decimal degreespoint {x: point.x * R2D,y: point.y * R2D,z: point.z || 0};} else { // else projectpoint dest.forward(point);if (dest.to_meter) {point {x: point.x / dest.to_meter,y: point.y / dest.to_meter,z: point.z || 0};}}// DGR, 2010/11/12if (enforceAxis dest.axis ! enu) {return adjust_axis(dest, true, point);}if (point !hasZ) {delete point.z;}return point;
}
代码流程图如下
确保源坐标系或目标坐标系有一个是WGS84若都不是则先把目标坐标系转换为WGS84在从WGS84转换到目标坐标系如果源坐标是投影坐标系则将平面坐标转换为经纬度坐标如果源坐标系和目标坐标系椭球体基准面参数不一样则需要进行椭球体参数之间的转换这两个椭球体对应的空间直角坐标系之间可以通过三参数或七参数转换方法来进行转换
两个不同的大地坐标下不同的投影坐标系下的转换简化后的变换流程大致如下
4.4.2 空间直角坐标系-7参数或三参数转换 七参数转换三个平移参数、三个旋转参数和一个缩放参数M转换精度更高适用于区域范围更广控制点起码3个以上。 三参数转换三个平移参数适用范围小最少需要一个控制点。
4.4.3 Web Mercator变迁史
别名伪墨卡托Pseudo MercatorWKID3857基准面WGS1984投影方法正轴等角圆柱投影投影范围经度 − 18 0 。 -180^。 −180。~ 18 0 。 180^。 180。南北纬 85.0 5 。 85.05^。 85.05。争议采用椭球体的坐标系却用球体的参数来投影计算导致问题并非等角高纬度问题更显著。
4.4.4 GCJ02简介 主要用于对在线发布的地图进行坐标的偏移采用了GCJ02偏移算法偏移的是经纬度而不是平面坐标GCJ02不应该称为坐标系而应该称之为偏移算法GCJ02并没有基于任何大地坐标系进行变换。 五、空间数据库与空间数据索引
5.1 空间索引
5.1.1 空间索引是指空间要素的地理位置形状或空间对象之间的某种空间光系按一定的顺序排列的一种数据结构一般包括空间要素标识外包络矩形以及指向空间要素的指针。
5.1.2 外包络矩形Envelope 外包络矩形是指空间要素的封装边界。 5.1.3 矩形范围索引 基本原理就是对空间要素的外包络矩形进行索引。在在进行空间查询时根据空间要素外包络矩形与查询范围进行比较判断是否有叠盖而得到查询结果。
5.1.4 单位网格索引 基本原理就是对空间要素的外包络矩形进行索引在进行空间范围查询时分为两级过滤筛选。初次过滤根据空间要素外包络矩形来过滤掉大部查询的空间要素因为空间要素外包络矩形已被索引所以初次过滤过程比较快花费的代价较小。第二级过滤则用查询空间范围直接和初次过滤结果集中空间要素的二进制边界坐标比较从而查询到准确的结果。 5.1.5 单位网格索引改进 采用二维格网索引外包络矩形来进行空间索引。
5.1.6 R树索引
B树的空间版根据空间位置来维护插入和删除的B树。
5.1.7 四叉树索引
5.1.8 总结 https://www.osgeo.cn/gis-tutorial/ch06-06/sec05-5.html
六、经验之谈
6.1 在GIS中投影坐标系下模型顶点坐标[x,y]值的范围及数量级通常与具体的投影方法和分带有关。在中国范围内通常采用高斯-克吕格投影其中x坐标通常是一个较大的值而y坐标则是一个相对较小的值。y坐标通常是7位的而x坐标有两种情况6位和8位。6位x坐标通常省略带号是中央经线形式的投影坐标而8位x坐标带有带号。
6.2 在高斯投影直角坐标中为了避免出现负的横坐标横坐标一般会加上500km意味着x坐标通常是以十万500000米位单位的而y坐标的最大值在赤道上6度带约为330公里。
附录
https://www.bilibili.com/video/BV1Sa411V7aM?spm_id_from333.788.videopod.sectionsvd_sourced5f54bdbe1c20d376b8816eaa36c75b0