Notes |
|
|
Для начала советую выяснить у людей знающих хоть что-то про ArcMap чем же ему конкретные файлы не нравятся и сообщить сюда результаты. Советую заняться этим если вас интересует результат, так как я ArcMap никогда не видел и ставить что бы разобраться не собираюсь. |
|
|
|
О, меня тоже замучила эта проблема с некорректной привязкой JP2-файлов, склеенных САС-ом. Global Mapper тоже открывает их с переподвыподвёртом каким-то... :(
Скриншот прикрепил. |
|
|
(0017289)
|
zed
|
02-06-2016 13:48
|
|
В чём заключается некорректность привязки? Проблема была всегда или появилась в какой-то момент (какой)? |
|
|
|
В чём заключается некорректность привязки? Проблема была всегда или появилась в какой-то момент (какой)?
В том, что JPEG2000 из САС-а криво ложатся на карту мира. Остальные форматы,типа ECW, отображаются нормально. Думаю, дело в некорректном заполнении метаданных, в теле JP2-файла, поскольку сопутствующие файлы привязки, типа*.map или *.w совершенно корректны. И эта проблема была всегда и во всех версиях САС, которыми я пользовался. Откопал версию 101206 — так JP2-файлы из неё пусть и не "гнутся" причудливым образом, но поворачивается на некоторый угол. Прикрепляю ещё скрин, со всем этим безобразием.
Повторюсь: с другими форматами таких проблем нет. |
|
|
|
>Остальные форматы,типа ECW, отображаются нормально
Очень интересно. В САС экспорт в JPEG2000 сделан при помощи библиотек экспорта в ECW. Там, насколько я помню, только расширение создаваемого файла отличается, а все остальное абсолютно одинаково. |
|
|
(0017297)
|
zed
|
02-06-2016 21:54
|
|
GlobalMapper 9 при открытии файла пишет, что ему не удаётся распознать датум и проекцию и просит указать руками, после чего отображает картинку абсолютно нормально. А вот новые версии (тестил на 14) распознают проекцию автоматом, но картинка кривая.
Заметил, что GM9 использует ECW версии 3.3.0.188, в составе GM14 лежит аж 2 версии: 3.1.0.350 и 4.2.1.128.
А вот в SAS какая-то чертовщина:
- NCScnet и NCSUtil версии 1.0.0.1
- NCSEcw версии 3.1.0.350
- NCSEcwC без версии, но в хидерах сгенерированного jp2 записано, что версия компрессора 3.3.0.116
Заменил в SAS все ECW либы на версию 3.3.0.188 из GM9 и баг пропал!
Вот что пишется в хидеры сейчас:
<gml:coordinates>3828302.7344421418000,5753917.3905314533000</gml:coordinates>
<gml:offsetVector gml:id="p1">-0.9411437541010,-0.7353020875558,0.0000000000000</gml:offsetVector>
<gml:offsetVector gml:id="p2">0.7353020875557,-0.9411437541011,0.0000000000000</gml:offsetVector>
fOriginX: 3827488.645095
fOriginY: 5753281.354226
fCellIncrementX: 1.194329
fCellIncrementY: -1.194329
fCWRotationDegrees: -52.000000
szProjection: EPSG:3785
szDatum: EPSG:6055
А вот, что стало после замены либ ECW:
<gml:coordinates>3827488.6450948445000,5754314.4484361345000</gml:coordinates>
<gml:offsetVector gml:id="p1">0.0000000000000,-1.1943285669561,0.0000000000000</gml:offsetVector>
<gml:offsetVector gml:id="p2">1.1943285669560,0.0000000000000,0.0000000000000</gml:offsetVector>
fOriginX: 3827488.645095
fOriginY: 5753281.354226
fCellIncrementX: 1.194329
fCellIncrementY: -1.194329
fCWRotationDegrees: 0.000000
szProjection: EPSG:3785
szDatum: EPSG:6055
|
|
|
(0017298)
|
zed
|
02-06-2016 21:58
|
|
Заменить либы до релиза 160606 или после? |
|
|
(0017302)
|
zed
|
03-06-2016 07:59
|
|
А нет, заменять нельзя. У нас лежат патченные либы ECW, без ограничений на размер растра, а если взять от GM9, то оно не даёт склеить большие растры (вываливается ошибка 54). |
|
|
|
Ну, тогда откладываем это в долгий ящик. Если вдруг найдутся патченные длл более поздней версии, тогда и поменяем. |
|
|
(0017304)
|
zed
|
03-06-2016 09:17
|
|
Как вариант, после создания растра можно либо вырезать из него всю геопривязку, либо исправить её (там GeoTiff + дублирование в xml). |
|
|
|
В любом случае это не на ближайший релиз. |
|
|
(0017311)
|
zed
|
06-06-2016 18:58
|
|
Нашёл сорцы ecw, в них нашёл баг, пофиксил его и пересобрал либы. Баг жил в NCSEcwC.dll (была упущена инициализация поля структуры).
Можно было ограничиться пересборкой только этой либы, но под рукой не было 2003-й студии, поэтому пересобрал всё в 2008-й. Если багов не будет (с ECW и JPEG2000), то ОК, в противном случае могу вернуть старые либы, пересобрав только NCSEcwC.
Тестируйте следующую ночнушку. |
|
|
(0017312)
|
zed
|
06-06-2016 19:24
(edited on: 06-06-2016 19:25) |
|
|
|
(0017313)
|
zed
|
08-06-2016 09:51
|
|
Жду хоть какого-нибудь отзыва. На малых размерах я протестировал, проверьте какое поведение будет при склейке огромных растров? |
|
|
|
Склеил в JP2 растр размерами 131072х131072, весь мир в z10, в меркаторской проекции (EPSG:3875) — он ложится нормально, разрешение указано корректно.
А вот с проекцией широта-долгота (EPSG:4326) хоть и склеивает в JP2 любых размеров, но привязка опять неверная. Скорее всего неправильно указано разрешение: оно неправдоподобно велико, и одинаковое вне зависимости от масштаба склейки.
ECW "садится" правильно в любой проекции, но разрешение тоже неверное.
Версия программы 131111.7624, с обновленными либами.
Вот хидер JP2 склеенного на z6, размеры растра 8192х4096:
<gml:coordinates>-180.0000000000000,270.0000000000000</gml:coordinates>
<gml:offsetVector gml:id="p1">0.0000000000000,-0.0439453125000,0.0000000000000</gml:offsetVector>
<gml:offsetVector gml:id="p2">0.0439453125000,0.0000000000000,0.0000000000000</gml:offsetVector>
fOriginX: -180.000000
fOriginY: 90.000000
fCellIncrementX: 0.043945
fCellIncrementY: -0.043945
fCWRotationDegrees: 0.000000
szProjection: EPSG:4326
szDatum: EPSG:6326
|
|
|
(0017316)
|
zed
|
08-06-2016 18:34
|
|
> Версия программы 131111
Обновитесь.
И не понятно, если "садится" правильно, то в чём проблема?
Что записывается в world файл, если включить его создание? Там, по-идее, должно быть то же самое. |
|
|
(0017317)
|
zed
|
08-06-2016 18:38
|
|
И ещё: в географической проекции юниты в градусах, а у меркатора в метрах. Естественно, будет отличие в порядке величин. |
|
|
|
И не понятно, если "садится" правильно, то в чём проблема?
В lat/lon правильно "садится" только ECW.
А JP2, склеенный в lat/lon, "улетает" куда-то в точку с нулевыми координатами.
Что записывается в world файл, если включить его создание? Там, по-идее, должно быть то же самое.
В world-файле прописывается всё то же самое, да. |
|
|
(0017319)
|
zed
|
08-06-2016 19:09
(edited on: 08-06-2016 19:10) |
|
Да, какая-то фигня. При открытии в GlobalMapper jp2 в lat/lon он пишет, что там юниты метры. Похоже на ещё один баг в либах ECW, теперь с привязкой при записи GeoTiff. Я на такое, кстати, только что при экспорте в Tiff наступил. Тоже поначалу метры записал.
Вот что там в GeoTiff (который в хидерах jp2) залетает:
Exif Byte Order : Little-endian (Intel, II)
Photometric Interpretation : BlackIsZero
Strip Offsets : 929
Rows Per Strip : 1
Strip Byte Counts : 1
X Resolution : 1
Y Resolution : 1
Resolution Unit : None
Pixel Scale : 1.07288360595703e-005 1.07288360595703e-005 0
Model Tie Point : 0 0 0 34.3829154968262 45.8308303356171 0
Geo Tiff Version : 1.1.0
GT Model Type : Projected
GT Raster Type : Pixel Is Area
Warning : Missing string data for GTCitation
Projected CS Type : Unknown (4326)
Proj Linear Units : Linear Meter
Image Size : 1621x603
тут строчка "Proj Linear Units : Linear Meter" совсем не к месту.
Придётся опять либу пересобирать :(
|
|
|
(0017320)
|
zed
|
08-06-2016 21:52
|
|
Пофиксил. Обошлось изменениями в SAS, так что тестируйте ночнушку. |
|
|
|
Потестил ночнушку. Теперь JP2, склеенный в lat/lon, открывается и "садится" в GM совершенно корректно. Крупные растры создаются вроде нормально.
Спасибо! |
|