Страница 1 из 1

[Мастер-класс] Создание местных СК в QGIS

Добавлено: 15 ноя 2015, 23:29
Игорь Белов
Название мастер-класса: Создание координатных систем города и линейного объекта в QGIS
Мы построим две проекции, представляющие в QGIS местные системы координат населённого пункта и аэродрома, используя консольные утилиты.

Требования: Ноутбук под Linux или Windows, QGIS с плагином OpenLayers или QuickMapServices.
При решении первой задачи мы используем PROJ.4, программку helmkey для вычисления параметров конформного преобразования, электронные таблицы.
Для решения второй задачи понадобятся PROJ.4 версии 4.9, блокнот, калькулятор.
Данные будут представлены на конференции. Также будут представлены утилита helmkey и пакет proj-4.9.2 в исходниках и скомпилированные под Windows (proj-4.9.2 под Linux рекомендуется скомпилировать заранее из исходников, лежащих здесь: http://download.osgeo.org/proj/).
Данные и необходимые утилиты выложены здесь. Содержимое архива:

archive.html - содержимое архива
--- Исходные данные для городской СК ---
cat_local.dat - каталог пунктов в местной СК
cat_s42z4.dat - каталог в государственной СК
--- Исходные данные для СК аэродрома ---
dist.dat - длина ВПП
ends.dat - координаты концов оси ВПП
--- Утилита helmkey ---
helmkey.c - исходные коды
helmkey.exe - исполняемый модуль MS Windows
Makefile - makefile
--- proj-4.9.2 ---
proj-4.9.2-win32.7z - бинарные файлы для MS Windows
proj-4.9.2.tar.gz - исходные коды
--- Карта в городской СК ---
town.dbf
town.qml
town.shp
town.shx

Утилита helmkey вычисляет параметры конформного преобразования. Исполняемый модуль для Linux компилируется командой make; для Windows он уже готов.

Для создания СК линейного объекта необходим пакет PROJ.4 версии 4.9, т. к. начиная с этой версии утилита geod вычисляет ПГЗ и ОГЗ на эллипсоиде.
Исходники proj-4.9.2 взяты отсюда или отсюда.
Бинарники под Linux необходимо скомпилировать заранее; для Windows они скомпилированы из исходников, взятых здесь.

Re: [Мастер-класс] Создание местных СК в QGIS

Добавлено: 18 ноя 2015, 07:24
Филиппов Владислав
хотел бы уточнить, т.к. не собирал ничего из исходников.

в synaptic я увидел что у меня установлена proj-4.8.0-5
я скачал указанный выше архив (Данные и необходимые утилиты выложены здесь.)
распаковал, в полученной директории распаковал proj-4.9.2.tar.gz.
внутри /proj-4.9.2.tar выполнил:

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

$ ./configure
$ make
$ sudo make install
это я увидел тут


далее поднялся на уровень вверх и выполнил как проверить что я всё сделал верно?
при компиляции proj-4.9.2 ошибок в консоли я не увидел.

Re: [Мастер-класс] Создание местных СК в QGIS

Добавлено: 18 ноя 2015, 08:24
Игорь Белов
В целом вы действуете правильно. В исходниках имеется файл INSTALL с подробным описанием действий.
По умолчанию пакет устанавливается в /usr/local, и в системе остаются также модули прежней версии. Во-первых, узнаем, откуда запускаются модули:

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

which geod
Во-вторых, каждый из модулей proj, cs2cs, geod выводит при запуске версию. Если запускается версия 4.8, запустим 4.9, указав полный путь:

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

/usr/local/bin/geod
Или исправим системную переменную PATH, поставив /usr/local/bin перед прочими:

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

export PATH="/usr/local/bin:$PATH"
Лично я в подобных случаях стараюсь не устанавливать библиотеки в систему, ставлю в пользовательское дерево. Для этого configure запускаю с параметром:

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

./configure --prefix=/home/<имя-пользователя>
или ещё какой путь в своих директориях. Далее как обычно:

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

make
make check
make install

Re: [Мастер-класс] Создание местных СК в QGIS

Добавлено: 18 ноя 2015, 08:41
Филиппов Владислав
тогда ещё вопрос. как удалить, то что я сделал?
хочу переустановить у себя в home вот так:

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

./configure --prefix=/home/<имя-пользователя>
ибо не работает

Re: [Мастер-класс] Создание местных СК в QGIS

Добавлено: 18 ноя 2015, 09:11
Игорь Белов
Специальных средств деинсталляции нет. А что именно не работает?

Предположим, PROJ.4 установлена в /usr/local.

1

Если жалобы на библиотеки, задайте системную переменную PROJ_LIB:

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

export PROJ_LIB=/usr/local/share/proj
2

Если /usr/local/bin отсутствует в PATH, забудьте об инсталляции, она не мешает. Общий объём файлов невелик.

3

Если у Вас Ubuntu, в /usr/local, скорее всего, только PROJ.4. Убедитесь в этом (сравните с содержимым бинарников для Windows). Если так, удалите всю ветку

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

sudo -rf /usr/local
или директории с содержимым внутри.

Re: [Мастер-класс] Создание местных СК в QGIS

Добавлено: 18 ноя 2015, 09:26
Филиппов Владислав
запускаю /usr/local/bin/geod
получаю:
error while loading shared libraries: libproj.so.9

/usr/local/bin есть в PATH

у меня Debian 8.1

Re: [Мастер-класс] Создание местных СК в QGIS

Добавлено: 18 ноя 2015, 09:39
Александр Мурый
Что выдают команды

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

ldd /usr/local/bin/geod
и

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

locate libproj.so
?

Re: [Мастер-класс] Создание местных СК в QGIS

Добавлено: 18 ноя 2015, 09:42
Александр Мурый
У меня в Debian с репозиториями stretch/sid (testing/unstable) есть пакет "proj-bin" версии 4.9.2-1 и библиотека "libproj9" (как его зависимость).

Re: [Мастер-класс] Создание местных СК в QGIS

Добавлено: 18 ноя 2015, 10:21
Denis Rykov
У меня тоже был старый proj.4, но собралось всё без проблем:

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

$ git clone git@github.com:OSGeo/proj.4.git
$ cd proj.4
$ git checkout 4.9
$ ./configure --prefix=/home/rykov/proj4.9
$ make
$ make install
$ ~/proj4.9/bin/geod
Rel. 4.9.0, 13 September 2014
usage: geod [ -afFIptTwW [args] ] [ +opts[=arg] ] [ files ]
Владислав, если хотите удалить то, что поставилось в /usr/local, то вот список файлов, которые ставит proj4:

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

$ tree ~/proj4.9/
/home/rykov/proj4.9/
├── bin
│   ├── cs2cs
│   ├── geod
│   ├── invgeod -> geod
│   ├── invproj -> proj
│   ├── nad2bin
│   └── proj
├── include
│   ├── geodesic.h
│   ├── org_proj4_PJ.h
│   ├── org_proj4_Projections.h
│   ├── proj_api.h
│   └── projects.h
├── lib
│   ├── libproj.a
│   ├── libproj.la
│   ├── libproj.so -> libproj.so.0.8.0
│   ├── libproj.so.0 -> libproj.so.0.8.0
│   ├── libproj.so.0.8.0
│   └── pkgconfig
│       └── proj.pc
└── share
    ├── man
    │   ├── man1
    │   │   ├── cs2cs.1
    │   │   ├── geod.1
    │   │   └── proj.1
    │   └── man3
    │       ├── geodesic.3
    │       └── pj_init.3
    └── proj
        ├── CH
        ├── epsg
        ├── esri
        ├── esri.extra
        ├── GL27
        ├── IGNF
        ├── nad27
        ├── nad83
        ├── nad.lst
        ├── ntf_r93.gsb
        ├── ntv1_can.dat
        ├── null
        ├── nzgd2kgrid0005.gsb
        ├── other.extra
        ├── proj_def.dat
        └── world

9 directories, 38 files

Re: [Мастер-класс] Создание местных СК в QGIS

Добавлено: 18 ноя 2015, 11:33
Филиппов Владислав

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

filippov@voidbook:~$ ldd /usr/local/bin/geod
	linux-vdso.so.1 (0x00007ffe0af1b000)
	libproj.so.9 => not found
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f317eb3b000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f317e83a000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f317e491000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f317ed58000)
filippov@voidbook:~$ locate libproj.so
/usr/lib/libproj.so.0
/usr/lib/libproj.so.0.7.0

Re: [Мастер-класс] Создание местных СК в QGIS

Добавлено: 18 ноя 2015, 14:01
Александр Мурый
Владислав, а если добавить каталог /usr/local/lib в "LD_LIBRARY_PATH"? Скорее всего, именно туда установилась библиотека "libproj.so.9".

Re: [Мастер-класс] Создание местных СК в QGIS

Добавлено: 19 ноя 2015, 17:15
Филиппов Владислав

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

filippov@voidbook:/usr/local/lib$ export LD_LIBRARY_PATH=/usr/local/lib
filippov@voidbook:/usr/local/lib$ /usr/local/bin/geod
Rel. 4.9.2, 08 September 2015
usage: geod [ -afFIptTwW [args] ] [ +opts[=arg] ] [ files 
всем большое спасибо
в следующий раз буду ставить в home

Re: [Мастер-класс] Создание местных СК в QGIS

Добавлено: 25 ноя 2015, 11:19
Филиппов Владислав
очень жду видео с мастер-класса!

Re: [Мастер-класс] Создание местных СК в QGIS

Добавлено: 27 ноя 2015, 16:32
Донецков
Если будет видео, то замечательно...