Tag Archive | SLD

ArcGIS stilar till OGC/QGIS

Under den svenska användarträffen för QGIS så kommer ett av diskussionsämnena med tillhörande workshop att vara konvertering av olika öppna datas stilar till öppna stilformat.

Detta är ett bekymmer då dessa öppna data i huvudsak är stilsatta med ägda format som inte kan läsas av exempelvis OGC servrar eller QGIS.

Under användarträffen så kommer sannolikt en av slutsatserna att bli att man behöver skapa ”kopior” på befintliga stilar med exempelvis QGIS. Frågan är om detta är det mest optimala, eller om det finns alternativ. Läs mer…

Annonser

Lagerstilar på kartservern

Det jag vill testa i denna artikel är hur man kan gå till väga när man vill bestämma stil på lager i en kartserver.

Jag kommer inte att använda QGIS Server, som gör detta alldeles utmärkt men där jag inte är övertygad om stabiliteten och tillförlitligheten i programvaran. Jag vet att exempelvis Kristianstad Kommun använder QGIS Server med diverse cache-tjänster framgångsrikt och att mjukvaran säkert kan göras fullt tillförlitlig, men här testar jag GeoServer.

Eftersom Boundless har paketerat mycket av det som krävs i en snygg installation, och dessutom har tillägg i QGIS för att just publicera data till GeoServer så blir det en standardiserad OpenGeo Suite installation som hamnar på en virituell Ubuntu Server i mitt experiment.

OS: Ubuntu 12.04.4 LTS Server (engelsk)
OpenGeo Suite: 4.1.1

Installation av OpenGeo Suite är enkel i terminalen och går att följa på http://suite.opengeo.org/opengeo-docs/installation/ubuntu/install.html.

sudo su -
wget -qO- http://apt.opengeo.org/gpg.key | apt-key add -
echo "deb http://apt.opengeo.org/suite/v4/ubuntu/ precise main" > /etc/apt/sources.list.d/opengeo.list
apt-get update
apt-get install opengeo

Om man vill använda PostGIS så måste även Postgresql konfigureras och det kan du läsa mer om här på bloggen samt i instruktionerna i länken tidigare.

Servern kommer man åt via webbläsaren på http://server-IP:8080/geoserver (hela OpenGeo Suite nås via http://server-IP:8080/dashboard).

Screenshot from 2014-09-06 12:21:05Logga in med ”admin” och ”geoserver” som lösenord.

Nästa steg blir att ansluta med QGIS och se vad man kan hämta via insticksprogrammet OpenGeo Explorer.

Screenshot from 2014-09-06 12:24:59

Jag fick en varning om att jag använder en gammal version av GeoServer, men det skall nog gå bra i alla fall.

Nästa steg blir att lägga till ett lager från den befintliga servern.

Screenshot from 2014-09-06 12:30:28

När man expanderar GeoServer katalogen så möts man av en mängd olika ”underkataloger”. Workspace är där data ligger lagrat (typ), men vill man lägga till ett lager i QGIS så får man gå till GeoServer Layers. Det går att ”klick-dra” lager till QGIS kartan, eller som i bilden ovan markera lagret och sedan klicka på ”Add to current QGIS project”. Jag får dock inte med rätt stilinställningar om jag klick-drar så jag kommer att fortsätta att använda knappen.

Jag känner att här finns massor att utforska i övrigt, men nu var det stilar som var aktuellt. Om man expanderar ett lager så får man fram den stil som är vald för lagret och denna går att redigera med QGIS eller med SLD. Jag återkommer till SLD men först så tänker jag prova QGIS symbolhantering, som jag anser vara bland den bästa på marknaden.

Screenshot from 2014-09-06 12:42:44

Små ändringar som färg och stil på etiketter fungerar alldeles utmärkt och dessa ändringar slår igenom direkt på de tjänster som exempelvis publiceras via Open Layers (bilden ovan).

Sedan blir det värre.

Screenshot from 2014-09-06 12:53:32

Att lägga på en linjefyllning fungerar i QGIS, men det slår inte igenom till Open Layers (endast vissa typer av fyllningar fungerar). I bilden nedan så har jag använt linjefyllning och en bakgrund med gradientformfyllning.

Screenshot from 2014-09-06 12:57:55

Föga förvånande så fungerar inte gradienformfyllning heller i Open Layers. Det går inte heller att spara stilen på GeoServern.

Det enklaste att testa hur symbolen kommer att se ut är att ändra, spara genom att klicka ”OK” i lageregenskaperna och öppna stilen igen. OpenGeo Explorer gör nämligen om en hel del av stilarna innan den sparar den till GeoServern och dessa syns inte förrän man läser tillbaka dem från servern. Ändringar i stilar på servern slår heller inte igenom på klienten (i QGIS) utan att man lägger till lagret från servern igen.

Hittar man något som verkar OK så är det bäst att prova med OpenLayers eller en WMS-klient också, innan man slutligen publicerar sina förändringar.

Varför finns då dessa begränsningar? Svaret är ganska givet. GeoServer hanterar inte stilar i QGIS format!

Screenshot from 2014-09-06 13:13:15

GeoServer använder ett format kallat SLD som är en xml-standard från OGC, där det finns klara begränsningar jämfört med QGIS stilar, men det går ändå att göra väldigt mycket. Den intresserade kan läsa standardiseringsdokumenten från OGC för att utnyttja stilarna maximalt. Det går nämligen att editera SLD stilarna direkt om man så vill.

Det finns separata stilredigerare för SLD, exempelvis Atlas Styler. Denna utvecklas dock inte längre och om man vill använda den så gäller det att passa på att hämta hem den innan den försvinner från nätet.

Intryck

Jag tycker nog att OpenGeo Explorer erbjuder tillräckligt goda möjligheter att administrera en GeoServer direkt för att det skall räcka i de flesta tillämpningarna. Är det något väldigt specifikt man vill göra så går det att kontrollera om det stöds i SLD-standarden och göra det manuellt, men i andra fall så får man helt enkelt välja en annan lösning.

QGIS med QGIS-Server är spännande och ger en fantastisk möjlighet att skräddarsy sina webbtjänster men man får jobba lite mera själv för att sätta upp sin server. Med Boundless så installerar man däremot alla grunder på en Ubuntuserver med fem rader kod och med tillägget OpenGeo Explorer i QGIS blir administrationen förhållandevis enkel.

Att jag i mitt försök här på sidan över huvud taget inte har behövt jobba i webbgränssnittet på GeoServern, gör det ju inte sämre eller?

Nu väntar jag bara på att Boundless skall inkludera GeoNode i sin programsvit…

Lagerstilar i QGIS och Geoserver

I detta inlägg skall jag visa hur man skapar avancerade stilmallar till lager i QGIS och Geoserver. Jag använder QGIS 1.8 och Geoserver 2.2, som är de senaste versionerna för tillfället.

I QGIS har jag skapat ett enkelt väglager i en PostGIS databas med några vägar av olika typ. För att sätta symboliken på lagret så kan man antingen dubbelklicka på lagret eller högerklicka och välja ”Egenskaper”. Det är sedan under fliken ”Stil” som symbolerna skapas.

I bilden ovan så visas ”Enkel” symbolik, där man väljer en symbol som får representera alla objekt i lagret. Det går även att välja ”Kategoriserad” och ”Gradvis” symbolik som antingen använder en attributberoende kategori (ex landsväg/grusväg/motorväg) eller en symbol som delas in i olika intervaller där attributet man väljer faller inom dessa intervall. Oftast är det då fråga om siffror, exempelvis vägar som är mellan 0 och 3,5 meter breda visas med en symbol och vägar som är bredare än 3,5 meter visas med en annan.

Dessa alternativa stilar är enkla och snabba att få till, men de har sina begränsningar. Exempelvis går det inte att skapa symboler som beror på flera attribut samtidigt (grusväg smalare än 3,5 meter). För att klara detta så måste man använda ”Regelbaserad” symbolik (Rule-based).

Jag vill använda två attribut nämligen vägtyp och antal filer när jag skapar mina symboler så det blir till att skapa regler för hur dessa skall delas in.

Jag väljer ”Rule-Based” och lägger till och döper en regel för varje symboltyp jag vill ha med, det är enklast att börja så. Det kan även vara lämpligt att skapa en lämplig symbol för varje regel så att det blir visuellt tydligt vad man håller på med. Exakt hur detta går till tror jag att du kan klura ut själv, för det är inte så jättekrångligt om man har lite tålamod.

När jag skapat alla regler jag vill ha med så är det dags att bygga filter för dessa. Knappen med tre punkter vid fältet filter öppnar ett nytt fönster där man kan bygga sitt filter. Är man säker på vad man gör så går det att skriva in uttrycket direkt i fältet, men jag rekommenderar att man använder filterbyggaren.

Själva filtret byggs upp i Expression fältet och de variabler och operatorer som kan användas hittas i listan uppe till vänster. I bilden ovan så har jag dubbelklickat på ”Type” under Fields and Values, vilket lägger till denna i fönstret nedanför. På samma sätt kan man under operatorer leta reda på och dubbelklicka på likhetstecken (eller skriva in det manuellt). Jag vill sedan att detta filter skall användas för vägar som är av typen X, och genom att högerklicka på Type i listan uppe till vänster så kan man visa vilka värden som finns i ett fält till höger. Ett dubbelklick på ‘X’ lägger till detta i fältet i nederkant.

När man skall använda sig av flera attribut så måste man använda sig av ”Boolsk algebra”, som kombinerar olika delfilter på olika sätt. De vanligaste är AND och OR.

OR kan användas om jag exempelvis vill ha samma symbol för vägar typ X och vägar typ Y, uttrycket blir då: ”Type” = ‘X’ OR ”Type” = ‘Y’. I exemplet i bilden så vill jag istället att vägar av en viss typ och vägbredd skall se ut på ett visst sätt, så då använder jag operatorn AND i stället. Det är således bara objekt av typen X som har fler filer än 1 som passar just på filtret i bilden.

På liknande sätt bygger jag upp filter för alla regler och kontrollerar att det fungerar i QGIS tills jag är nöjd.

När jag är nöjd, så vill jag ju att lager som visas via Geoserver WMS skall se likadana ut, men QGIS kan inte spara till Geoserver, utan symboliken i Geoserver sätts med SLD filer (styled layer definition). I QGIS går det numera att exportera stilar som SLD filer, så processen är inte särskilt krånglig.

I Stilfliken som använts ovan finns en knapp som heter ”Spara Stil” (nere till höger). Här kan man välja att spara en fil i QGIS stilformat eller som SLD. Jag väljer naturligt vis SLD för att skapa en fil till Geoserver och sparar den på en lämplig plats.

I Geoserver så har jag redan skapat workspace, store och layer för vägarna i PostGIS databasen och sett att detta fungerar med Open Layers.

Som bilden visar så är det omöjligt att se skillnad på de olika vägtyperna om man inte klickar på dem för att få fram attributen.

Jag börjar med att importera min SLD fil under ”Styles” i Geoserver. Klicka på Add a new Style och fyll i ett namn och välj workspace, men i stället för att kopiera och modifiera en befintlig stil så bläddrar jag efter min SLD fil och laddar upp den till servern. Innehållet i filen visas i det stora fältet på sidan och genom att klicka på ”Validate” så skall man förhoppningsvis få en grön skylt och ett OK, och då är det bara att trycka på ”Submit”.

I inställningarna för mitt väglager så klickar jag sedan på fliken ”Publishing”. Lite längre ner på Publishing sidan så finns ”Default Style” under rubriken WMS. Där väljer jag nu min nyss skapade stil, som då även visas förhandsgranskat. Sedan är det bara att klicka på ”Save” och på nytt granska lagret via Open Layers.

Som ni kan se i bilden så är nu mina vägar symboliserade på precis samma sätt som i QGIS. För att slutligen testa allt så lägger jag till WMS lagret i QGIS och kan på så sätt direkt jämföra utseendet på WMS tjänsten och det som kommer direkt från PostgreSQL databasen. Och jadå symboliken är den samma. Det som återstår nu kan vara att laborera lite med linjetjocklekar och andra detaljer, så att WMS lagret blir så trevligt som möjligt att titta på för användarna. Detta kan göras antingen i QGIS med export och import av nya SLD filer för att ersätta den gamla i Geoserver. Är stilmallen inte allt för avancerad och ändringarna få, så går det dock snabbare att redigera SLD filen direkt i Geoserver.
Lycka till!

Fotolager för Web och Google Earth

I det här inlägget skall jag försöka tillämpa lite blandade kunskaper som beskrivits tidigare, och skapa något som kan vara användbart i någon form. Jag skall skapa ett fotolager med punkter i en PostGIS databas som beskriver platser där jag tagit fotografier. Jag skall dessutom skapa en länk till bilden i punktlagret, bilderna lagrar jag i en onlinekatalog som alla kan komma åt genom länken.

Det blir förutom PostGIS och Quantum GIS även lite skript för GeoServer för att snygga till det hela.

Läs mer…

Egna symboler i lagerstilar


Till att börja med så behöver vi som använder Linux som server sätta rättigheter på mappen ../workspaces/styles/ så att vi kan föra över filer dit via FTP. Motsvarande katalog finns även på Windows system och det är här alla filer som beskrivs här skall hamna.

sudo chmod -R 777 /usr/share/opengeo-suite-data/geoserver_data/styles/

Jag skall försöka skapa egna symboler för ett lager med punkter med ”geocacher” i Jönköpings län. Vill du veta mer om ”geocaching” så kan du besöka www.geocaching.se. Jag har tidigare använt detta lager för att skapa pop-up rutor i Google Earth.

Läs mer…

Quantum GIS blev genast bättre

Ju mer man jobbar med olika program desto mer finesser hittar man. Jag har precis hittat funktionen för plugin till QGIS. Nåväl jag har hittat den tidigare men nu fick jag upp ögonen för tredjepartsplugin.

Genom att klicka på knappen ”Lägg till tredje parts centralkatalog” så utökas antalet möjliga plugin radikalt.

Läs mer…

Dags för lagerstilar

I ett tidigare inlägg visade jag hur man skapar och lagrar data i en PostGIS databas. I slutet på det inlägget nämnde jag att det skulle bli ett nytt inlägg om hur man snyggar till presentationen av dessa lager lite senare. Nu har tiden kommit för detta inlägg.

Först och främst skall vi nämna att OpenGeo Suite har ett ganska bra stöd för att sätta stilar på lager i GeoServer inbyggt i gränssnittet. Under ”Layer Preview” så finns en kolumn med länken ”Styler”, genom att klicka på denna länk så kan man visuellt redigera lagren i ett nytt gränssnitt. Läs mer…