天地图、谷歌地图、OSM地图各层级比例尺和分辨率大放送

编写WMTS服务核心工作是什么?瓦片图地址模板、比例尺与分辨率、WGS84与瓦片图坐标的换算算法。还在找谷歌地图的比例尺和分辨率吗?还在用在用数学公式一点一点计算坐标吗?不用啦,我在这里把我已经计算好的分享给大家用。

天地图WGS84比例尺与分辨率,注意天地图WGS84地图已应用GCJ-02国家火星坐标系,坐标有偏移:

18:5.36441802978515E-06,//街道 
17:1.07288360595703E-05,
16:2.1457672119140625E-05,
15:4.29153442382814E-05,
14:8.58306884765629E-05,
13:0.000171661376953125,
12:0.00034332275390625,
11:0.0006866455078125,
10:0.001373291015625,
9:0.00274658203125,
8:0.0054931640625,
7:0.010986328125,
6:0.02197265625,
5:0.0439453125,
4:0.087890625,
3:0.17578125,
2:0.3515625,
1:0.703125 //全球

天地图的投影地图与OSM地图、谷歌地图的比例尺与分辨率实际上是相同的,如下所示:

18:0.597164283559817,
17:1.19432856685505,
16:2.38865713397468,
15:4.77731426794937,
14:9.55462853563415,
13:19.1092570712683,
12:38.2185141425366,
11:76.4370282850732,
10:152.8740565704,
9:305.7481128,
8:611.49622628138,
7:1222.99245256249,
6:2445.98490512499,
5:4891.96981024998,
4:9783.93962049996,
3:19567.8792409999,
2:39135.7584820001,
1:78271.5169639999


还有一个用天地图跳过国家火星GCJ-02的捷径,就是把WGS84坐标换算成为WebMecator坐标,代码如下:

void wgs84_to_webmercator(double xy[2])
{
	xy[0] = xy[0] * 20037508.3427892 / 180;
	xy[1] = log(tan((90 + xy[1])*PI / 360)) / (PI / 180);
	xy[1] = xy[1] * 20037508.3427892 / 180;
}

经过验证,天地图WebMecator投影与谷歌、OSM地图能够重合。

你可能感兴趣的:(C/C++,OGC)