Привязка в QGIS (Исправление плагина Georeferencer)

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
Lynx
Интересующийся
Сообщения: 29
Зарегистрирован: 04 ноя 2008, 00:40
Репутация: 0

Привязка в QGIS (Исправление плагина Georeferencer)

Сообщение Lynx » 05 ноя 2008, 20:36

Здесь была затронута проблема привязки карт в QGIS. Но в этой теме было найдено решение о выполнении привязки с помощью скрипта с использованием gdal. Так же здесь пришли к выводу, что алгоритм преобразования Гельмерта реализован из рук вон плохо. Поэтому я бы хотел попробовать исправить его, и для этого было бы неплохо посмотреть на данные, которые точно не преобразовываются этим плагином. Если у кого они есть, выложите, пожалуйста, их здесь :)

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Привязка в QGIS (Исправление плагина Georeferencer)

Сообщение Максим Дубинин » 05 ноя 2008, 22:19

было бы здорово, если привязка в QGIS делалась с помощью GDAL.

Вот мой пример: http://gis-lab.info/other/qgis-gdal-georef.zip
В нем:
test.tif - исходный растр
test.tif.points - точки привязки собранные с пом. QGIS Georeferencer
test-helmert.tif - результат привязки по этим точкам с пом. QGIS Georeferencer (плохой)
gdal.txt - преобразованные точки (локальная СК в GDAL - другой отсчет оси Y, надо Y*-1)
test-gdal.tif - результат привязки по этим точкам с пом. gdalwarp (хороший)
Вложения
test.tif
привязываемый файл - отдельно
test.tif (6.54 МБ) 21928 просмотров
пристегивайтесь, турбулентность прямо по курсу

Lynx
Интересующийся
Сообщения: 29
Зарегистрирован: 04 ноя 2008, 00:40
Репутация: 0

Re: Привязка в QGIS (Исправление плагина Georeferencer)

Сообщение Lynx » 07 ноя 2008, 04:14

у меня получилось переделать плагин так, чтобы вычисления проводились в gdal (но это пока бэта, бэта версия :) ).

Чтобы собрать из них модуль, в каталоге с исходниками qgis, где находятся исходники плагина georeferencer (qgis/src/plugins/georeferencer) скопируйте эти файлы и CMakeList.txt. Затем в этой директории выполните:

Код: Выделить всё

mkdir build && cd build && cmake ..
и если все пройдет нормально, скопируйте полученный модуль libgeorefplugin.so в /usr/local/lib/qgis (или в директорию где у вас плагины qgis)
Вложения
georeferencer.tar.gz
(722.07 КБ) 2388 скачиваний
CMakeLists.txt
(1.6 КБ) 2347 скачиваний
Последний раз редактировалось Максим Дубинин 07 ноя 2008, 04:34, всего редактировалось 2 раза.
Причина: объединил в одно сообщение, а то глаза разбегались

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Привязка в QGIS (Исправление плагина Georeferencer)

Сообщение Максим Дубинин » 07 ноя 2008, 04:39

Отличная новость! Пошел обновлять Ubuntu.

Какой именно алгоритм реализован полином 1 порядка, 2 порядка?
Изменялись ли окна QT-шные или только код?
пристегивайтесь, турбулентность прямо по курсу

Lynx
Интересующийся
Сообщения: 29
Зарегистрирован: 04 ноя 2008, 00:40
Репутация: 0

Re: Привязка в QGIS (Исправление плагина Georeferencer)

Сообщение Lynx » 07 ноя 2008, 10:26

Реализован алгоритм, в котором полином 1 порядка, но это не проблема добавить полиномы 2-го и 3-го порядок (для их реализации нужно соответственно минимум 6 и 10 точек). Я сделаю это позже, так как нужно будет немного подправить гуи.

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Привязка в QGIS (Исправление плагина Georeferencer)

Сообщение Максим Дубинин » 12 ноя 2008, 09:00

Ubuntu 8.10
QGIS 1.0.0-preview2, установлен из бинарников

делаю svn checkout нового модуля, потом ccmake ..
выдает ошибку, содержание в прицепе, еще, правильно ли я понимаю что CMakeLists.txt должен лежать на уровень выше той директории, куда был сделан checkout?
Вложения
cmake.txt
(1.3 КБ) 2564 скачивания
пристегивайтесь, турбулентность прямо по курсу

Lynx
Интересующийся
Сообщения: 29
Зарегистрирован: 04 ноя 2008, 00:40
Репутация: 0

Re: Привязка в QGIS (Исправление плагина Georeferencer)

Сообщение Lynx » 12 ноя 2008, 20:52

И так, рассказываю как установить дополненный плагин:

Код: Выделить всё

cd $HOME
svn co https://svn.osgeo.org/qgis/tags/Release-1_0_0-preview2
cd QGIS_Release-1_0_0-preview2/src/plugins/
svn co http://svn.gis-lab.info/qgis-gdal-georef georefext
cd georefext
mkdir build
cd build
cmake ..
make
cp libgeorefplugin.so ${Путь к плагинам QGIS}/libgeorefpluginext.so
дальше при запуске qgis добавляем его, он называется Georeferencer GDAL.
В Slackware 12.1 плагины QGIS лежат здесь (при установки через пакетный менеджер): /usr/lib/qgis

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Привязка в QGIS (Исправление плагина Georeferencer)

Сообщение Максим Дубинин » 14 ноя 2008, 03:31

Все установил. Переименовал старый georeferencer, чтоб не мешался. Запускаю qgis, открываю новое расширение, загружаю растр, qgis вылетает с таким сообщением:

Код: Выделить всё

Critical: QgsCoordinateReferenceSystem::createFromWkt -- theWkt is uninitialised, operation failed
Critical: QgsCoordinateReferenceSystem::createFromWkt -- theWkt is uninitialised, operation failed
/usr/bin/qgis.bin: symbol lookup error: /usr/lib/qgis/libgeorefpluginext.so: undefined symbol: _ZN12QgsMapCanvas9setExtentERK7QgsRect
пристегивайтесь, турбулентность прямо по курсу

Lynx
Интересующийся
Сообщения: 29
Зарегистрирован: 04 ноя 2008, 00:40
Репутация: 0

Re: Привязка в QGIS (Исправление плагина Georeferencer)

Сообщение Lynx » 14 ноя 2008, 20:31

Это сообщение вылетает потому, что в динамической библиотеки плагина нет связи с какой-то из функций qgis или других приложений и библиотек. И связано с тем, что плагин был неверно собран. (Но предупреждаю это мое предположение). Поэтому для тестирования плагина лучше всего собрать qgis самостоятельно из исходников с svn по этой инструкции.
После сборки я предполагаю, что вы находитесь в директории qgis_0_11_0/build. И выполните от сюда эти команды:

Код: Выделить всё

rm -rfv src/plugins/georeferencer
cd ../src/plugins/
rm -rvf georeferencer
svn co http://svn.gis-lab.info/qgis-gdal-georef/ georeferencer
cd -
make georefplugin
rm ~/apps/lib/qgis/libgeorefplugin.so
cp -v src/plugins/georeferencer/libgeorefplugin.so $HOME/apps/lib/qgis/
можно сделать из них простой скрипт:
созраните его в директории qgis_0_11_0/build, потом

Код: Выделить всё

mv georefinstall.cpp georefinstall.sh
chmod 755 georefinstall.sh
sudo ./georefinstall.sh
Вложения
georefinstall.cpp
(249 байт) 2298 скачиваний

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Привязка в QGIS (Исправление плагина Georeferencer)

Сообщение Максим Дубинин » 16 ноя 2008, 08:35

все установилось и работает, в целом - отлично! просто отлично, нет слов. Попробовал на тестовом файле, все работает как надо. За исключением бага с 6 точками для второго полинома, который мы сами пока решить не можем.

Пара предложений:

1. расширение World-file хорошо бы автоматически менять по этой схеме и сделать неизменяемым, смысла хранить его с другим именем чем у растрового файла - нет, по идее, все поле World-file можно заменить на чек-бокс, включить или выключить или например заблокировать возможность изменить сам текст для world-file и убрать кнопку ...
2. в gdalwarp, результат можно создавать с TFW=YES
3. хорошо бы добавить опцию -tps (thin-plate splines)

про интерфейс

- хорошо бы сделать окна Georeferencer и Reference points сворачиваемым (минимизируемыми)
пристегивайтесь, турбулентность прямо по курсу

Lynx
Интересующийся
Сообщения: 29
Зарегистрирован: 04 ноя 2008, 00:40
Репутация: 0

Re: Привязка в QGIS (Исправление плагина Georeferencer)

Сообщение Lynx » 17 ноя 2008, 21:56

Спасибо, я старался :). По предложениям:
1. Сделал так, чтобы расширение world - файла по умолчанию было не wld, а как в указанной схеме.
2. Добавил возможность привязки на основе контрольных точек и Thin-plate splines.
3. Добавил минимизацию в окна.
Есть еще предложения по улучшению?

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Привязка в QGIS (Исправление плагина Georeferencer)

Сообщение Максим Дубинин » 18 ноя 2008, 07:16

хорошо!
Дальше - не очень понимаю, зачем первоначальные авторы окно привязки разделили на два, сложно ли будет упаковать два окна привязки в одно? Т.е. добавить строку "source raster" из маленького окошка в главное окно и динамически менять его содержимое при подгрузке растра. Кнопку arrange windows можно нафиг снести. А кнопку About вынести в меню.
пристегивайтесь, турбулентность прямо по курсу

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Привязка в QGIS (Исправление плагина Georeferencer)

Сообщение Максим Дубинин » 28 ноя 2008, 10:10

в окне About нужно:
- изменить название расширения на Georeferencer GDAL
- приписать Based on original Georeferencer Plugin
- Tim'a можно убрать
- ссылку на сам qgis - тоже
- ссылку на гислаб оставить как есть, но отправлять вот на такую:
http://gis-lab.info/qa/qgis-georef-new-eng.html
пристегивайтесь, турбулентность прямо по курсу

Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя