我正在研究一种基于给定位置((纬度,经度)和缩放级别)下载地图图块的解决方案
关注https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames
关键概念是将(纬度,经度)转换为图块参考,例如。 javascript代码:
function long2tileX(lon,zoom) { return (Math.floor((lon+180)/360*Math.pow(2,zoom))); }
function lat2tileY(lat,zoom) { return (Math.floor((1-Math.log(Math.tan(lat*Math.PI/180) + 1/Math.cos(lat*Math.PI/180))/Math.PI)/2 *Math.pow(2,zoom))); }
对于示例位置(63.433772,10.393456)和缩放级别(17),此公式返回(69320,35421),这正是获取图块所需的条件:
https://opencache.statkart.no/gatekeeper/gk/gk.open_gmaps?layers=topo4&zoom=17&x=69320&y=35421
现在,我正在努力实现与ArcGIS地图相同的功能。 提供了以下CRS对象:
{
"Name":"Geocache Basis",
"Crs":{
"Resolutions":[
21674.7100160867,
10837.355008043351,
5418.6775040216753,
2709.3387520108377,
1354.6693760054188,
677.33468800270941,
338.66734400135471,
169.33367200067735,
84.666836000338677,
42.333418000169338,
21.166709000084669,
10.583354500042335,
5.2916772500211673,
2.6458386250105836,
1.3229193125052918,
0.66145965625264591,
0.33072982812632296,
0.16536491406316148
],
"OriginX":-2500000.0,
"OriginY":9045984.0,
"Srid":"EPSG:32633",
"Definition":"+proj=utm +zone=33 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"
},
"Attribution":"Kartverket, Geovekst og kommuner - Geodata AS",
"MapProvider":"arcgis"
}
试图使用proj4并使用“ Definition”字段值定义EPSG:32633,然后进行投影,但这并没有使我接近计算的范围 各自的图块坐标,我实验确定为(47333,65439) https://services.geodataonline.no/arcgis/rest/services/Geocache_UTM33_WGS84/GeocacheBasis/MapServer/tile/17/47333/65439
我很高兴能提示我可以应用什么数学公式来遵循相同的情况并获得准确的结果。