Может ли сервер QGIS читать проекты из базы данных

#database #postgresql #server #project #qgis

#База данных #postgresql #сервер #проект #qgis

Вопрос:

У меня работает сервер QGIS. Стандартная функциональность заключается в добавлении ?map=path/to/projectfile .qgs на URL-адрес сервера. Таким образом, вы можете динамически переключаться между проектами в своем веб-приложении. Теперь я создаю свои проекты и загружаю свой файл проекта на сервер, чтобы заставить их работать в моем приложении. Это работает нормально.

Но я также могу сохранить проект в базе данных. Было бы намного лучше, если бы я мог указать своему приложению использовать проект из моей базы данных. Пропуск громоздкой процедуры обновления файлов.

Исследуя это, я наткнулся на эту информацию из документации QGis: https://docs.qgis.org/3.16/en/docs/server_manual/config.html в разделе: 5.2. Переменные среды я вижу следующую информацию:

QGIS_PROJECT_FILE

Файл проекта .qgs или .qgz, обычно передаваемый в качестве параметра в строке запроса (с MAP), вы также можете установить как переменную среды (например, с помощью модуля mod_rewrite Apache). postgresql: // localhost:5432?sslmode=отключитьamp;dbname=mydbamp;schema=myschemaamp;project=myproject

Таким образом, вы можете указать на projectfile в базе данных для projectfile по умолчанию. Но это не то, чего я хочу. Я хочу сделать это динамически.

Я хочу иметь что-то вроде ?map=projectfile_in_my_database . И укажите в моем conf / environment на сервере, где они хранятся в de DB.

Возможно ли это?

Ответ №1:

Вы можете использовать файлы проекта, хранящиеся в базе данных (в моем случае это postgres). Как я это сделал.

  1. Я создал файл pg_service в домашнем каталоге, который содержит учетные данные для подключения к базе данных, и позволил нам подключиться к базе данных, просто указав имя службы, например, с помощью psql вы можете подключиться psql service=myservicename и установить параметры fastcgi в nginx fastcgi_param PGSERVICEFILE /home/qgis/.pg_service.conf;
  2. Я подключился с рабочего стола qgis к базе данных postgres, указав имя службы, которое я установил в файле службы.
  3. Сохраненный файл проекта в базе данных. Делая это, как этот файл проекта будет содержать подключение к базе данных через имя службы.
  4. Установите fastcgi_param для имени проекта
 location / {
    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
    add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
    gzip           off;
    include        fastcgi_params;
    fastcgi_param  QGIS_PROJECT_FILE postgresql:///?service=myservicenameamp;schema=publicamp;project=testproject;
    fastcgi_pass   unix:/var/run/fcgiwrap.socket;;
    }
 
  1. Проект qgis по умолчанию вы можете установить во интерфейсе вашего веб-приложения через URL, это не сложно.