Notes |
|
(0009838)
|
vdemidov
|
05-11-2012 08:13
(edited on: 23-12-2020 12:02) |
|
Это можно сделать. И даже не очень сложно. Правда скорость склейки немного упадет, но не сильно.
|
|
|
(0020224)
|
zed
|
27-11-2021 10:18
|
|
vdemidov
Я правильно понимаю алгоритм: в IImageLineProvider при добавлении тайла из кэша, для каждого его пикселя надо сделать проверку попадания пикселя в полигон, и если он не попадает, то закрасить пиксель фоновым цветом?
|
|
|
(0020225)
|
zed
|
28-11-2021 08:42
|
|
Можно тестировать. Включается опцией "Обрезать точно по полигону" / "Precise cropping by polygon" на вкладке Склеить.
Скорость склейки падает, цифры точные не скажу, но ощутимо. Все возможные оптимизации вроде бы применил, так что это максимум.
Пока что не работает для многопоточной склейки в GeoTiff, сделаю позже. И склейка в KMZ игнорирует эту опцию, но там она и смысла не имеет. |
|
|
(0020226)
|
zed
|
29-11-2021 17:30
|
|
Кажется промахнулся. Закрашивать пиксели надо было внутри TBitmapTileProviderWithBGColor... |
|
|
|
>Кажется промахнулся. Закрашивать пиксели надо было внутри TBitmapTileProviderWithBGColor...
Ну, я это как-то именно туда планировал запихивать. Типа если полигон пересекается с тайлом, то отрисовываем на битмапке этот полигон и используем его как трафарет. Честно говоря уже не помню подробностей как это в GR32 собирался делать.
Сорри, что так поздно отвечаю. |
|
|
(0020229)
|
zed
|
01-12-2021 11:36
|
|
Перенёс реализацию в TBitmapTileProviderWithBGColor. Теперь обрезка работает для KMZ и многопоточного GeoTiff. Небольшое ускорение от многопоточности есть, но не двухкратное (или кратное числу потоков) как можно было ожидать. |
|