Mapserver

Linux.fista
Versio hetkellä 19. marraskuuta 2010 kello 11.24 – tehnyt Otto (keskustelu | muokkaukset) (→‎Laattapohjainen kartta)
Siirry navigaatioon Siirry hakuun

Mapserver on Minnesotan yliopiston yhteistyössä NASAn kanssa kehittämä ohjelma, jolla voi tuottaa mm. tietokannassa olevasta paikkatietoaineistosta karttakuvia.

Tällä sivulla on ohje, miten omalle koneelleen voi asentaa Mapserverin sekä OpenStreetMap.org:n Suomen paikkatietoaineistot ja selata karttaa OpenLayers-käyttöliittymäkomponentilla. Ohje on testattu Ubuntu 10.04:llä ja todennäköisesti toimii kaikissa Debian-pohjaisissa jakeluissa. Ohjeen pääasiallisena lähteenä on toiminut http://trac.osgeo.org/mapserver/wiki/RenderingOsmData

Asenna osm2pgsql (sen riippuvuudet asentaa samalla mm. PostgreSQL:n), mapserverin cgi-versio, Apache ja Subversion

sudo apt-get install osm2pgsql cgi-mapserver mapserver-bin apache2 subversion

Postgre-nimisenä käyttäjänä luo tietokanta ja asenna sinne PostGIS-laajennus

sudo -u postgres createdb osm
sudo -u postgres createlang plpgsql osm
sudo -u postgres psql -d osm -f /usr/share/postgresql/8.4/contrib/postgis.sql 
sudo -u postgres psql -d osm -f /usr/share/postgresql/8.4/contrib/spatial_ref_sys.sql 
sudo -u postgres psql -d osm -f /usr/share/postgresql/8.4/contrib/postgis_comments.sql 

Siirry www-kansioon

cd /var/www/

Lataa finland.osm.bz2 Geofabrikin palvelimelta

wget http://download.geofabrik.de/osm/europe/finland.osm.bz2

Muunna aineisto tietokantaan siten, että RAM-muistia käytetään eninään 3 GB. Ota käyttöön myös taulukoiden etuliite on "osm" (-p osm), koska se on oletuksena jälkikäsittelyskriptissä. Optio -l säilyttää OSM datan EPSG:4326-projektiossa.

sudo -u postgres osm2pgsql -d osm -p osm -s -C 3000 -l finland.osm.bz2 

Luo käyttäjätunnus, jonka jälkikäsittelyskripti olettaa löytävänsä.

sudo -u postgres psql -d osm -c "create user \"www-data\" with password 'www-data'"

Lataa mapserveriin OSM-karttatiedoston tekoon tarvittavat skriptit

svn checkout http://mapserver-utils.googlecode.com/svn/trunk/ mapserver-utils-read-only

Siirry kansioon

cd mapserver-utils-read-only/

Aja jäkikäsittely

sudo -u postgres psql -d osm -f postprocess.sql 

Tarkista kartan laajuus

sudo -u postgres psql -d osm -c "SELECT extent(way) FROM osm_line"

Muokaa Makefilen kohta "cpp-4.2" vastaamaan cpp-versiotasi (Ubuntu 10.04:ssä 4.4).

nano Makefile 

Lisää riville 38:

extent="19.0832097,59.3714049,31.5868545,70.0947393"

Luo karttatiedosto (skripti myös lataa Shapefilen, jota tarvitaan karttatiedoston luomiseen.)

make

Jos karttatiedoston luominen ei onnistu, tarkista että järjestelmässä on cpp ja muut käännöstyökalut asennettuna.

Valmiiseen tiedostoon osm-mapserver.map muuta riville 19:

wms_srs "epsg:4326 epsg:900913"

Nyt voit komentoriviltä tuottaa karttakuvia, esim:

http://otto.kekalainen.net/karttaohjelmat/openlayers-mapserver.html

Voit myös millä tahansa WMS-yhteensopivalla karttaohjelmalla avata kartan osoitteesta http://localhost/cgi-bin/mapserv?/var/www/mapserver-utils-read-only/osm-mapserver.map

Selainpohjainen kartta OpenLayersillä

Edellä tehtyä karttaa voi selata myös selainpohjaisesti OpenLayersillä.

Lataa OpenLayers ja sitä käyttävä esimerkkisivu

cd /var/www/
wget http://openlayers.org/download/OpenLayers-2.10.tar.gz
gunzip openlayers-mapserver.zip
wget http://otto.kekalainen.net/karttaohjelmat/openlayers-mapserver.html

Sitten vain selaimella osoitteeseen http://localhost/openlayers-mapserver.html niin kartan pitäisi latautua näköiseksi.

Kuvan latautuminen riippuu tietokoneen tehosta. Paljon yksityiskohtia sisältävän kuvan piirtoon voi Mapserverillä mennä yli kymmenen sekuntia.

Laattapohjainen kartta

Kartan kokonaiskäyttökokemuksen saa nopeammaksi käyttämällä ns. karttakuvalaattoja. Ubuntun pakettivarastosta löytyy suoraan tilecache-ohjelma.

sudo apt-get install tilecache

Lataa räätälöidyt asetustiedostot

cd /var/www/mapserver-utils-read-only/
wget http://otto.kekalainen.net/karttaohjelmat/Makefile
wget http://otto.kekalainen.net/karttaohjelmat/tilecache.cfg

Luo karttakuvalaatat

make tiles

Luonti kestää kauan. Jos et jaksa odottaa tai kiintolevytila on loppumassa, keskeytä painamalla Ctrl+C

Itse ajoin make tiles -komentoa noin 15 tuntia, ja siinä ajassa 2,4 GHz prosessori oli ehtinyt piirtämisessä 10-tason lähennyksen puoliväliin.

Lähennystaso Kuvalaattojen määrä Kuvalaattojen yhteenlaskettu tiedostokoko
00 338 kpl 4,8 MB
01 675 kpl 5,3 MB
02 1350 kpl 5,5 MB
03 2700 kpl 8,8 MB
04 5400 kpl 22 MB
05 kpl 51 MB
06 13500 kpl 117 MB
07 62100 kpl 415 MB
08 217800 kpl 1,3 GB
09 832050 kpl 3,9 GB
10 1950525 kpl ~16 GB
11 ei mitattu ei mitattu


Jos haluat selata karttaa TMS-standardilla, lataa

wget http://otto.kekalainen.net/karttaohjelmat/openlayers-tilecache.html

ja avaa selaimessa http://localhost/openlayers-tilecache.html

Vastaavasti suoraan kiintolevyltä ja WMS-C-standardilla voi selata valmiita karttatiiliä huippunopeasti sivulla

wget http://otto.kekalainen.net/karttaohjelmat/openlayers-wms-c.html

..ja avaa selaimessa http://localhost/openlayers-wms-c.html


Paikkatietojärjestelmät ovat melko monimutkaisia, joten kannatta opiskella kunnolla kaikki käsitteet (datumit, projektiot, extend, bounding box jne) sekä selailla manuaaleja ja muita oppaita netissä. Tämä sivu on vain pikainen johdatus aiheeseen ja omat muistiinpanoni miten sain kaikki toimimaan.