Erinevus lehekülje "OSM kaardiserver Mandriva 2010 Spring baasil" redaktsioonide vahel
1. rida: | 1. rida: | ||
[[kategooria:mandriva]] | [[kategooria:mandriva]] | ||
+ | |||
+ | == Eesmärk == | ||
+ | Selle lehe eesmärk on juhendada, kuidas paigaldada oma arvutisse OSM -i kaardiserver. Lõpptulemusena on sul olemas postgre andmebaas osm -i andmetega, seadistatud mapniku kaardipiltide generaator, apache weebi server kos mod_tile mooduliga, mis reaalajas genereerib kaardi pilte ja näidis leht kaardi vaatamiseks. | ||
+ | |||
+ | == Mis asi on OSM == | ||
+ | OpenStreetMap (ehk OSM) on justkui maakaartide Vikipeedia. Inimesed nagu Sina koguvad asukohainfot GPS-seadmetega või vabalt kasutatavatelt aerofotodelt ja kaartidelt, laevad selle üles ja lisavad sinna nimed ning muud tunnused (sildid). Tulemusena saadav vabalt kasutatav maailma kaart asub aadressil [http://www.openstreetmap.org www.openstreetmap.org]. | ||
+ | |||
+ | OpenStreetMapi eesmärk on luua ja jagada tasuta ja vaba kasutusega geograafilist infot, eelkõige teedekaarte. Projekt algatati, sest enamus kaartidest ja kaardiandmetest, mida peetakse "tasuta" andmeteks, on tegelikult õiguslike või tehniliste piirangutega, mis takistab nende kasutamist loomingulisteks, ärilisteks ja muudeks ettearvamatuteks vajadusteks. | ||
+ | |||
+ | Eestis on kohalikuks OSM -i arendamiseks loodud ka MTÜ Avatud Maakaardi Selts. MTÜ Avatud Maakaardi Selts on organisatsioon, mille tegevuse eesmärgiks on vaba geoinfo kogumine, korrastamine, talletamine ning levitamine. Avatud Maakaardi Selts teeb seda nii oma liikmete kui teiste asjast huvitatud isikute ja organisatsioonide ühise välitöö kui avalikest andmeallikaist pärit andmete koondamise kaudu. Kõik projekti raames kogutud andmed talletatakse globaalse projekti Openstreetmap raames ning on kõikidele soovijatele kättesaadavad vaba kasutust võimaldava litsentsi (Creative Commons Attribution Share-Alike v 2.0) alusel. | ||
+ | |||
+ | Avatud Maakaardi seltsi kohta lähemalt infot aadressil [http://www.maakaart.ee Avatud Maakaardi Selts]. | ||
== Riistvaralised nõuded == | == Riistvaralised nõuded == |
Redaktsioon: 16. juuli 2010, kell 12:45
Sisukord
[peida]Eesmärk
Selle lehe eesmärk on juhendada, kuidas paigaldada oma arvutisse OSM -i kaardiserver. Lõpptulemusena on sul olemas postgre andmebaas osm -i andmetega, seadistatud mapniku kaardipiltide generaator, apache weebi server kos mod_tile mooduliga, mis reaalajas genereerib kaardi pilte ja näidis leht kaardi vaatamiseks.
Mis asi on OSM
OpenStreetMap (ehk OSM) on justkui maakaartide Vikipeedia. Inimesed nagu Sina koguvad asukohainfot GPS-seadmetega või vabalt kasutatavatelt aerofotodelt ja kaartidelt, laevad selle üles ja lisavad sinna nimed ning muud tunnused (sildid). Tulemusena saadav vabalt kasutatav maailma kaart asub aadressil www.openstreetmap.org.
OpenStreetMapi eesmärk on luua ja jagada tasuta ja vaba kasutusega geograafilist infot, eelkõige teedekaarte. Projekt algatati, sest enamus kaartidest ja kaardiandmetest, mida peetakse "tasuta" andmeteks, on tegelikult õiguslike või tehniliste piirangutega, mis takistab nende kasutamist loomingulisteks, ärilisteks ja muudeks ettearvamatuteks vajadusteks.
Eestis on kohalikuks OSM -i arendamiseks loodud ka MTÜ Avatud Maakaardi Selts. MTÜ Avatud Maakaardi Selts on organisatsioon, mille tegevuse eesmärgiks on vaba geoinfo kogumine, korrastamine, talletamine ning levitamine. Avatud Maakaardi Selts teeb seda nii oma liikmete kui teiste asjast huvitatud isikute ja organisatsioonide ühise välitöö kui avalikest andmeallikaist pärit andmete koondamise kaudu. Kõik projekti raames kogutud andmed talletatakse globaalse projekti Openstreetmap raames ning on kõikidele soovijatele kättesaadavad vaba kasutust võimaldava litsentsi (Creative Commons Attribution Share-Alike v 2.0) alusel.
Avatud Maakaardi seltsi kohta lähemalt infot aadressil Avatud Maakaardi Selts.
Riistvaralised nõuded
Riistvara serveri jaoks sõltub sellest, kui suurt osa kaardist tahetakse serveerima hakata. Ainult Eesti kaardi näitamiseks piisab 4G rammi ja 200G ketta pinda ja üks kõik milline tänapäevane protsessor.
Euroopa kaardi näitamiseks on 4G mälu kindel miinimum ja väga tugev soovitus on kasutada 8G ketta pinda peaks olema 300-400G ja protsessoril vähemalt 4 tuuma.
Maailma kaardi puhul 16G miinimum 24G soovituslik
Kui on kavas kogu planeedi või ka euroopa kaarti hakata näitama siis on soovitav varakult hakata neid andmeid alla laadima, kuna maailma fail (seisuga 08-Jul-2010 00:45) on 10G, Euroopa (seisuga 13 juuli 2010) 3.5G. Hetkel veel Eesti faili pärast pole vaja muretseda, see on kõigest 32M suur (seisuga 13 juuli 2010). Kõik on tihendatud bz2 -ga.
Mandriva paigaldus
Soovitav paigaldada mandriva Free versioon mandriva-linux-one-2010-spring-KDE4-europe2-cdrom-i586.iso
Täpsemat kirjeldust Mandriva paigaldamise kohta saab siit Installing_Mandriva_Linux
Postgre piagaldus ja seadistamine
Kui puhas install on tehtud tuleb paigaldada postgresql andmebaas ja postgre postgis -i laiendus.
urpmi postgresql8.4, postgresql8.4-contrib, postgis, subversion, task-c++-devel
Peale postgre paigaldamist tuleks see ka käivitada, mille jooksul luuakse default andmebaasid ja configuratsiooni fail. Mandriva 2010.1 postgre install miskipärast teeb default template andmebaasid ASCII vormingus, mille tulemusena ei saa nende pealt luua UTF8 vormingus baase.
[postgres@xxx ~]$ psql psql (8.4.4) Type "help" for help. postgres=# \l List of databases Name | Owner | Encoding | Collation | Ctype | Access privileges -----------+----------+-----------+-----------+-------+----------------------- postgres | postgres | SQL_ASCII | C | C | template0 | postgres | SQL_ASCII | C | C | =c/postgres : postgres=CTc/postgres template1 | postgres | SQL_ASCII | C | C | =c/postgres : postgres=CTc/postgres (3 rows) postgres=#
Et seda probleemi parandada, tuleb olemasolevad template0 ja template1 baasi ära kustutada
[postgres@andres ~]$ rm -rf /var/lib/pgsql/data
... ja uued genereerida UTF8 vormingus
[postgres@andres ~]$ initdb -E=UTF8 The files belonging to this database system will be owned by user "postgres". This user must also own the server process. ... WARNING: enabling "trust" authentication for local connections You can change this by editing pg_hba.conf or using the -A option the next time you run initdb. Success. You can now start the database server using: postgres -D /var/lib/pgsql/data or pg_ctl -D /var/lib/pgsql/data -l logfile start [postgres@andres ~]$psql psql (8.4.4) Type "help" for help. postgres=# \l List of databases Name | Owner | Encoding | Collation | Ctype | Access privileges -----------+----------+----------+-----------+-------+----------------------- postgres | postgres | UTF8 | C | C | template0 | postgres | UTF8 | C | C | =c/postgres : postgres=CTc/postgres template1 | postgres | UTF8 | C | C | =c/postgres : postgres=CTc/postgres (3 rows) postgres=#
Kui postgres on paigaldatud siis tuleks natukene postgre ja kerneli näitajaid muuta, et andmebaas paremini töötaks.
Muuda /var/lib/pgsql/data/postgresql.conf faili
shared_buffers = 256MB checkpoint_segments = 20 maintenance_work_mem = 256MB autovacuum = off
Muuda /etc/sysctl.conf
kernel.shmmax = 268435456
Nüüd tuleks postgre -le restart teha
/etc/init.d/postgresql restart
ja kerneli parameetrid uuesti sisse lugeda
sysctl -p
Järgmiseks loome baasi, kasutaja ja plpgsql keele
- createuser mapnik
- createdb -E UTF8 -O mapnik gis
- createlang plpgsql gis
[root@xxx]# su - postgres [postgres@xxx ~]$ createuser mapnik Shall the new role be a superuser? (y/n) y [postgres@xxx ~]$ createdb -E UTF8 -O mapnik gis [postgres@xxx ~]$ createlang plpgsql gis [postgres@xxx ~]$
Seadistame ära postgis -i. Lisame postgre -le postgisi laiendused:
- psql -d gis -f /usr/share/postgresql/contrib/postgis-1.5/postgis.sql
[postgres@andres ~]$ psql -d gis -f /usr/share/postgresql/contrib/postgis-1.5/postgis.sql SET BEGIN CREATE FUNCTION CREATE FUNCTION CREATE FUNCTION CREATE FUNCTION CREATE TYPE CREATE FUNCTION CREATE FUNCTION CREATE FUNCTION ... DROP FUNCTION DROP FUNCTION DROP FUNCTION [postgres@andres ~]$
Anname teatud tabelitele kasutaja mapnik õigused:
- ALTER TABLE geometry_columns OWNER TO mapnik;
- ALTER TABLE spatial_ref_sys OWNER TO mapnik;
[postgres@andres ~]$ psql -d gis psql (8.4.4) Type "help" for help. gis=# ALTER TABLE geometry_columns OWNER TO mapnik; ALTER TABLE gis=# ALTER TABLE spatial_ref_sys OWNER TO mapnik; ALTER TABLE gis=# \q [postgres@andres ~]$
Käivitame veel ühe sql faili baasis
- psql -d gis -f /usr/share/postgresql/8.3/contrib/_int.sql
[postgres@andres ~]$ psql -d gis -f /usr/share/postgresql/contrib/_int.sql SET psql:/usr/share/postgresql/contrib/_int.sql:14: NOTICE: type "query_int" is not yet defined DETAIL: Creating a shell type definition. CREATE FUNCTION psql:/usr/share/postgresql/contrib/_int.sql:19: NOTICE: argument type query_int is only a shell CREATE FUNCTION CREATE TYPE CREATE FUNCTION ... CREATE FUNCTION CREATE OPERATOR CLASS [postgres@andres ~]$
osm2pgsql
Kui andmebaas on paigaldatud ja seadistatud tuleb andmed baasi importida. Selleks tuleb kasutada programmi nimega osm2pgsql.
[andres@xxx ~]$ svn co http://svn.openstreetmap.org/applications/utils/export/osm2pgsql/ A osm2pgsql/Makefile.in A osm2pgsql/debian A osm2pgsql/debian/control ... A osm2pgsql/README.txt A osm2pgsql/pgsql.h A osm2pgsql/output-gazetteer.h Checked out revision 22342. [andres@xxx ~]$
Kompileerime osm2pgsql -i
- cd osm2pgsql
- ./autogen.sh
- ./configure
- make
- make install
[andres@xxx ] cd osm2pgsql/ [andres@xxx osm2pgsql]$ ./autogen.sh [andres@xxx osm2pgsql]$ ./configure checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out ... configure: creating ./config.status config.status: creating Makefile config.status: creating config.h [andres@xxx osm2pgsql]$ make gcc -g -O2 -Wall -Wextra -I/usr/include/libxml2 -I/usr/include -I/usr/include -DVERSION=\"0.69-22342\" -DHAVE_PTHREAD - DOSM2PGSQL_DATADIR=\"/usr/local/share/osm2pgsql\" -c -o expire-tiles.o expire-tiles.c ... gcc -g -O2 -Wall -Wextra -I/usr/include/libxml2 -I/usr/include -I/usr/include -DVERSION=\"0.69-22342\" -DHAVE_PTHREAD - DOSM2PGSQL_DATADIR=\"/usr/local/share/osm2pgsql\" -c -o UTF8sanitizer.o UTF8sanitizer.c g++ -c -o build_geometry.o build_geometry.cpp gcc -o osm2pgsql expire-tiles.o input.o keyvals.o middle-pgsql.o middle-ram.o osm2pgsql.o output-gazetteer.o output-null.o output-pgsql.o pgsql.o rb.o reprojection.o sprompt.o text-tree.o UTF8sanitizer.o build_geometry.o -g -O2 -Wall -Wextra - I/usr/include/libxml2 -I/usr/include -I/usr/include -DVERSION=\"0.69-22342\" -DHAVE_PTHREAD - DOSM2PGSQL_DATADIR=\"/usr/local/share/osm2pgsql\" -lxml2 -lz -lm -L/usr/lib64 -lgeos -L/usr/lib64 -lpq -lbz2 -lz -g -lproj -lstdc++ -lpthread [andres@xxx osm2pgsql]$ su [root@xxx osm2pgsql]# make install mkdir -p /usr/local/bin install -m 0755 osm2pgsql /usr/local/bin mkdir -p /usr/local/share/osm2pgsql install -m 0644 default.style /usr/local/share/osm2pgsql [root@andres osm2pgsql]#
Selleks, et saaks osm -i andmeid postgre baasi importida tuleb baasi lisada porjektsioonide tugi. Selle toe saab lisada .sql failiga mis tuli kaasa osm2pgsql programmiga: 900913.sql
Kõigepealt kopeerime faili postgre kodukataloogi ja anname talle õigusi juurde, et postgres kasutajal saaks seda baasi importida
- [root@xxx osm2pgsql]# cp 900913.sql ~postgres/
- [root@xxx osm2pgsql]# chmod 777 /var/lib/pgsql/900913.sql
Impordime projektsiooni faili
- psql -f 900913.sql -d gis
[root@xxx osm2pgsql]# su - postgres [postgres@xxx ~]$ psql -f 900913.sql -d gis INSERT 0 1 [postgres@xxx ~]$
Selleks ajaks peaks olema kohal andme fail. See tuleb kopeerida postgres kodukataloogi ja anda talle kasutaja postgres õigused või garanteerida, et postgres kasutajal on õigus seda faili
Praeguse näite puhul imporditakse euroopa fail, mis paikneb eraldi kettal, mis peaks andma kiirust impordile juurde.
- [root@xxx osm2pgsql]# chmod 777 /media/disk/europe.osm.
Nüüd hakkame andmeid baasi importima. Selleks võiks igaks juhuks rohkem aega varuda, kui ei ole tegu eesti andmete impordiga. Halvemal juhul on euroopa andmete import võtnud 4G mälu juures 5 ööpäeva tavalise desktop masina puhul.
- osm2pgsql --slim -d gis -S /usr/local/share/osm2pgsql/default.style -C4000 /media/disk/europe.osm.bz2
[postgres@xxx ~]$ osm2pgsql --slim -d gis -S /usr/local/share/osm2pgsql/default.style -C4000 /media/disk/europe.osm.bz2 osm2pgsql SVN version 0.69-22342 Using projection SRS 900913 (Spherical Mercator) Setting up table: planet_osm_point NOTICE: table "planet_osm_point" does not exist, skipping ... Reading in file: /media/disk/europe.osm.bz2 Processing: Node(870k) Way(0k) Relation(0k) ... Läheb kaua aega ... [postgres@xxx ~]