Я работаю над решением для загрузки листов карты на основе заданного местоположения: (широта, долгота) и уровня масштабирования
подписался 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 и определить EPSG: 32633 со значением поля «Определение», затем выполнить проекцию, но это не дало мне возможности приблизиться к вычислению
соответствующие координаты плитки, которые я определил экспериментально (47333, 65439)
https://services.geodataonline.no/arcgis/rest/services/Geocache_UTM33_WGS84/GeocacheBasis/MapServer/tile/17/47333/65439
Буду признателен за любую подсказку о том, какую математическую формулу я могу применить, чтобы следовать тому же сценарию и получить точный результат.