{"id":1094,"date":"2016-11-16T20:00:10","date_gmt":"2016-11-16T19:00:10","guid":{"rendered":"http:\/\/morony.pl\/?p=1094"},"modified":"2016-11-16T21:03:13","modified_gmt":"2016-11-16T20:03:13","slug":"gmt-piekne-mapy-w-kilku-krokach","status":"publish","type":"post","link":"https:\/\/morony.pl\/?p=1094","title":{"rendered":"GMT &#8211; pi\u0119kne mapy w kilku krokach"},"content":{"rendered":"<p>GMT (Generic Mapping Toolbox) to zestaw narz\u0119dzi do pracy z danymi geograficznymi (i nie tylko) opracowany na uniwersytecie na Hawajach (o ma\u0142o co nie przyj\u0119li mnie tam do pracy nad tym projektem&#8230; ehhh&#8230;), o kt\u00f3rym ma\u0142o kto pewnie s\u0142ysza\u0142. Podstawowym zastosowaniem GMT jest tworzenie r\u00f3\u017cnego rodzaju map. Na <a href=\"http:\/\/gmt.soest.hawaii.edu\/\">stronie domowej projektu<\/a> opisana jest instalacja (Windows, Mac OS X, Linux) oraz udost\u0119pniona jest obszerna dokumentacja, wi\u0119c nie b\u0119d\u0119 tych rzeczy tutaj powtarza\u0142. Chcia\u0142em Was zach\u0119ci\u0107 kilkoma prostymi przyk\u0142adami do zapoznania si\u0119 z tym pakietem. Uwaga: to nie jest pe\u0142ny tutorial, to tylko zach\u0119ta!<\/p>\n<p><strong>Przyk\u0142ad 1:<\/strong> Mapa bazowa Europy. GMT jest oczywi\u015bcie pakietem bez interfejsu graficznego, wi\u0119c wszystko odbywa si\u0119 z wiersza polece\u0144:<br \/>\n<center><\/p>\n<pre style=\"width:700px; overflow:auto; text-align:left;\"><code class=\"bash\">gmt psbasemap -R-15\/35\/30\/72 -Jl9\/11\/45\/70\/1:40000000 -B5g2:.\"Europa\": -K -P -Y10 > Europa.ps\r\ngmt pscoast -R -Di -Ia\/0.03p,black -J -N1\/0.5p,- -G#dde6d5 -S#a5bfdd -A0\/0\/4 -W0.5p,black -O -P >> Europa.ps\r\nconvert -geometry 2048x2048 -density 300 -trim Europa.ps Europa.png\r\n<\/code><\/pre>\n<p><\/center><br \/>\nPierwsz\u0105 komend\u0105 tworzymy map\u0119 bazow\u0105 o podanym wymiarze (-R), w projekcji azymutalnej r\u00f3wnopowierzchniowej Lamberta (-Jl). GMT wynik (w postaci j\u0119zyka post script) wypisuje na standardowe wyj\u015bcie. Drug\u0105 komend\u0105 rysujemy na mapie lini\u0119 brzegow\u0105 i granice pa\u0144stw. Opcja -D odpowiada za dok\u0142adno\u015b\u0107 granic, -I za rysowanie rzek, -G i -S za kolory morza i l\u0105d\u00f3w itd. (wszystko dok\u0142adnie opisane w dokumentacji). Trzeci\u0105 komend\u0105 konwertujemy ps na png. Oto wynik:<\/p>\n<p><center><a href=\"http:\/\/morony.pl\/wp-content\/uploads\/2016\/11\/Europa.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"1013\" src=\"http:\/\/morony.pl\/wp-content\/uploads\/2016\/11\/Europa.png\" alt=\"europa\" style=\"width:400px;height:auto;\" class=\"alignnone size-full wp-image-1098\" srcset=\"https:\/\/morony.pl\/wp-content\/uploads\/2016\/11\/Europa.png 1000w, https:\/\/morony.pl\/wp-content\/uploads\/2016\/11\/Europa-296x300.png 296w, https:\/\/morony.pl\/wp-content\/uploads\/2016\/11\/Europa-768x778.png 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/a><\/center><\/p>\n<p><strong>Przyk\u0142ad 2:<\/strong> Mapa bazowa Europy z naniesionymi punktami. Sama mapa bazowa jest \u0142adna, ale ma\u0142o u\u017cyteczna. Cz\u0119sto chcemy na mapie pokaza\u0107 jakie\u015b lokalizacje. Na przyk\u0142ad lotniska. Ze strony <a href=\"http:\/\/openflights.org\/data.html#airport\">http:\/\/openflights.org\/data.html#airport<\/a> pobra\u0142em plik z list\u0105 lotnisk na \u015bwiecie i przygotowa\u0142em map\u0119:<br \/>\n<center><\/p>\n<pre style=\"width:700px; overflow:auto; text-align:left;\"><code class=\"bash\">awk -F, '{print $8 \"\\t\" $7}' airports.dat > airports.txt\r\ngmt psbasemap -R-15\/35\/30\/72 -Jl9\/11\/45\/70\/1:40000000 -B5g2:.\"Airports in Europe\": -K -P -Y10 > Europa_air.ps\r\ngmt pscoast -R -Di -J -N1\/0.5p,- -G#dde6d5 -S#a5bfdd -A0\/0\/1 -W0.5p,black -O -P -K >> Europa_air.ps\r\ngmt psxy airports.txt -Jl -O -R -Sc0.1c -W -G255\/0\/0 -K >> Europa_air.ps\r\nconvert -geometry 2048x2048 -density 300 -trim Europa_air.ps Europa_air.png\r\n<\/code><\/pre>\n<p><\/center><br \/>\nW pierwszej linii konwertuj\u0105 plik z danymi lotnisk na list\u0119 wsp\u00f3\u0142rz\u0119dnych geograficznych. Drug\u0105 i trzeci\u0105 lini\u0119 ju\u017c znamy. W czwartej linii rysuj\u0119 na mapie czerwone k\u00f3\u0142eczka w ka\u017cdej z zapisanych lokalizacji. Oto wynik:<\/p>\n<p><center><a href=\"http:\/\/morony.pl\/wp-content\/uploads\/2016\/11\/Europa_air.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"1013\" src=\"http:\/\/morony.pl\/wp-content\/uploads\/2016\/11\/Europa_air.png\" alt=\"europa_air\" style=\"width:400px;height:auto;\"  class=\"alignnone size-full wp-image-1097\" srcset=\"https:\/\/morony.pl\/wp-content\/uploads\/2016\/11\/Europa_air.png 1000w, https:\/\/morony.pl\/wp-content\/uploads\/2016\/11\/Europa_air-296x300.png 296w, https:\/\/morony.pl\/wp-content\/uploads\/2016\/11\/Europa_air-768x778.png 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/a><\/center><\/p>\n<p><strong>Przyk\u0142ad 3:<\/strong> Mapa topograficzna Polski. Jako przyk\u0142ad prezentacji rozk\u0142adu przestrzennego zmiennej wybra\u0142em wysoko\u015b\u0107 terenu nad poziomem morza. Mia\u0142em przygotowany wcze\u015bniej plik tekstowy zawieraj\u0105cy informacje o wysoko\u015bci n.p.m.:<\/p>\n<p><center><a href=\"http:\/\/morony.pl\/wp-content\/uploads\/2016\/11\/screenshot_42.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"718\" src=\"http:\/\/morony.pl\/wp-content\/uploads\/2016\/11\/screenshot_42-1024x718.png\" alt=\"screenshot_42\" style=\"width:200px;height:auto;\" class=\"alignnone size-large wp-image-1102\" srcset=\"https:\/\/morony.pl\/wp-content\/uploads\/2016\/11\/screenshot_42-1024x718.png 1024w, https:\/\/morony.pl\/wp-content\/uploads\/2016\/11\/screenshot_42-300x210.png 300w, https:\/\/morony.pl\/wp-content\/uploads\/2016\/11\/screenshot_42-768x538.png 768w, https:\/\/morony.pl\/wp-content\/uploads\/2016\/11\/screenshot_42.png 1044w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/center><\/p>\n<p>Teraz wystarczy tylko przeliczy\u0107 te dane na siatk\u0119 geograficzn\u0105 i nanie\u015b\u0107 na map\u0119:<\/p>\n<p><center><\/p>\n<pre style=\"width:700px; overflow:auto; text-align:left;\"><code class=\"bash\">gmt surface DEM.xyz -R13.8\/24.5\/48.7\/55 -I0.02\/0.01 -GDEM.grd -T0.5 -C0.01\r\ngmt psbasemap -R13.8\/24.5\/48.7\/55 -Jl19.20\/19.30\/52\/60\/1:5000000 -B2g2:.\"Polska - Mapa Topo\": -K -P -Y10 > PL.ps\r\ngmt makecpt -CDEM_PL_wiki.cpt -T-10\/2500\/1 > tmp.cpt\r\ngmt psscale -D3.1i\/-.5i\/7.0i\/0.5ih -Ctmp.cpt -B250::\/:m: -O -K -P >> PL.ps\r\ngmt grdimage -Bg DEM.grd -R -J -O -Q -K -nn+a -Ctmp.cpt >> PL.ps\r\ngmt pscoast -R  -Ia -Df -J -N1\/0.5p,- -S#a5bfdd -A0\/0\/4 -W0.25p,black -K -O -P -L23.7\/49.1\/54\/100+u -T14.2\/54.5\/1.5:: >> PL.ps\r\nconvert -geometry 2048x2048 -density 300 -trim PL.ps PL.png\r\n<\/code><\/pre>\n<p><\/center><\/p>\n<p>W pierwszej linii przeliczamy dane w punktach na powierzchni\u0119 w siatce geograficznej i zapisujemy do pliku grd. W drugiej linii tworzymy map\u0119 bazow\u0105 dla Polski. Trzecia linia to przygotowanie skali kolor\u00f3w na podstawie wzorca (DEM_PL_wiki.cpt, du\u017co wzorc\u00f3w <a href=\"http:\/\/soliton.vm.bytemark.co.uk\/pub\/cpt-city\/\">tutaj<\/a>). Czwarta linia to dodanie do mapy skali kolor\u00f3w. Pi\u0105ta linia to naniesienie na map\u0119 naszej powierzchni w kolorach zgodnych ze skal\u0105. Sz\u00f3sta linia to na\u0142o\u017cenie na wszystko granic i zamalowanie wody na niebiesko. Oto efekt:<\/p>\n<p><center><a href=\"http:\/\/morony.pl\/wp-content\/uploads\/2016\/11\/PL.png\"><img loading=\"lazy\" decoding=\"async\" width=\"968\" height=\"1024\" src=\"http:\/\/morony.pl\/wp-content\/uploads\/2016\/11\/PL-968x1024.png\" alt=\"pl\" style=\"width:400px;height:auto;\" class=\"alignnone size-large wp-image-1099\" srcset=\"https:\/\/morony.pl\/wp-content\/uploads\/2016\/11\/PL-968x1024.png 968w, https:\/\/morony.pl\/wp-content\/uploads\/2016\/11\/PL-284x300.png 284w, https:\/\/morony.pl\/wp-content\/uploads\/2016\/11\/PL-768x812.png 768w, https:\/\/morony.pl\/wp-content\/uploads\/2016\/11\/PL.png 1264w\" sizes=\"(max-width: 968px) 100vw, 968px\" \/><\/a><\/center><\/p>\n<p>GMT ma du\u017ce mo\u017cliwo\u015bci, niestety kosztem \u0142atwo\u015bci obs\u0142ugi. Wa\u017cn\u0105 zalet\u0105 jest tworzenie map w postaci wektorowej. GMT poleca\u0142bym szczeg\u00f3lnie w dw\u00f3ch przypadkach: po pierwsze gdy potrzebujemy bardzo wysokiej jako\u015bci np. do publikacji i po drugie w przypadku, gdy chcemy proces automatyzowa\u0107 np. generuj\u0105c indywidualne mapy dla u\u017cytkownik\u00f3w itp. <\/p>\n<p>Gdyby\u015bcie mieli jakie\u015b pytania, piszcie &#8211; u\u017cywam GMT od 5 lat wi\u0119c mo\u017ce b\u0119d\u0119 m\u00f3g\u0142 pom\u00f3c. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>GMT (Generic Mapping Toolbox) to zestaw narz\u0119dzi do pracy z danymi geograficznymi (i nie tylko) opracowany na uniwersytecie na Hawajach (o ma\u0142o co nie przyj\u0119li mnie tam do pracy nad tym projektem&#8230; ehhh&#8230;), o kt\u00f3rym ma\u0142o kto pewnie s\u0142ysza\u0142. Podstawowym zastosowaniem GMT jest tworzenie r\u00f3\u017cnego rodzaju map. Na stronie domowej projektu opisana jest instalacja (Windows, [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/morony.pl\/index.php?rest_route=\/wp\/v2\/posts\/1094"}],"collection":[{"href":"https:\/\/morony.pl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/morony.pl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/morony.pl\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/morony.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1094"}],"version-history":[{"count":11,"href":"https:\/\/morony.pl\/index.php?rest_route=\/wp\/v2\/posts\/1094\/revisions"}],"predecessor-version":[{"id":1109,"href":"https:\/\/morony.pl\/index.php?rest_route=\/wp\/v2\/posts\/1094\/revisions\/1109"}],"wp:attachment":[{"href":"https:\/\/morony.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1094"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/morony.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1094"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/morony.pl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1094"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}