Mapserver
Mapserver on Minnesotan yliopiston yhteistyössä NASAn kanssa kehittämä ohjelma, jolla voi tuottaa mm. tietokannassa olevasta paikkatietoaineistosta karttakuvia. Mapserver on vaihtoehto Geoserverille.
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
postgres-nimisenä käyttäjänä luodaan tietokanta ja asennetaan 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 (180MB)
wget http://download.geofabrik.de/osm/europe/finland.osm.bz2
Muunna aineisto tietokantaan siten, että RAM-muistia käytetään enintään 3 GB. Ota käyttöön myös taulukoiden etuliite "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:
shp2img -m osm-mapserver.map -o osm.png -e 19.0832097 59.3714049 31.5868545 70.0947393
Komennon suorittaminen kesti 2.4 GHz -koneellani ensimmäisessä ajossa noin 6 minuuttia, mutta toisella ajolla vain 1,5 minuuttia, koska noin 1,7 GB aineisto oli valmiiksi RAM-muistissa, kiitos Linuxin muistinhallinnan. Jos tekee kuvan pienemmästä alueesta, esim. shp2img -m osm-mapserver.map -o osm.png -e 25 65 26 66, menee siihen vain pari sekuntia.
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. Isoimmilla suurennustasoilla piirtoon tarvitaan paljon laskentaa ja kuvan tekoon voi mennä kymmeniä sekunteja. Isommilla suurennuksilla kuvan piirtoon menee enää muutama sekunti.
Laattapohjainen kartta
Kartan latautumisnopeuden saa sekunneista millisekuntiehin 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 | 900 kpl | 4,8 MB |
01 | 900 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 | ~4 miljoonaa 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.
Jakelukohtaista
Ubuntu
Paketit:
- osm2pgsql (sen riippuvuudet asentaa samalla mm. PostgreSQL:n),
- mapserverin cgi-versio,
- Apache
- Subversion
sudo apt-get install osm2pgsql cgi-mapserver mapserver-bin apache2 subversion