不同坐标系瓦片计算原理

1. 不同坐标系瓦片计算原理

瓦片行列号计算是基于全球世界图进行编码,地理坐标系和投影坐标系的原点都是赤道和本初子午线的相交点,坐标原点为(0,0),而瓦片坐标系的原点根据瓦片坐标系的不同而不同。目前比较流行的瓦片坐标系统的原点有以下几种:地图左上角、左下角、地图中间。瓦片计算原理根据切片方案不同而不同,但主要过程还是一致的。流程图如下:

1、将三维地理坐标(lon,lat)转为二维平面坐标(mx,my)。

将三维地理坐标转为二维平面坐标,一般使用web墨卡托投影进行投影转换,其次也有选择经纬度直投方式。国家天地图有两套地图,一套是使用web墨卡托投影,即wkid:3857切片方案,另一套使用经纬度直投,即wkid:4490切片方案。

使用web墨卡托进行投影转换,即使用web墨卡托投影转换公式得到平面坐标(mx,my),而经纬度直投,是直接将经纬度投到平面上,经纬度就是平面坐标(mx,my)。

2、将二维平面坐标与二维切片坐标系统一坐标原点为切片坐标原点,在这基础上计算出全球的像素坐标。

此时的二维平面坐标系是全球平面坐标系,坐标原点是赤道和本初子午线的相交点,即在平面坐标系的中心点,坐标为(0,0),x轴向右为正方向, y轴向上为正方向。而瓦片坐标系的原点有以下几种:地图左上角、左下角、地图中间。需根据具体情况,将二维平面坐标的坐标原点统一到瓦片原点坐标后,再除以分辨率即得到全球的像素坐标。

(1)若瓦片坐标系原点在左上角,x轴向右为正方向, y轴向下为正方向

distanceX、distanceY:二维世界平面地图的水平与垂直方向的距离,单位为米或度数。

resolutionX、resolutionY:二维世界平面地图的水平与垂直方向的分辨率,是二维世界平面地图的距离/像素距离的值

(2)若瓦片坐标系原点在左下角,x轴向右为正方向, y轴向上为正方向

distanceX、distanceY:二维世界平面地图的水平与垂直方向的距离,单位为米或度数。

resolutionX、resolutionY:二维世界平面地图的水平与垂直方向的分辨率,是二维世界平面地图的距离/像素距离的值

(3)若瓦片坐标系原点在中间,x轴向右为正方向, y轴向上为正方向,瓦片坐标系统与平面坐标系统原点,x、y正方向轴一致,不进行转换。

3、将像素坐标(px,py)转化为全球的瓦片行列号(x_num,y_num)

将得到的像素坐标除以tilesize,再math.floor()取整,即得到瓦片行列号(x_num,y_num),

x_num代表列号,y_num代表行号。

综上,经过上述三步,可由某点球面经纬度坐标得到某点所在瓦片行列号,具体流程图如图1-2所示。

1.1网络墨卡托坐标系瓦片计算原理

网络墨卡托坐标系,wkid为3857,其瓦片计算原理主要是通过网络墨卡托投影得到瓦片的行列号。其过程可以分解为:先对大地经纬度坐标通过网络墨卡托投影方式进行投影,得到投影后的平面坐标,再将其转化为像素坐标,最终通过转换得到瓦片行列号。

1、第一步;经纬度(lon,lat)转平面坐标(mx,my)

大地坐标是在球面的经纬度坐标,单位为度(角度制),在对其进行投影转换前需将其转化为弧度制,角度制与弧度制互转公式如下:

故:

网络墨卡托正投影公式:

网络墨卡托反投影公式:

dLon表示以角度为单位的经度,取值范围是角度[-180,180]

rLon表示以弧度为单位的经度,取值范围为弧度[-PI,PI];

dLat表示以角度为单位的纬度,取值范围是[-85.05112877980659,85.05112877980659],

rLat表示以弧度为单位的纬度,取值范围为弧度[-1.4844222297453322, 1.4844222297453322];

R表示地球半径,6378137米;

mx和my分别表示投影后的坐标,单位:米,范围均为[-20037508.3427892, 20037508.3427892]

2、第二步:将平面坐标(mx,my)转为像素坐标(px,py)

由第一步得到的平面坐标的范围为[-20037508.3427892, 20037508.3427892],原点和经纬度坐标的原点一致,是赤道和本初子午线的相交点相当于在世界平面图的中间,故原点坐标为(0,0),向右为x轴正方向,向上为y轴正方向。而瓦片坐标系的原点取平面坐标系的左上角坐标(-20037508.3427892, 20037508.3427892),x轴向右为正方向,y轴向下为正方向。需将两者坐标系统一为左上角坐标,再计算其像素坐标。水平坐标就是平面坐标x加上世界平面图的一半,垂直坐标就是世界平面图的一半减平面坐标y,世界平面图的一半也就是地球周长的一半。

因为瓦片分辨率为平面距离/像素距离,表示米每像素,故统一坐标系后的平面坐标除以分辨率即得到像素坐标。

分辨率计算公式如下:

根据以上分析得到计算像素坐标(px,py)的公式为:

3、第三步:将像素距离(px,py)转变为瓦片行列号(x_num,y_num)

综上三步,可得到使用web墨卡托投影方式,计算瓦片行列号的公式如下:

1.2国家2000坐标系瓦片计算原理

国家2000坐标系,wkid为4490,其切片方案使用原点为(-180,90),经纬度直投,即直接将经纬度投到平面上,而不经过投影转换。故其与网络墨卡托瓦片计算不同的点是,其直接对经纬度进行瓦片行列号计算,但也需进行坐标系的统一到屏幕左上点(-180,90)。

以天地图国家2000坐标系瓦片计算规则为例。天地图瓦片数据通过金字塔模型组织从 1 到 20 共分为 20 级,随着级别增加分辨率逐渐升高,瓦片数量逐级增大。每一级的瓦片数为 2 ^(2 n-1 ),横纵比例为 2 ∶1.即列数为 2^n,行数为 2^ (n -1 )。式中 n 为正数,代表瓦片级别,即level,坐标系原点在西经 180°,北纬 90° 。

如图1-3所示,天地图为瓦片层级为1的情况,

图 1‑3

计算公式为:

2

分辨率计算公式如下:

但其实分辨率计算公式可合并为:

像素坐标除以tilesize后进行math.floor()取整,即得到瓦片行列号(x_num,y_num)

故推得最终瓦片计算公式为:

Mapbox是一个提供地图服务的平台,它支持加载其他坐标系瓦片数据。加载其他坐标系瓦片需要进行以下几个步骤: 1. 确定目标坐标系:首先需要确定要加载的瓦片数据所使用的坐标系。常见的坐标系有WGS84(经纬度坐标系)和Web Mercator(Web墨卡托投影坐标系)等。 2. 创建地图样式:Mapbox使用地图样式来定义地图的外观和行为。在创建地图样式时,需要指定地图的初始中心点和缩放级别,以及要加载的瓦片数据源。根据目标坐标系,选择合适的瓦片数据源。 3. 添加瓦片数据源:在地图样式中,添加瓦片数据源可以通过URL或矢量瓦片数据源以供加载。根据目标坐标系,选择合适的瓦片数据源,并使用其提供的URL或相关信息设置瓦片数据源。 4. 加载瓦片数据:在地图样式中,使用添加的瓦片数据源加载地图数据。根据目标坐标系,Mapbox会通过相关的URL或数据源解析并加载瓦片数据。 5. 显示地图:最后,将创建的地图样式应用到地图容器中,以显示加载的瓦片数据。可以使用Mapbox提供的JavaScript API来在网页中嵌入地图,并通过设置容器的大小和位置来适应显示。 总之,通过以上步骤,可以使用Mapbox加载其他坐标系瓦片数据。根据目标坐标系选择适当的瓦片数据源,并在地图样式中添加和加载数据源,最后将样式应用到地图容器中即可显示加载的瓦片数据。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值