Kā iegūt noteiktus datus no Openstreetmap datubāzes
Openstreetmap nav tikai bezmaksas karte, kuru jebkurš var papildināt. Tā principā ir tieši datubāze. Ļoti daudz objektu nemaz nav attēloti uz Openstreetmap.org vietnē redzamās kartes – tā ir tikai tāda kā demo versija, ko iespējams veidot no šiem datiem.
Rakstā apskatīšu konkrētu piemēru – iegūsim GPS ierīcē lietojamu telšu kempinga punktu failu Igaunijai. Raksts apskata MacOS, taču līdzīgs būs process arī uz Linux, tikai Brew (vai Macports/Fink) vietā tur izmantotu apt-get vai līdzīgi.
Priekšnoteikums
Jau iepriekšējos rakstos esmu minējis, ka uz MacOS ieteicams uzinstalēt Homebrew. Ja to esi izdarījis, nekas šajā punktā nav jādara. Ja nē – dari šādi, no AppStore uzinstalē Xcode, un pēc tam, MacOS terminal logā ielīmē šo rindu:
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
Tas uzinstalēs sistēmu, kas ļauj ātri instalēt jaunas komandrindas programmas, nemācoties kompilēt un saprast visādas sarežģītas lietas.
Instalējam programmas
Osmosis ļauj apstrādāt Openstreetmap datubāzu datus.
brew install osmosis
GPSbabel programma ļauj datus konvertēt visādos formātos.
brew install gpsbabel
Apstrādājam datus
Tad ielādējam OSM datubāzes failu vajadzīgajai valstij vai reģionam no Geofabrik. Rezultātā mums ir fails “estonia.osm“. No tā mēs izfiltrēsim ārā tikai datus, kas atzīmēti kā “tourism=camp_site” un saglabāsim jaunā OSM failā “rmk.osm“, ar šo komandu:
osmosis -q --rx estonia.osm --tf accept-nodes tourism=camp_site --tf reject-ways --tf reject-relations --wx rmk.osm
Tālāk atliek šos datus konvertēt uz GPS ierīcei saprotamu formātu GPX. To daram ar GPSbabel:
gpsbabel -i osm -f rmk.osm -o gpx -F rmk.gpx
Beigās esam ieguvuši failu “rmk.gpx“, kuru var lietot telefonos, GPS ierīcēs vai tamlīdzīgi. Pārbaudīt vai faila saturs ir pareizs, varam ar GPSvisualizer.net, kur tas tiks attēlots uz kartes.
Te arī rezultāts:
Protams, Igaunijā RMK kempinga vietu ir vairāk, un tieši tāpēc jebkurš var iet un atzīmēt redaktorā trūkstošās vietas, lai datubāze nākotnē ir vēl pilnīgāka.