marisn / gislab-web

New generation of GIS.lab Web and Mobile clients

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GIS.lab Web New Generation (in development)

New generation of GIS.lab Web infrastructure for publishing QGIS projects in Web.

Features

GIS.lab QGIS plugin

  • building GIS.lab Web bundle from any QGIS Desktop project
  • adding base layers
  • creating topics from layers list
  • setting access constraints
  • setting project expiration

GIS.lab Web QGIS plugin (Base Layers) GIS.lab Web QGIS plugin (Project)

GIS.lab Web

  • responsive web design
  • topics
  • base and overlay layers
  • legend
  • identification (WFS)
  • attribute table data filtering (WFS)
  • measurement - coordinates, length, area
  • print

GIS.lab Web (Basic UI) GIS.lab Web (Attributes)

GIS.lab Web User Console

TODO: screenshot

  • projects and OWS services management

GIS.lab Mobile

TODO: screenshot

  • dedicated hybrid Android client interface built on top of the same code base as web inteface with native UI

Tiles cache

  • built-in automatic tiles caching

Work flow

  • create any project in QGIS Desktop
  • install QGIS GIS.lab Web plugin and run wizard to publish QGIS project
  • copy QGIS project with all associated data to GIS.lab Web server
  • open GIS.lab Web User Console and launch published project in web interface
  • optionaly install and use GIS.lab Mobile (Android) client interface

Technologies

  • QGIS Desktop and Mapserver
  • OpenLayers 3
  • AngularJS, Angular UI, Angular Material
  • Onsen
  • Cordova
  • Django
  • Python

Source code layout

  • clients: web and mobile client interfaces
  • server: Django server
  • qgis: QGIS plugin
  • provision: development environment provisioning configuration (Vagrant/Ansible)
  • dev: development directory
  • dev/django: directory for Django development project created during provisioning
  • dev/publish/user: directory for QGIS projects publishing (as user 'user')

Development environment

Dependencies:

  • Linux or Mac
  • Git
  • VirtualBox
  • Vagrant
  • Ansible 1.9 (version 2 is not supported yet)

Creating development environment:

  • clone source code with Git

  • start Vagrant in source code root directory
    Note: to speed up provisioning using Apt proxy server, set APT_PROXY variable before running this command (ex.: export APT_PROXY=http://192.168.99.118:3142). See Apt Cacher server instructions for details.

$ vagrant up
  • log in to Vagrant virtual server
$ vagrant ssh
  • run simple development environment in TMUX (to quit running session type 'tmux kill-session')
$ /vagrant/utils/tmux-dev.sh

OR

  • launch Django development server manually
$ cd /vagrant/dev/django \
  && \
  workon gislab-web \
  && \
  python ./manage.py runsslserver 0.0.0.0:8000
  • enter URL below to open GIS.lab Web interface in web browser
https://localhost:8000?PROJECT=user/natural-earth/central-europe

Other commands:

  • run Django server tests (run in '/vagrant/dev/django' dir)
$ python ./manage.py test webgis.viewer.tests

Other information:

  • QGIS Mapserver is also forwarded to host machine on port 8090
  • QGIS Mapserver logs can be found in '/var/log/lighttpd' directory

Configuration

Configuration is done by Django project settings file. Good practise is to place settings_custom.py file to the same directory where settings.py to override default values.

Packaging

TODO: add instructions how to clean environment before build

  • GIS.lab Web QGIS plugin
$ cd /vagrant/qgis/gislab_web \
  && \
  make clean \
  && \
  make compile \
  && \
  make zip
  • GIS.lab Web
$ cd /vagrant/server \
  && \
  python ./setup.py sdist
  • GIS.lab Mobile
$ nvm use stable

$ export ANDROID_HOME=/home/vagrant/dev/apps/android-sdk-linux \
         PATH=$PATH:/home/vagrant/dev/apps/android-sdk-linux/tools:/home/vagrant/dev/apps/android-sdk-linux/platform-tools \
         ANDROID_BUILD=ant \
  && \
  cd /vagrant/clients/mobile/cordova-app \
  && \
  cordova build android

License

GNU GPL 2.0 and higher versions.

About

New generation of GIS.lab Web and Mobile clients

License:GNU General Public License v2.0


Languages

Language:Python 37.4%Language:JavaScript 30.6%Language:HTML 20.4%Language:CSS 10.7%Language:Shell 0.6%Language:Makefile 0.4%