Вот реальный практический пример: геотифф 20020819_brovey8_2_4_5.tif с 16-битной палитрой,
сдвоенная сцена ландсат, 20281 на 25821 пикселов,
проекция UTM 35N
Origin = (438600,6932700)
Pixel Size = (15,-15)
Upper Left ( 438600.000, 6932700.000) ( 25d48'26.29"E, 62d31'12.72"N)
Lower Left ( 438600.000, 6545385.000) ( 25d55'47.67"E, 59d 2'36.52"N)
Upper Right ( 742815.000, 6932700.000) ( 31d42'28.12"E, 62d26'45.02"N)
Lower Right ( 742815.000, 6545385.000) ( 31d13'32.13"E, 58d58'44.17"N)
Center ( 590707.500, 6739042.500) ( 28d39'55.93"E, 60d46'35.35"N)
Из него создается 8-битный трехканальный .png (+world) файл с помощью gdal_translate.
piclayer хоть и справляется с 16-битным png, но josm при этом занимает 14ГБ в ОЗУ и работает “небыстро”.
$ gdal_translate -co worldfile=yes -of png -ot Byte -expand rgb 20020819_brovey8_2_4_5.tif 20020819_brovey8_2_4_5.png
20020819_brovey8_2_4_5.wld переименовывается для piclayer в 20020819_brovey8_2_4_5.pgw
$ cat 20020819_brovey8_2_4_5.pgw
15
0
0
-15
438607.5
6932692.5
Квадратные пикселы по 15 метров, никакого вращения, верхний левый угол в центре верхнего левого пиксела
(сдвинут на пол-пиксела=7.5 метра относительно Upper Left/Origin ( 438600, 6932700), как и положено )
piclayer сохраняет для него следующий .cal файл (в новом формате)
$ cat 20020819_brovey8_2_4_5.png.cal
#JOSM PicLayer plugin calibration data
#Sat Jan 21 17:08:49 CET 2012
POSITION_Y=6739042.5
POSITION_X=590707.5
M12=0.0
M11=1499.0209994075628
M10=0.0
M02=0.0
INITIAL_SCALE=1.0
M01=-0.0
M00=1496.619909949947
POSITION_X, POSITION_Y совпадает с Center ( 590707.5, 6739042.5), единицы “метры”.
M00,M11 (единицы “сантиметры/пиксел”, но установив INITIAL_SCALE=100 можно использовать “метры/пиксел”).
Вопрос: почему M11 не равно М00 и не равно 15 метрам ?
4 сантиметра / пиксел вроде бы как не много, но на 26000 пикселах
набегает немалая ошибка.
Не стоит ли пересмотреть функцию getMetersPerEasting()
как слишком грубую ?
/**
* Returns the distance in meter, that corresponds to one unit in east north
* space. For normal projections, it is about 1 (but usually changing with
* latitude).
* For EPSG:4326, it is the distance from one meridian of full degree to the
* next (a couple of kilometers).
*/