Etikettarkiv | WMS

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…

Data från Länsstyrelserna

Jag har tidigare visat hur man kopplar upp sig mot diverse WMS tjänster från Länsstyrelserna och i helgen har jag gjort ett återbesök för att se om det skett några förändringar, och det har det.

På adressen http://projektwebbar.lansstyrelsen.se/gis så finns det länkar till webbkartor, WMS och nedladdningsdata.

Tyvärr så är webbkartorna beroende av Microsoft Silverlight, vilket fungerar sådär bra med Linux.

WMS tjänsterna finns redovisade i en lång lista med PDF-dokument som innehåller länkar till de olika tjänsterna…

Screenshot from 2014-08-17 15:20:51

Jag vet inte om det är en slump, men jag lyckas faktiskt inte ansluta till en enda av de tjänster som jag provar… Hmmm.

Nåja, filerna då…

Screenshot from 2014-08-17 15:08:22

Att hämta hem filer fungerar fint (länk via bilden ovan). Här nedan har jag hämtat myrskyddsområden från 2007, men andra kanske är mer intresserade av var det är tänkt att slutförvara kärnbränsle.

Screenshot from 2014-08-17 15:36:19

En finess med QGIS, som jag nämnt tidigare, är att de zip-filer som man hämtar hem inte behöver packas upp för att visas i QGIS. Detta gör att det mindre lagringsekonomiska formatet shape helt plötsligt tar mycket mindre plats på diskarna.

Jag gillar verkligen att det går att hämta data och inte bara visa informationen via en tjänst, speciellt i det här fallet när vare sig webbkarta eller WMS fungerar för mig.

 

 

Varför räcker inte WMS?

Sommartider

Allt fler företag och organisationer inser betydelsen av webbkartor och samtidigt blir det bara enklare att inkludera dessa på webbsidor och portaler.

Den överväldigande majoriteten av dessa tjänster är WMS/WMTS vilket betyder ”Web Map Services” och ”Web Map Tile Services”. Oavsett vilket så är det för klienten i slutändan små bildfiler i ett rutnät som laddas hem för att täcka den yta som visas i webbkartan. En del av dessa WMS/WMTS har transparent bakgrund vilket gör att det går att använda flera lager på varandra och i många fall göra själva bilderna transparenta så att man ser bakgrunden genom dessa. Några tjänster erbjuder möjlighet att skicka en fråga till servern och få ett svar på vad för objekt med tillhörande attribut som finns på en viss position (fungerar ej med WMTS).

Denna typ av webbkartor blir ofta (långt ifrån alltid) ganska snygga och snabba att visa, speciellt WMTS som baseras på förrenderade bildrutor, men de går inte att använda till så mycket mera.

För att ta nästa steg i webbkartorna så måste fler dataleverantörer erbjuda data som ”data” och inte bild. Detta innebär exempelvis WFS (Web Feature Service), men det finns andra som kan vara mera lämpliga i vissa situationer.

Fördelen med dessa är att tredje part kan komma åt och vidareförädla dessa data och skapa nya tjänster.

Vi kan ta brottsstatistik som exempel, där polismyndigheten kontinuerligt rapporterar de larm och incidenter som de åker på. Detta görs i en väldigt ”ogeografisk” form, men där Per Thernström skapat ett API (inte WFS) som kan användas för att hämta dessa data som XML, vilket kan bearbetas med exempelvis javaskript och presenteras som punkter på en webbkarta.

Hade det nu funnits en WFS-tjänst med alla incidenter så skulle man kunna bygga mycket mera avancerade webbtjänster med kartor.

Det skulle exempelvis gå att ta fram vissa typer av incidenter, vid specifika tillfällen eller samlat över tiden och jämföra med positionen för skolor, systembolag, musikfestivaler, etc. Naturligtvis förutsatt att även dessa data finns tillgängliga som tjänster.

Varför skulle då polisen vilja skapa denna typ av tjänst? Förutom det självklara att det skulle hjälpa dem att klara upp och förebygga brott, vilket jag förutsätter att de redan gör i interna databaser (om inte är Polisen korkad).

Polisen kan naturligtvis också använda sig av andras publicerade tjänster kopplat till sin egen WFS tjänst (eller motsvarande) och exempelvis plocka fram bilder från flickr eller var närmaste sjukhus eller räddningstjänst ligger.

Sammantaget kan jag säga att WMS tjänster är ett steg på vägen, men om fler tillgängliggör sina data för tredje part, exempelvis som WFS, så kommer vi snart att få se betydligt fler användbara karttjänster på Internet framöver.

Egen server för geodatatjänster – Del 4

I detta inlägg så kommer det att handla om grundläggande metoder för hur man kan skapa nya data och tjänster. Se detta som exempel och utarbeta en egen metod som passar dig och din verksamhet.

Metoder för publicering

Principen för geodatahanteringen blir att ”kärnanvändare” kopplar upp sig antingen direkt till PostGis, eller för den delen via GeoServer och WMS/WFS.

Kartor, eller lager som skall publiceras som tjänst, hanteras i ett eller flera QGIS-projekt som sparas på servern. Men dessa URL-er används inte utåt, utan i sin tur av GeoServer.

Lagerna, eller WMS-tjänsterna, från QGIS Server läggs till som egna ”store” i GeoServer och kan sedan användas i GeoExplorer för att enkelt skapa webbkartor.

PostGIS

I QGIS använder man OpenGeo Explorer för att koppla upp sig mot databasen på servern.

bok9

Markera ”public” i trädet under serveranslutningen och välj att skapa en ny tabell. Det går att göra i fönstret undertill, via knappen över trädstrukturen eller genom att högerklicka på ”public”.

bok10

I formuläret anger man ett namn för tabellen, ett antal attribut med namn och typ, samt information om geometrin. Om man inte lägger till en geometrikolumn så blir det en vanlig tabell utan geometri. Det går att välja flera typer av geometrier, inte minst punkter, linjer och polygoner. Man kan bestämma om positionerna skall vara i 2, 3 eller 4 (?) dimensioner. Det är bra att välja ett SRID så att man slipper gissa hela tiden, och exempelvis 4326 (WGS84) passar bra globalt, medan 3006 (SWEREF99TM) passar bra i Sverige. Något att tänka på vid valet är att en del analyser där avstånd ingår, utgår från lagrets referenssytem. Välj därför ett projicerat system, som SWEREF99TM, om beräkningar i meter skall göras. Skall dessutom kartorna publiceras i SWEREF99TM så bör man använda detta även för att lagra data.

QGIS

Lägg till de nya tabellerna genom att helt enkelt dra och släppa dessa i QGIS kartfönster. Skapa några punkter och använd ”stil” och ”etikett” för att skapa något lämpligt. Upprepa med en annan typ av geometri så att det finns minst två olika lager att experimentera med.

bok11

Spara projektet på servern i qgis-katalogen. Det kan hända att du behöver köra QGIS som ”root” för att det skall gå att spara på servern. Detta går att uppnå genom att starta QGIS ifrån terminalen med kommandot sudo qgis.

Starta ett nytt tomt projekt i QGIS och koppla upp mot QGIS Server.

bok12

URL:en http://192.168.1.42/cgi-bin/qgis_mapserv.fcgi?VERSION=1.3.0&map=/qgis/filnamn.qgs, där IP och filnamn anpassas till lokala förutsättningar, används för att peka ut OGC-tjänster från QGIS Server.

Prova att lägga till hela tjänsten (qgistest) för sig och lagerna var för sig (testdata, testdata_yta) och jämför skillnaderna. Vill du ha lager med transparent bakgrund så får du välja PNG som format.

bok13

Lägg märke till att symboler och texter för punktlager blir klippta där dessa annars skulle ritats ut utanför den geografiska ”box” som omsluter alla data exakt.

Öppna qgis-projektet från servern igen, zooma ut så att alla data syns och har en ordentlig marginal till kanterna. Gå sedan in i projektegenskaperna.

bok14

Under OWS så markeras ”Utannonsera utsträckning” och därefter kan man klicka på knappen för att använda den utsträckning som finns i QGIS. Det går även att ange manuellt i fälten.

Att tänka på är att om man skapar nya data utanför denna box, så kommer dessa inte att publiceras via QGIS Server om man inte går in och redigerar om här.

Ett alternativ som i många fall är bättre, är att lägga till två fiktiva geografiska objekt i exempelvis nedre vänstra och övre högra maximala utsträckningen. Då kan man strunta i att ange utsträckningen.

Spara projektet igen. Skapa ett nytt tomt projekt och lägg åter igen till WMS lagerna på samma sätt som ovan.

bok15

På det sätt som beskrivits ovan så går det att laborera lite med inställningar och liknande för att få till det utseende på lagren man önskar.

Nu går det att nöja sig här, då man har en fungerande WMS tjänst via QGIS Server, men i nästa inlägg tar vi det ett steg längre…

Ett system för geografisk information

Detta är en uppdatering av ett tidigare inlägg där jag försökte skapa ett ”komplett” system för att hantera geografisk information och kartor för GIS och webb.

Den här gången så går jag inte in på detaljer när det gäller installationen utan använder mitt skript för installation på Ubuntu Server 12.04 LTS, så vill du testa så är det där du skall börja. Jag installerar en virtuell server med Oracle VM VirtualBox på en Windows 7 klient (64-bit), men det går precis lika bra att installera på en fysisk dator om så önskas.

Jag har valt Windows på klienten för att det blir lite enklare att hantera filer i nätverk med QGIS för användarna, och det är ju klart vanligast med Windows som klient i de flesta nätverk.

När servern är grundinstallerad (defaultinställningar för det mesta och eget val för datornamn och användare) så kör jag mitt skript:

sudo su
wget http://geosupport.kvarnarp.eksjo.com/files/geosupport.sh
sh opengeo.sh

När skriptet kör så väljer jag defaultvärden för OpenGeo Suite samt att installera PostGIS. Jag lägger även till Drupal (CMS) och QGIS-Server, men inte Nuxeo (DMS).

Skriv ner information om datornamn, IP-adress, extra instruktioner och liknande medan skriptet kör. När det står viktig information på skärmen så pausar skriptet och väntar på att du skall göra något så var inte orolig för att texten rullar på för fort. Det som måste fixas är lösenord för postgres-användaren och din användare för Samba fildelning i nätverket. Instruktioner för hur detta går till får man i skriptet. Det sista som jag gör efter installationen är att starta om servern (för säkerhets skull):

reboot

Konfigurera Drupal

Använd en webbläsare och skriv in IP-adressen till servern. Då skall du få upp ett webbgränssnitt för att konfigurera klart din webbserver.

blogg2

Det är nu du skall använda det lösenord som du skapat för postgres användaren i PostgreSQL (databas: drupal, användare: postgres, lösenord: *******). När detta är klart så skall du bara ändra tillbaka rättigheterna till konfigurationsfilerna på servern:

chmod a-w /var/www/sites/default/
chmod a-w /var/www/sites/default/settings.php

Skapa karta (Steg 1)

I QGIS på klienten så skapar jag min karta som jag vill att den skall se ut. Data måste vara tillgängligt från servern så i mitt exempel använder jag PostGis data från Medford exemplet som följer med GeoServer. Projektfilen från QGIS sparar jag på den delade resursen ”QGIS” på servern.

Nu går det att komma åt kartan via WMS på adressen: http://Server-IP/cgi-bin/qgis_mapserv.fcgi?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities. Om du skriver in adressen i en webbläsare så skall du få upp dit QGIS-projekt som ett lager i XML-texten. Om detta fungerar så är nu ”tjänsten” publicerad.

In i systemet (Steg 2)

Det går redan nu att använda den skapade tjänsten med OpenLayers, men då blir det till att skriva lite kod själv. Jag går i stället igenom det ”lata” alternativet.

I Geoserver (http://Server-IP:8080/geoserver) så skapas ett nytt workspace, jag döper mitt till ”Geosupport”. Därefter läggs en ny ”Store” till som pekar på QGIS-Server (WMS adressen från steg 1). Det finns flera lager i tjänsten (ett för varje lager i QGIS och ett för hela projektet), men jag väljer det för hela projektet att publisera. På så sätt så kan jag faktiskt lägga till mer data i fler lager och få dessa publiserade i tjänsten utan att behöva upprepa detta och nästa steg. Det räcker att projektfilen från steg 1 ovan redigeras.

Skapa webbkartan (Steg 3)

I GeoExplorer (http://Server-IP:8080/geoexplorer) så skapar jag en karta med de bakgrundskartor jag vill ha med, samt lägger till den i steg 2 skapade ”Geosupport” tjänsten från den lokala Geoservern. Sedan är det bara att Exportera kartan och kopiera den rad med HTML kod som visas.

blogg3

Koden klistras sedan in i en ny sida i Drupal och sim-sala-bim så har man sin karta på hemsidan.

blogg4

Problem på vägen

Det är många tjänster som körs samtidigt så det är mycket som kan gå fel. En dedikerad server är nog bättre än en virtuell.

WMS tjänsten på Geoserver cachar lagerna, vilket i sig kan ta lite tid, men som även kan göra att uppdateringar i QGIS projektet kan ta lite tid innan de slår igenom, men det är inga större problem.

Projekt skapade med QGIS-1.8 fungerar inte… Men om man använder 1.9 (utvecklingsversionen) så fungerar det bra.

Lathund för PostGIS och GeoServer

Jag har sammanställt en snabbguide för att skapa WMS/WFS tjänster via PostGIS databaser och GeoServer.

Grundläget är att du har en server med minst PostGIS och GeoServer installerat (se tidigare inlägg). Du kommer även att behöva ett GIS-program (förslagsvis QGIS) och pgAdminIII, samt eventuellt något program till som beskrivs i dokumentet.

I guiden visar jag hur du skapar databaser, lägger till data och redigerar dessa samt publicerar resultatet i GeoServer.

Ladda hem guiden här: Geosupportsystem-Snabbguide-PostGIS-GeoServer

WMS tjänster i QGIS

Efter den förra serien med inlägg om Leaflet och WMS tjänster i webbkartor så tänkte jag visa hur du kommer åt alla dessa lager via QGIS.

Det är delvis enklare än att skriva javaskript och HTML kod men framför allt så kan man använda många funktioner i QGIS för att visa och analysera dessa data. Jag skall direkt säga att WMS är inte helt lämpligt att använda i ett skrivbords-GIS. Bilderna är anpassade för att visas på skärmen och inte för att bearbetas eller skrivas ut i avancerade GIS-program. Med det sagt så sätter vi igång.

Jag börjar med jordartskartan i skala 1:1 000 000 samt 1:50 000. Dessa hämtas från Sveriges Geologiska Undersökning – SGU och nås på nedanstående adresser:

http://resource.sgu.se/service/wms/130/jordarter_1M
http://resource.sgu.se/service/wms/130/jordarter_50K

Starta QGIS och klicka på knappen för att lägga till WMS lager.

Skärmbild från 2013-04-13 18:24:20I dialogen som visas så välj att ansluta till en ”ny” tjänst och fyll i namn och adress till ett av lagren ovan. Klicka på ”Connect” och välj ett lager och klicka på ”Lägg Till”. Ha i åtanke att det kan vara mycket data som skall hämtas så det kan ta lite tid. Det kan dessutom vara så att tjänsten är inställd för att bara visas i vissa skalor.

Skärmbild från 2013-04-13 18:27:48

När du är klar så kan du lägga till det andra lagret på samma sätt. Jag passar även på att döpa om lagerna i QGIS så att det är enklare att förstå vad de representerar.

Nu kan man zooma och panorera men även göra lager transparenta eller ställa frågor (GET FEATURE INFO) med knappen ”Identifiera Objekt”. Tänk på att välja det lager du vill fråga på innan du klickar i kartan.

Skärmbild från 2013-04-13 18:42:18

Jordarter i trakten av Jönköping.

http://www.sgu.se/sgu/sv/produkter-tjanster/kartvisare_wms.html så kan man hitta många fler WMS tjänster från SGU, men jag tänkte tipsa om några till.

Sedan tidigare inlägg:

Trafikverket: http://geo-inspire.trafikverket.se/MapService/wms.axd/Riksintressen2012 (använd direkt i QGIS)
Länstyrelsen: http://www.gis.lst.se/lstgis/wms.asp (länkar till flera WMS)

Några till:

Staffanstorp: http://kartweb.staffanstorp.se/ArcGIS/services/Kommunal_service/MapServer/WMSServer (använd direkt i QGIS)
Ortofoto Stockholm: http://openmap.stockholm.se/bios/wms/app/baggis/web/WMS_STHLM_ORTOFOTO_2006? (använd direkt i QGIS)
Stadskarta Stockholm: http://openmap.stockholm.se/bios/wms/app/baggis/web/WMS_STHLM_STOCKHOLMSKARTA_GRA_FORENKLAD? (använd direkt i QGIS)

Nu är det bara att experimentera och söka vidare efter fler WMS tjänster.