2.12. Модули расширения

2.12.1. Общие сведения

Имеются следующие модули расширения для увеличения функциональных возможностей программного обеспечения:

  1. Подложки - добавляется возможность выбора подложки по умолчанию и просмотр перечня имеющихся подложек, возможность выбора из готового списка адресов сервисов.
  2. Дополнительный экспорт - возможность экспорта векторных слоев в разные форматы (ESRI шейп-файл, MapInfo tab и др.)
  3. Наборы файлов (nextgisweb_filebucket) - добавляется поддержка наборов файлов, позволяет загружать любые файлы, не обязательно геопространственные.
  4. Фильтрация - добавляется возможность фильтрации по атрибутам и пространственному охвату.
  5. Mapnik - добавляется отрисовка карт при помощи Mapnik рендерера.
  6. QGIS - добавляется отрисовка карт помощи QGIS рендерера.
  7. MapServer - добавляется отрисовка карт при помощи MapServer рендерера.
  8. Логгирование - добавляется возможность для записи различных сообщений в логе.
  9. Mobile debug - добавляется возможность для получения и систематизации отладочной информации NextGIS Mobile SDK.
  10. Редактирование в браузере - возможность редактирование данных прямо в браузере
  11. Векторные тайлы - поддержка интерфейса MVT и соответствующих стилей.

Обратите внимание, что при использовании этих модулей может понадобится дополнительная доработка (обновление до актуальных версий, интеграция с новыми возможностями ядра и т.д.).

2.12.2. Добавление нового модуля расширения

Рассмотрим пример добавления нового модуля расширения на базе nextgisweb_filebucket. Для этого необходимо выполнить ряд шагов.

  1. Выполнить команду, которая скачает исходные коды модуля на сервер, где установлен NextGIS Web:
git clone https://github.com/nextgis/nextgisweb_filebucket.git
  1. Установить модуль расширения в NextGIS Web:
env/bin/pip install -e ./nextgisweb_filebucket
  1. Создать необходимые директории (опционально):
mkdir file_bucket
  1. Изменить файл конфигурации (опционально):
nano config.ini

Пример внесения изменений файл конфигурации см. ниже:

[file_bucket]
path =  /home/username/ngw/file_bucket
  1. Переинициализировать базу данных NextGIS Web:
env/bin/nextgisweb --config config.ini initialize_db
  1. Перезапустить сервис NextGIS Web, чтобы изменения вступили в силу.

2.12.3. Установка NextGIS Web QGIS

Для установки модуля рендеринга с помощью QGIS необходимо, чтобы в системе уже был установлен QGIS версии 2.8 и выше.

cd ~/ngw
git clone https://github.com/nextgis/nextgisweb_qgis.git
source env/bin/activate
pip install -e nextgisweb_qgis/

QGIS и зависимости PyQT4 не перечисляются в setup.py потому что их сложно устанавливать в virtualenv. Поэтому просто копируем эти библиотеки из системных пакетов в virtualenv. Обычно они находятся в пакетах python-sip, python-qt4 и python-qgis.

# DST should point to virtualenv site-packages directory.
# If it is point to another place you have to modify DST definition.
# For example: DST=`python -c "import sys; print sys.path[-2]"`
DST=`python -c "import sys; print sys.path[-1]"`
echo $DST
cp `/usr/bin/python -c "import sip; print sip.__file__"` $DST
cp -r `/usr/bin/python -c "import PyQt4, os.path; print os.path.split(PyQt4.__file__)[0]"` $DST
cp -r `/usr/bin/python -c "import qgis, os.path; print os.path.split(qgis.__file__)[0]"` $DST

Для версии QGIS 2.16 и выше:

# Only for latest QGIS version (2.16 and higher)
export PYTHONPATH=$PYTHONPATH:/usr/share/qgis/python
cp -r `/usr/bin/python -c "import PyQt4, os.path; print os.path.split(PyQt4.__file__)[0]"` $DST

Настройки uWSGI

Необходимо добавить параметр –lazy-apps, в этом случае приложение будет загружено после основного и каждый воркер получит свой поток.

[uwsgi]
lazy-apps = True

Имейте в виду, что существует так же более старый параметр lazy, использование которого не рекомендуется.

Если вы получаете ошибку: ERROR: Auth db directory path could not be created , то вам нужно указать папку, где находится существующий или создаётся заново файл qgis-auth.db. Эта папка должна иметь права на запись для пользователя процесса uwsgi. Например:

[uwsgi]
env = QGIS_AUTH_DB_DIR_PATH=/var/www

Если у вас проблемы с кириллицей в подписях, задайте системную переменную:

environment = LC_ALL="en_US.UTF-8"