Страница 1 из 2
NTv2
Добавлено: 20 фев 2020, 19:17
aspirant-1
Здравствуйте! Вопрос по созданию файлов .gsb для трансформации по NTv2 (извините, может некорректно выразился).
Как создать файл трансформации? У меня есть данные по координатным парам в разных СК (около 100 пар пунктов ГГС). Хотелось бы создать сетку, а не использовать пресловутые 7 параметров.
Есть ли какое-либо, позволяющее быстро создать такой грид?
Re: NTv2
Добавлено: 20 фев 2020, 20:42
Игорь Белов
Серьёзные люди, имея полные данные по исходным данным и измерениям в старой сети и в новой, используют коллокацию для совместного переуравнивания. По результатам получается поле деформаций вместе с оценками погрешностей. В нашем (то есть в Вашем) случае можно только симулировать эту деятельность.
- Создайте файл разностей долгот и широт.
- Постройте грид разностей долгот b1 и грид разностей широт b2. Предпочтительно использовать для этого функции Грина для сплайнов на сфере.
- Добавьте нулевые гриды погрешностей той же размерности b3 и b4.
- Создайте виртуальный четырёхканальный растр:
Код: Выделить всё
gdalbuildvrt -separate germany.vrt b1.nc b2.nc b3.nc b4.nc
- Конвертируйте его в формат NTv2:
Код: Выделить всё
gdal_translate -of NTv2 germany.vrt germany.gsb -mo VERSION=NTv2.0 -mo SYSTEM_F=DHDN90 -mo SYSTEM_T=ETRS89 -mo MAJOR_F=6377397.155 -mo MINOR_F=6356078.963 -mo MAJOR_T=6378137 -mo MINOR_T=6356752.314 -mo SUB_NAME=DHDN90 -mo CREATED=06-11-09 -mo UPDATED=06-11-09
Пример имитирует создание известной трансформации
DHDN to ETRS89 (8).
Re: NTv2
Добавлено: 02 мар 2020, 20:40
aspirant-1
Во-первых: спасибо за ответ!Есть ещё вопросы...
Игорь Белов писал(а): ↑20 фев 2020, 20:42Постройте грид разностей долгот b1 и грид разностей широт b2. Предпочтительно использовать для этого функции Грина для сплайнов на сфере.
Это можно сделать штатными инструментами QGIS? Нигде не могу найти такие модули.
Игорь Белов писал(а): ↑20 фев 2020, 20:42Добавьте нулевые гриды погрешностей той же размерности b3 и b4.
Т.е. просто создаю растр с нулевыми значениями пикселей в тех же размерах пикселей и в том же экстенте?
Re: NTv2
Добавлено: 03 мар 2020, 07:48
Игорь Белов
aspirant-1 писал(а): ↑02 мар 2020, 20:40Это можно сделать штатными инструментами QGIS?
Нет. Рекомендую модуль
greenspline из пакета
GMT.
aspirant-1 писал(а): ↑02 мар 2020, 20:40просто создаю растр с нулевыми значениями пикселей в тех же размерах пикселей и в том же экстенте?
Да.
Re: NTv2
Добавлено: 03 мар 2020, 15:42
aspirant-1
Скачал, установил. Все запускается. Создал файл вот такого вида
Код: Выделить всё
44.84362995277778 53.23528129166667 0.05757
44.86153118055556 53.12470514722222 0.05443
45.03488886111111 53.080609952777785 0.05417
45.29735655277778 53.23538368888889 0.05509
44.93713768333333 53.244917497222225 0.05810
"Долгота широта разница широт"
Вводил код из примеров, естественно названия файлов другие.
Код: Выделить всё
greenspline -V -Rg -Sp -D3 -I1 -GP1994.nc mag_obs_1990.txt
После интерполяции результат явно не верный, и нет пространственной привязки. Либо я не правильно входной файл подготовил, либо код неверный.
Re: NTv2
Добавлено: 03 мар 2020, 16:30
gamm
aspirant-1 писал(а): ↑03 мар 2020, 15:42После интерполяции результат явно не верный
Не очень понятно, об чем вы. В результате сетка, и отметки по осям (на всю сферу), все в hdf. Вы чего-то другого ожидали? я вашу табличку из сообщения отправил интерполировать ...
Код: Выделить всё
group name otype dclass dim
0 / lat H5I_DATASET FLOAT 181
1 / lon H5I_DATASET FLOAT 361
2 / z H5I_DATASET FLOAT 361 x 181

- grid.jpg (40.9 КБ) 8973 просмотра
Re: NTv2
Добавлено: 03 мар 2020, 16:44
aspirant-1
Эмм...А это интерполировались именно значения разностей широт? Которые 0.05757...? Просто я тоже получил такую же картинку. Но, как мне показалась, в QGIS она загрузилась без координат. А оказывается результат интерполяции 5 точек почти на мир? Правильно ли я понимаю подписи и шкалы осей?
Re: NTv2
Добавлено: 03 мар 2020, 17:02
gamm
Игорь Белов писал(а): ↑03 мар 2020, 07:48Рекомендую модуль greenspline
Игорь, а форматом вывода можно управлять? Он то HDF5 выводит, то черте-что (пробовал область поменять, в первых байтах получил CDF вместо HDF, но читалка read.cdffile.list его не распознает)
Re: NTv2
Добавлено: 03 мар 2020, 17:04
gamm
aspirant-1 писал(а): ↑03 мар 2020, 16:44А оказывается результат интерполяции 5 точек почти на мир
там ровно то, чего Вы просили,
RTFM
Re: NTv2
Добавлено: 03 мар 2020, 17:10
aspirant-1
gamm писал(а): ↑03 мар 2020, 17:04там ровно то, чего Вы просили, RTFM
Значит формат входных данных правильный? Ок, поэкспериментирую. Как я понял, там надо добавить ограничение на область интерполяции.
Re: NTv2
Добавлено: 03 мар 2020, 17:43
gamm
aspirant-1 писал(а): ↑03 мар 2020, 17:10Как я понял, там надо добавить ограничение на область интерполяции.
Ага, поскольку "The two shorthands -Rg and -Rd stand for global domain (0/360 and -180/+180 in longitude respectively, with -90/+90 in latitude)".
я попробовал менять область, тогда формат вывода поменялся зачем-то, я его не смог прочитать ...
Re: NTv2
Добавлено: 03 мар 2020, 18:51
Игорь Белов
Сделайте так:
Код: Выделить всё
gmt greenspline dlat.txt -R44.8/45.35/53/53.25 -I5m/3m -St0.2 -D4 -Gb2.nc
На выходе грид в замечательном формате netCDF. GDAL его знает, это главное.
P. S. Скорее всего, сеть неравномерная, где-то густо, где-то пусто. Перед использованием greenspline или surface не забывайте прогнать данные через модуль blockmean.
Re: NTv2
Добавлено: 03 мар 2020, 19:49
aspirant-1
5P. S. Скорее всего, сеть неравномерная, где-то густо, где-то пусто. Перед использованием greenspline или surface не забывайте прогнать данные через модуль blockmean
Да, Вы правы, сеть действительно неоднородна. Это связано с известными причинами - уничтоженные ГГС и т.п., сами представляете. Больше спасибо за консультацию. А что означает вот этот кусочек кода -I5m/3m ? Размер ячейки? NetCDF без проблем отображается в QGIS.
Re: NTv2
Добавлено: 03 мар 2020, 20:06
gamm
Игорь Белов писал(а): ↑03 мар 2020, 18:51На выходе грид в замечательном формате netCDF.
1) вопрос не в этом, вопрос в том, как управляется формат вывода, и на кой его менять. Единственное, что я нашел в доках - если задать сетку для интерполяции самому (-Nnet_file), то можно получить выхлоп в ASCII.
2) 2D интерполяция идет в градусах, но на сфере? Из документации непонятно. В общем исходники нужно читать, как всегда. Там правда, брат

Re: NTv2
Добавлено: 03 мар 2020, 20:11
Игорь Белов
aspirant-1 писал(а): ↑03 мар 2020, 19:49что означает вот этот кусочек кода -I5m/3m ?
Шаг грида в угловых минутах 5′ по X и 3′ по Y: