Получить индекс в растре точки слоя плитки - PullRequest
0 голосов
/ 06 января 2020

У меня есть большой растр, закодированный как оптимизированный для облака geoTIFF (система координат EPSG: 4326), который я рисую на карте Leaflet как TileLayer (я использую мозаику для соображений производительности). Плитки обслуживаются через сервер Terracotta,

https://github.com/DHI-GRAS/terracotta

При нажатии на карту генерируется событие щелчка, содержащее (широта, долгота, масштаб). Теперь мой вопрос:

Как определить индекс (i, j) пикселя в растре, соответствующем событию щелчка?

В качестве первой попытки Я нашел ближайшую точку в массиве растров (широта, долгота) события щелчка. Тем не менее, индекс был правильным только в пределах +/- 1 по каждой оси. Как я понимаю, это расхождение связано с тем, что плитки отображаются в другой координатной проекции (EPSG: 3857) на карте Leaflet.

Затем я погрузился в исходный код Terracotta, из который я научился переводить (широта, долгота, масштабирование) в индексы тайлов (x, y, z, где z - масштабирование) [1]. Я также обнаружил, где данные считываются из растра [2], но мне остается неясным, как выполнить полное отображение индекса пикселя в исходном растре. Кто-нибудь может направить меня в правильном направлении?

[1] https://github.com/mapbox/mercantile/blob/master/mercantile/ init .py # L285

[2] https://github.com/DHI-GRAS/terracotta/blob/master/terracotta/drivers/raster_base.py#L451

...