Komplett Karttjänst på Webben

Eftersom det är långt mellan inläggen just nu så tänkte jag kompensera med en mastodont till ”gör det själv” artikel.

Målet är att skapa en webbkarta som mycket enkelt kan uppdateras från en QGIS klient på nätverket och publiceras på en GeoServer via WMS. Det är inte bara data som skall uppdateras, utan även utseendet på kartan, vad som skall synas i vilka skalintervall med mera.

Detta är sådant som normalt är ganska omständligt när man skall administrera via GeoServer och skriva SLD filer för olika lager, med mera. Nu skall jag dock baka in QGIS Server i det hela och då kan det bli mycket enklare.

Jag bygger med Ubuntu Linux 12.04 LTS Server, men blandar mellan PC, Mac och Linux på klientsidan så det blir lite att trixa med.

Servern

Börja med att installera Ubuntu Server 12.04. Jag kommer att göra det på en virtuell maskin här så att jag kan verifiera att alla steg fungerar, men har du redan en server igång så kan du hoppa över de steg som du redan har avklarade.

Ladda ner från Ubuntus hemsida och installera med dina inställningar, när jag är osäker så väljer jag det som är förvalt.

Mina egna val:

  • Svenska
  • Datornamn: Geoserver
  • Användarnamn och lösenord (ni får välja ett eget)
  • (Välj att partitionera diskarna och skriva ändringarna till LVM – Ja!)
  • Jag lägger inte till några funktioner nu (typ Samba filserver), det gör jag senare.

Open Geo Suite

Detta är avhandlat i tidigare artiklar, men jag tar det igen.

För att installera så behöver en ”nyckel” läggas till. OpenGeo APT repository pekas ut och sviten installeras. Allt detta görs med nedanstående kommandon.

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

Fyll i eventuella egna val, här är mina.

  • User name: admin (default)
  • Password: geoserver (default)
  • PostGIS: Ja!
  • PostgreSQL 8.4 utfasad: OK (vi använder 8.4 i alla fall)

Testa från en klient och surfa till sidan http://Server-IP:8080/dashboard/

(Serverns IP adress får du reda på genom att skriva ifconfig på servern.)

Samba filserver

Samba är ett filhanterings och skrivarprotokoll för framför allt Windows. Vill man ha med PC burkar i nätet så är det mer eller mindre nödvändigt att lägga in stöd för Samba. Nedanstående kommandon fixar till en sådan funktion på Linux Servern. Säkerhet och sådant får bli en senare fråga, nu skall bara funktionen upp och snurra. Jag skapar en katalog som heter ”qgis” i roten på servern som skall användas som filarea.

apt-get install samba samba-common
apt-get install python-glade2 system-config-samba
mkdir /qgis
chmod 777 /qgis/
cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
rm /etc/samba/smb.conf
touch /etc/samba/smb.conf
vi /etc/samba/smb.conf

Skriv in följande i filen smb.conf: (starta redigering med ”i” och avsluta med ”esc” samt kommandot ”:wq” – Write & Quit.)

#========== Global Settings ================= 
[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = ubuntu
security = user
map to guest = bad user
dns proxy = no
#========== Share Definitions ============== 
[MyShare]
path = /qgis
browsable =yes
writable = yes
guest ok = yes
read only = no

Starta om servern:

service smbd restart

Prova att ansluta till filservern från nätverket. Om allt fungerar så skall det gå bra att skapa nya filer och mappar på sökvägen.

QGIS server

Normalt sett så körs kanske QGIS server på en maskin med QGIS, men varför skulle man vilja det? Nä kör nedanstående på servern.

gpg –keyserver keyserver.ubuntu.com –recv 1F9ADD375CA44993
gpg –export –armor 1F9ADD375CA44993 | apt-key add –
echo ”deb http://qgis.org/debian precise main” >> /etc/apt/sources.list
apt-get update
apt-get install apache2 qgis-mapserver libapache2-mod-fcgid

Nu är det dags att skapa lite data, och så småningom ett QGIS projekt till QGIS server…

PostGIS data

redigera PostgreSQL konfigurationen med:

vi /etc/postgresql/8.4/main/postgresql.conf

Leta reda på raden ”#Listen_Adresses = ‘localhost’” och ta bort ”#” tecknet och ändra ”localhost” till serverns IP adress, behåll ”fnuttarna”.

Redigera nästa fil med kommandot:

vi /etc/postgresql/8.4/main/pg_hba.conf

Leta reda på raden ”# IPv4 local connections:” och lägg till en rad under den:

host   all     all       192.168.0.1/24   md5

Anpassa ipadressen till din adressrymd. Det är här man bestämmer vilka klienter som skall kunna ansluta till databasen direkt. /24 ovan talar om att alla adresser som börjar med 192.168.0 skall få koppla upp sig.

Jag använder Open Street Map data från http://www.geofabrik.de/data/download.html för att snabbt demonstrera med en större datamängd, men det går lika bra med vilka data som helst.

Först så skapar jag en PostGIS databas med PgAdmin III.

Skapa en anslutning till servern och använd användarnamn och lösenord ”opengeo”.

Jag skapar en ny databas vid namn ”QGIS” med ”template_postgis” som mall.

Jag använder ett verktyg i QGIS för export av data till PostGIS och laddar upp lite data till min ”QGIS” databas. Observera att stora mängder data kan ta låååång tid att föra över till PostGIS.

Dessa data ansluter jag sedan till i QGIS och symbolsätter i projektet.

Projektet sparar jag sedan på filservern (/qgis/projektfil.qgs). Sedan är det dags att skaka igång QGIS-Server.

QGIS-server avslutning

Jag skapar en länk till projektet i QGIS-server mappen med kommandona:

cd /usr/lib/cgi-bin/
ln -s /qgis/projektfil.qgs

WMS sökvägen till projektet är nu ”http://IP-till-server/cgi-bin/qgis_mapserv.fcgi. Om det finns flera projekt eller länkar till projekt i katalogen så kommer alla att nås via denna sökväg.

Prova att ansluta till WMS tjänsten via QGIS.

GeoServer lägg till WMS lager.

Det kan låta konstigt att lägga till en WMS tjänst till GeoServer, eftersom GeoServer i sig själv skapar WMS tjänster, men på detta sätt så kommer jag åt QGIS projektet via GeoExplorer lite senare. Det går att lägga till externa WMS tjänster direkt till GeoExplorer utan att gå via GeoServer, men på detta sätt så kan jag enkelt utnyttja Cache-funktionen i GeoServer.

I GeoServer skapar jag ett nytt ”Workspace”.

Sedan lägger jag till en ny ”Store” med externa WMS data som pekar på tjänsten från QGIS server.

Sedan är det bara att ”publicera” lagret. Du kan antingen publicera hela projektet, eller de olika lagerna för sig. Jag tar hela lagret.

Jag passar även på att döpa om tjänsten till något mer passande än ”projektfil”.

Testa tjänsten via ”Layer Preview” och ”Open Layers”. Om allt fungerat så skall ditt lager dyka upp i ett webfönster.

GeoExplorer

Nu är vi snart färdiga. Öppna GeoExplorer (http://Server-IP:8080/geoexplorer/) och lägg till det nyligen skapade WMS lagret från den lokala GeoServern. Jag tar bort bakgrundskartan för att tydligare se mina egna lager.

När man klickar på Publicera så får man en HTML text som bara är att klistra in på en webbsida där man vill visa kartan.

Resultatet kan ni se nedan.

Administrera

Det enda jag behöver göra nu för att uppdatera kartan på hemsidan är att öppna QGIS projektet, redigera och spara om. Allt annat sköts automatiskt. Nja, eftersom GeoServer cachar kartorna så måste man nollställa cachen på servern, och om det inte fungerar så prova att starta om GeoServern. Det kan även vara läge att ”Enable disk quota limits” i GeoWebCache på GeoServern.

För att testa så ändrar jag lagerstilarna för mina lager så att det blir lite mera standardiserade.

Jag hoppas ni förstår lite hur jag tänker när jag sätter upp en server på detta vis. Det är lite småpill och omvägar, men i slutändan så är det enkelt och smidigt att hålla en webbkarta uppdaterad.

Dessutom så kan användare med olika behov ansluta på olika platser i kedjan:

  • Dataredigerare direkt mot PostGIS.
  • Kartdesignern redigerar QGIS projektet.
  • Lokala klienter använder WMS tjänsten direkt.
  • Externa klienter använder webbkartan på en hemsida.

Lycka Till.

Annonser

Taggar:, , , , , , , ,

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s

%d bloggare gillar detta: