Tag Archive | qGIS Server

QGIS Server

Då är det QGIS Server workshop i Täby idag. Då tänkte jag samla lite resurser om QGIS Server i detta inlägg. Läs mer…

QGIS Server Workshop

Är du intresserad av QGIS Server? Då har du möjlighet att senast den 10 Januari anmäla dig till en Workshop som hålls i Täby den 25 Januari.

http://mundogis.se/tjanster/workshops.html

Har du andra liknande evenemang du vill göra reklam för så skicka dem till mig. Tycker jag det verkar intressant så blir den en ”puff” här på bloggen, vilket når ”ganska många” läsare i och utanför Sverige…

(Ett tips för att få mig på bättre publiceringshumör är att se till att evenemanget lever upp till filosofin när det gäller Open Source.)

QGIS Server

Det var ett tag sedan jag testade QGIS Server, och då på en kombinerad fil- och geoserver.

Men, om man redan har QGIS installerat. Kan det vara så att det är skapligt enkelt att installera och använda, så att man kan få till nya funktioner och användningsområden.

Det tänkte jag kolla lite på i detta inlägg. Läs mer…

Geosupportsystem IT-plattform – Installationsguide del 4

I denna avslutande återblick på hur man kan använda öppen källkod för att bygga en IT-lösning för geosupport så tänkte jag komplettera OpenGeo Suite installationen med QGIS Server.

Planen var att på samma server som tidigare lägga till nödvändiga komponenter för att enkelt (-ish) skapa snyggare kartor än vad som är möjligt med Boundless lösningar. Detta är dock lite problematiskt eftersom OpenGeo Suite använder en version av GDAL, skapad av Boundless, som inte är kompatibel med den vanliga GDAL som används av QGIS. Lösningen är att installera QGIS Server på en egen server i stället. Däremot så skall man kunna använda GeoServer, GeoExplorer, QGIS plug-in med mera för att hantera och skapa webbtjänster via den tidigare servern.

Läs mer…

Python i QGIS Server

Strax före jul bakades stöd för Python in i utvecklingsversionen av QGIS Server och finns sedan 2.8 med även i den stabila versionen (har inte testat själv).

Det börjar nu märkas att funktionen används och vi kommer nog att få se mer utveckling av plug-in för QGIS Server i framtiden.

Vad är då QGIS Server Python Plug-In?

Jag tittar igenom lite filmer och presentationsunderlag och gör så gott jag kan en kort sammanställning:

Skärmbild från 2015-05-23 11:07:15Med funktionen skulle man kunna tänka sig att man skapar skräddarsydda autentiseringsfunktioner, eller att man modifierar OGC svar, eller helt enkelt skapar nya.

Man kan lyssna på ”requests” och om dessa inte är standard (”404”) så kan man låta ett insticksprogram analysera frågan och ge ett passande svar. Detta gör det möjligt att ta hand om sådant som inte är standardiserade ”requests”.

För att modifiera standardiserade ”requests” så krävs det mera kod, men i princip allt är möjligt att ändra.

Skärmbild från 2015-05-23 11:20:26Ett enkelt exempel (hämtat från http://www.itopen.it/qgis-server-getfeatureinfo-with-style/) visar hur ett ”filter” skapats i Python.

Filtret lyssnar efterom det är en ”Request” för WMS/GETFEATUREINFO i HTML-format.

Om så är fallet så byts ”BODY” taggen ut och en ”STYLE” tagg läggs till med instruktionern för hur svaret skall formateras. Snyggt och väldigt enkelt! Inte så svårt att anpassa och kanske lägga till en logotyp eller kontaktuppgifter…

Skärmbild från 2015-05-23 11:33:01

Plug-In skripten bygger i princip på tre ”hooks” (bilden ovan). Ett som görs när förfrågan är mottagen, en när svaret är klart för sändning och ett när svaret skall sändas (det finns en skillnad mellan de två senare, men jag utvecklar inte det här).

Vilken kod du väljer att inkludera i ditt skript är helt upp till dig, så länge du använder minst en av dessa ”hooks”. Det går att använda vilken Python-kod som helst och det går att använda alla QGIS Python bindningar om man så vill.

Vi får väl se när/om jag får tid att testa detta vidare, men om du vill gå vidare själv så finns en instruktion för hur du sätter upp en QGIS Server med Python Plug-In på http://www.itopen.it/qgis-server-python-plugins-ubuntu-setup/

Konfigurera QGIS Webbklient

Screenshot from 2014-06-05 20:25:01

Till att börja med så kanske man vill översätta QGIS webbklient till Svenska? Då får man ge sig in och redigera i filen ”js/Translations.js”. Det är ganska rättfram hur det går till och nationskoden för Sverige är [sv], så det är bara att sätta igång…

Om du har tur så finns redan Svenska som språk, vilket innebär att jag hunnit skapa en översättning och gjort en ”pull-request” på GitHub och fått in tillägget.

Om så är fallet så ändrar man till Svenska genom att ändra andra raden i ”js/GlobalOption.js”:

var lang = "sv";

Om dessutom hjälpfilen skapats så ändras en rad lite längre ner till:

var helpfile = "help_sv.html";

Vill du kunna använda sökfunktionen så behöver du redigera ”js/GlobalOptions.js”. Leta reda på, och redigera nedanstående avsnitt så att det passar dina data.

//config for QGIS.SearchPanel
//Number of results: FEATURE_COUNT in WMS request
var simpleWmsSearchMaxResults = 10;
 
var simpleWmsSearch = {
 title: "Sök Kommun",
 query: 'simpleWmsSearch',
 useWmsRequest: true,
 queryLayer: "Kommuner (PostGIS)",
 formItems: [
 {
 xtype: 'textfield',
 name: 'kom_namn',
 fieldLabel: "Namn",
 allowBlank: false,
 blankText: "Var snäll och ange ett namn (ex 'Eksjö').",
 filterOp: "="
 }
 ],
 gridColumns: [
 {header: 'Namn', dataIndex: 'kom_namn', menuDisabled: 'true'}
 ],
// highlightFeature: true,
// highlightLabel: 'kom_namn',
 selectionLayer: 'Kommuner (PostGIS)',
 selectionZoom: 0,
 doZoomToExtent: true
};

Det går att skapa flera sökflikar genom att lägga till flera variabler liknande ”simpleWmsSearch” ovan, men med nya passande namn. Varje variabel läggs till som sökflik under rubriken:

//list of configs for QGIS.SearchPanel per map name
var mapSearchPanelConfigs = {
 "/qgis/Sverige.qgs": [simpleWmsSearch, minNyaSökflik]
};

Texten ”/qgis/Sverige.qgs” skall vara densamma som används för webbkartans URL (i mitt fall http://192.168.0.121/webbkartor/qgis-client/qgiswebclient.html?map=/qgis/Sverige.qgs).
Det kan ju hända att man har flera kartor man växlar mellan (se längre ner) och då bör ju bara sökfunktionen vara aktiv för den aktuella kartan. Detta uppnås genom att kommentera bort (eller radera) en rad lite längre ner:

// ABP: needed for helloworld if no rewrite
// mapSearchPanelConfigs[project_map] = [simpleWmsSearch, urlRewriteSearch];

Man kan ganska enkelt sätta en lite mer personlig prägel med inställningar lite längre ner:

//first part of titlebar text
var titleBarText = "Geosupportsystem QGIS - "; // will be appended with project title
 
// header logo image and link
var headerLogoImg = null; // path to image, set null for no logo
var headerLogoHeight = 60; // logo image height in pixels
var headerLogoLink = ""; // logo links to this URL
var headerTermsOfUseText = null; // set null for no link
var headerTermsOfUseLink = ""; // URL to terms of use

Om man inte vill använda kartteman (välja bland flera projekt) så måste man sätta en variabel till ”false”:

var mapThemeSwitcherActive = true;

Om man däremot vill använda funktionen så får man redigera filen ”GISProjectListing.js”. Filen är ganska självförklarande även om det kan vara mycket att redigera.

Slutligen kan jag säga att om man vill använda egna bakgrundskartor så är det heller inga större problem. Redigera filen ”js/Customizations.js” i avsnittet:

function customBeforeMapInit() {
 
}

Innanför klammerparentesen så skapar man ett ”OpenLayers.Layer” och lägger till detta med kommandot ”baseLayer.push(lagernamn)”. Mer om detaljer hur det går till kan man läsa på GitHub (https://github.com/qgis/QGIS-Web-Client).

Det finns massor med ytterligare inställningar som är ganska enkla att ändra och sedan är det faktiskt ”bara” javaskript och stilmallar i grunden, så det gäller bara att hitta rätt inställning så går det att ändra på det mesta så att det passar det man är ute efter.

Lycka till!

QGIS webbklient

Har du hört talas om QGIS Web Client? Det är en webbkarta baserad på QGIS och tjänsterna från QGIS Server, med ett väldigt trevligt gränssnitt baserat på OpenLayers och GeoExt med mera.

I detta inlägg visar jag hur man installerar QGIS Webbklient på en Ubuntu Server. Jag kör installationen på min vanliga Geoserver som du kan läsa mer om i flera inlägg på bloggen och under ”Testa Själv” i menyn ovan.

Först lite beroenden om du börjar med en ren server:

sudo apt-get install libapache2-mod-fcgid

Eftersom jag installerat med mitt skript så är detta redan klart!

Jag har installerat QGIS-Server med skriptet också men inte QGIS desktop, vilket behövs för webbklienten…

sudo apt-get install qgis

Behöver du installera QGIS Server så gör du det, och andra beroenden med följande kommandon (kör som root):

gpg --keyserver keyserver.ubuntu.com --recv 47765B75
gpg --export --armor 47765B75 | apt-key add -
echo ”deb http://qgis.org/debian precise main” > /etc/apt/sources.list.d/qgis.list
echo ”deb-src http://qgis.org/debian precise main” >> /etc/apt/sources.list.d/qgis.list
apt-get install grass python-software-properties
add-apt-repository ppa:ubuntugis/ubuntugis-unstable
apt-get update
apt-get install qgis-mapserver

För att söka i tjänsten behövs även följande paket:

sudo apt-get install libapache2-mod-wsgi python-psycopg2 python-webob

Själva klienten ligger på GitHub och behöver ”klonas” till servern. I kommandona nedan så använder jag min utdelade katalog ”qqis” för att ladda hem filerna:

cd /qgis/
sudo apt-get install git
git clone https://github.com/qgis/qgis-web-client.git

I katalogen ”qgis” på servern så skapas då en ny katalog ”qgis-web-client”.

Det tar ett tag då det är mycket som skall kopieras ner (ca 150 Mb).
Nästa steg blir att skapa en sida på webbservern.

Då jag har samba installerat och både ”qgis” och ”webbkartor” (som är min webbroot) utdelade så kan jag göra detta på en klient. Annars är det lätt att skapa en underkatalog i webb-roten (qgis-client) och kopiera innehållet från katalogen ”site” i ”qgis-web-client” till denna underkatalog.

Konfigurera.

Om man skriver in adressen till katalogen i en webbläsare så kommer det upp en startsida som talar om att åtminstone något fungerar.

Screenshot from 2014-06-05 14:39:46

För att allt skall fungera så behöver dock några sökvägar redigeras. I ”index.html” ändras två sökvägar som börjar med ”/home/web/qgis-web-client” till det som gäller för dig. I mitt exempel så är det ”/qgis/qgis-web-client”.

I filen ”js/GlobalOptions.js” ändras motsvarande sökväg på ett ställe.

När dessa båda ändringar är gjorda så kan man testa länkarna till exempelkartorna.

Screenshot from 2014-06-05 14:50:32

Nu är det bara att använda samma grundadress och hänvisningar till de QGIS-projekt som är sparade på servern och som normalt används av QGIS Server. Det är fortfarande WMS, men allt som normalt går att göra med dessa lager är tillrättalagt i klienten och mycket mera överskådligt.

I mitt fall så kan jag starta QGIS webbklient med en egen karta genom att skriva in följande adress i en webbläsare:

http://192.168.0.121/webbkartor/qgis-client/qgiswebclient.html?map=/qgis/Sverige.qgs

Screenshot from 2014-06-05 15:02:41

Även om det nu ser ut att fungera perfekt så är det lite man behöver lägga tillrätta. Exempelvis för att kunna söka i egna lager och för att använda kartväljaren.

Detta skall jag titta lite närmare på och lovar att återkomma snart med en uppföljning.

[EDIT]

Kommandot för att installera QGIS Server ovan är klippt och klistrat från ett tidigare inlägg. Om du kör ”Trusty” så anger du det i stället för precise, och det finns smartare sätt att lägga till programkällor men detta fungerar.

[EDIT]

Jag har även märkt att Perl är bra att ha… sudo apt-get install perl2