tag:blogger.com,1999:blog-22327036842644894292024-03-21T14:04:50.785-07:00Glob z kapustąKartografia domowaUnknownnoreply@blogger.comBlogger9125tag:blogger.com,1999:blog-2232703684264489429.post-86561455690094511592021-10-17T04:31:00.001-07:002021-10-17T04:42:42.106-07:00Zimno jak w Suwałkach albo sztuka rysowania klimatogramów<h2 style="text-align: left;">Przygotowanie</h2><p>1. Pobieramy i instalujemy program Gnuplot (wersję pod Windowsa można znaleźć <a href="https://sourceforge.net/projects/gnuplot/files/gnuplot/5.4.2/gp542-win64-mingw.exe/download" target="_blank">tutaj</a>, program działa też na innych platformach (Linux, macOS, ba, nawet na Androidzie!). Po uruchomieniu Gnuplota wita nas ekran, który bardziej przypomina jakieś środowisko programistyczne – nic dziwnego, bo jest to tak naprawdę prosty język do projektowania wykresów.</p><p>Możemy go przetestować, wpisując<span style="font-family: courier;"> <b>plot x*x</b></span> i naciskając 'Enter'. Powinno nam się pokazać okno z ładnym wykresem funkcji kwadratowej.</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLbgLB24jsQ-WWa9064pIu7wNuOzAJjnY70eL1tlEUhjkiKB0Dr8_isgxknP_ag0NoM4r_3XH5ZSUWDs3Et4hquZdWfElScU9IIwy2wMk6yT5koDmq1YMDXTcqJ5LFeRdsuyruElD6mOw/s1368/zrzut_gnuplot.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="734" data-original-width="1368" height="344" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLbgLB24jsQ-WWa9064pIu7wNuOzAJjnY70eL1tlEUhjkiKB0Dr8_isgxknP_ag0NoM4r_3XH5ZSUWDs3Et4hquZdWfElScU9IIwy2wMk6yT5koDmq1YMDXTcqJ5LFeRdsuyruElD6mOw/w640-h344/zrzut_gnuplot.png" width="640" /></a></div><br /> 2. Zarówno dane jak i skrypt możemy edytować w systemowym Notatniku, ale szczerze polecam <a href="https://notepad-plus-plus.org/downloads/" target="_blank">Notepad++</a> albo <a href="https://www.geany.org/" target="_blank">Geany</a>.<br /><p></p><h2 style="text-align: left;">Pobieramy dane</h2><p>Dane możemy pobrać ze strony <a href="http://klimadiagramme.de/" target="_blank">Klimadiagramme</a> (po niemiecku) albo <a href="https://pl.climate-data.org/">Climate Data</a> (po angielsku) – na tej drugiej znajdziemy więcej miejscowości, choć nie jestem pewien, czy są to dane z obserwacji czy z jakichś skomplikowanych modeli matematycznych.<br /><br />Na potrzeby niniejszego posta, pobrałem sobie <a href="http://klimadiagramme.de/Europa/suwalki.html" target="_blank">dane</a> ze średnią temperaturą i opadami w Suwałkach. Skasowałem pierwszą linię (nagłówek) i ostatnią (dane roczne), dodałem na początku kolejny numer miesiąca, a niemieckie nazwy miesięcy zastąpiłem liczbami rzymskimi. Całość powinna więc wyglądać tak (liczby mogą być oddzielone spacją lub znakami tabulacji, nie ma to znaczenia):<br /></p><p><iframe src="https://pastebin.com/embed_iframe/XvCKrQK9" style="border: none; width: 100%;"></iframe></p><p>Zapisujemy dane w pliku np. jako <b><span style="font-family: courier;">suwalki.txt</span></b> (bezpieczniej nie używać polskich znaków).</p><h2>Skrypt do generowania wykresu</h2><p>Otwieramy nowe okno w Notatniku i przeklejamy tam poniższy skrypt.</p><p><iframe src="https://pastebin.com/embed_iframe/kdzLMFSi" style="border: none; width: 100%;"></iframe> </p><p>Zapisujemy plik skryptu np. pod nazwą <b><span style="font-family: courier;">klimatogram.txt</span></b> w tym samym folderze, co nasz plik z danymi. Teraz otwieramy skrypt z menu Gnuplota, wybierając opcję File -> Open.<br />Sam proces rysowania odbywa się po cichu i bez komunikatów – w Gnuplocie wyświetli się tylko w nowej linii napis <span style="font-family: courier;"><b>load 'klimatogram.txt'</b></span>, ale w folderze pojawi gotowy plik graficzny z klimatogramem o nazwie ustalonej w skrypcie (<span style="font-family: courier;"><b>suwalki.jpg</b></span>)<br /></p><p> </p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3eWFXe2pUNs-OTInDDGqjR_NCx21IBBSBKGv2Re1O3jER_kTbA1VU9zGr1iZpc4miRo5zD47d0_m5M5eC7VwTXqD3wogCmFmVVw-kqDZLX5WC4f5H9AnU2WDGnGNHQP4rTZeniVYLOFs/s640/suwalki.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="480" data-original-width="640" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3eWFXe2pUNs-OTInDDGqjR_NCx21IBBSBKGv2Re1O3jER_kTbA1VU9zGr1iZpc4miRo5zD47d0_m5M5eC7VwTXqD3wogCmFmVVw-kqDZLX5WC4f5H9AnU2WDGnGNHQP4rTZeniVYLOFs/w640-h480/suwalki.jpg" width="640" /></a></div><br /><p></p><h2 style="text-align: left;">Modyfikacje</h2><p style="text-align: left;">Jeżeli chcemy przerobić skrypt tak, żeby rysował klimatogram dla innego miasta, to należy w nim zmodyfikować nie tylko tytuł w pierwszej linijce, nazwy pliku z danymi (2 razy w ostatniej linii) czy nazwy obrazka wyjściowego, ale przede wszystkim zakresy dla osi po lewej i prawej stronie diagramu.</p><p style="text-align: left;">Oś x (z miesiącami) pozostaje niezmienna, ale zakresy temperatury (<span style="font-family: courier;"><b>set yrange</b></span>) i opadów (<b><span style="font-family: courier;">set yrange2</span></b>) warto dostosować do strefy klimatycznej – na pewno inaczej będą one wyglądać dla Mumbaju a inaczej dla Anchorage. Podawanie ujemnego zakresu dla opadów wydaje się bez sensu, ale mi osobiście podoba się, gdy ich oś 0 przebiega przez środek diagramu – parametry dla <span style="font-family: courier;"><b>y2ticks </b></span>wyraźnie podają, że podziałka osi ma się zacząć dopiero od 0, skończyć na 100 i iść co 25 jednostek.</p><h2 style="text-align: left;">Formaty wyjściowe</h2><p>Gnuplot obsługuje kilkadziesiąt formatów wyjściowych – zarówno tych przeznaczonych przede wszystkim do druku (PDF), Internetu (SVG) jak i popularnych formatów graficznych (z tych mniej popularnych znajdziemy tu nawet coś dla miłośników AutoCADa (DXF) czy Amigi!). Pełną listę można przejrzeć, wpisując polecenie <span style="font-family: courier;"><b>set term</b></span> i naciskając 'Enter'. <br />Jeżeli chcemy podejrzeć od razu efekt pracy programu, a dopiero potem zapisać go na dysku, to można zamienić w linii 14 <span style="font-family: courier;"><b>set term jpeg</b></span> na <span style="font-family: courier;"><b>set term qt</b></span> (uwaga – za pierwszym razem otworzenie okna z podglądem zajmuje trochę więcej czasu!).<br /></p><div>Aha, Gnuplot przechowuje historię swoich działań – jeżeli chcemy jeszcze raz otworzyć ten sam skrypt, to wystarczy w głównym oknie nacisnąć strzałkę kursora do góry.</div><div><br /><h2 style="text-align: left;">Disclaimer</h2>Powyższy skrypt w Gnuplocie nie jest mojego autorstwa, natknąłem się na niego dawno temu w Wikipedii, wśród materiałów podesłanych przez fińską programistkę o nicku <a href="http://www.windytan.com/">windytan</a>. W międzyczasie w samej Wikipedii pojawił się inny, wbudowany sposób prezentowania danych klimatycznych, który nie wymaga już zewnętrznych narzędzi.</div><div></div><div><br />Udanych eksperymentów z Gnuplotem!<br /><br /><br /></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2232703684264489429.post-42295901710451235472020-05-17T11:09:00.001-07:002020-05-17T11:09:51.069-07:00Skąd wziąć współrzędne Czelabińska?Potrzebowałem do celów e-learningu zrobić mapę największych miast Rosji — nie sądziłem, że znalezienie współrzędnych podanego miasta jest takie proste. Dziękuję ci, OpenStreetMapo! <br />
<br />
<br />
<iframe src="https://pastebin.com/embed_iframe/sVYvGK5M" style="border:none;width:100%"></iframe>
Zwróćcie uwagę - nie musimy się bawić we wpisywanie oryginalnej nazwy, transkrypcje z innego alfabetu itp.<br />
Inspiracja: <a href="https://stackoverflow.com/a/50624958">stąd</a>.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2232703684264489429.post-89546219472999115772020-03-14T14:48:00.000-07:002020-03-14T14:48:36.748-07:00Nośniki, z którymi ciężko mi się rozstać (1)Tak się złożyło, że mam ostatnio trochę więcej czasu, więc postanowiłem poświęcić go na odgruzowanie domu. Wśród rzeczy, których muszę się pozbyć, jest kilkaset płyt CD/DVD i kilkadziesiąt dyskietek. Niektóre z nich ciężko będzie pożegnać, oj ciężko!<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgh1lbevKlLZ4YsQSr-7szz4d8lu7bVAQ9aCPX_IG9D0QYplu2ULtFM9NZpDLOcOPHMPAuOs122faG9d6vCwoqqj_Yfm43kzeAsnb6YJC-omptTbWxB516rZYmniaSqnahwHWKLTRNSw_U/s1600/IMG_20200314_215203.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgh1lbevKlLZ4YsQSr-7szz4d8lu7bVAQ9aCPX_IG9D0QYplu2ULtFM9NZpDLOcOPHMPAuOs122faG9d6vCwoqqj_Yfm43kzeAsnb6YJC-omptTbWxB516rZYmniaSqnahwHWKLTRNSw_U/s400/IMG_20200314_215203.jpg" width="400" /></a></div>
<br />
Moje linuksiarstwo zaczęło się od oszusta, który sprzedał mi komputer (Pentium 133 MHz) z walniętą pamięcią 16 MB. Drogi Oszuście, dziękuję! Niech ptaszki śpiewają tam, gdzie się pojawisz! Dokonałeś rzeczy ważnej: zmusiłeś mnie tą walniętą pamięcią do szukania innych rozwiązań niż Windows 95, który za nic w świecie nie chciał się uruchomić. A że w domu walały mi się płytki z Linuksem, dołączone do Magazynu Internet, spróbowałem go zainstalować. <a href="https://distrowatch.com/table.php?distribution=slackware" target="_blank">Slackware</a> 7 odstraszał, ale <a href="https://distrowatch.com/table.php?distribution=redhat" target="_blank">Red Hat</a> 6 zrobił na mnie wrażenie.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbkxxPUEZf-qKIDcb4TZuuekgBJv0Sh3eUIXoaqCFGvBURFZZebmywzzfOLwt6Rp97xO0UGHHupc-n2DVrgVnd6-OnrL0MPJLALQ5xsSRMbktfS8PPtckvVBWbv71W5mGfVEw-56gyDAM/s1600/IMG_20200314_215102.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbkxxPUEZf-qKIDcb4TZuuekgBJv0Sh3eUIXoaqCFGvBURFZZebmywzzfOLwt6Rp97xO0UGHHupc-n2DVrgVnd6-OnrL0MPJLALQ5xsSRMbktfS8PPtckvVBWbv71W5mGfVEw-56gyDAM/s400/IMG_20200314_215102.jpg" width="400" /></a></div>
<br />
Potem, pracując na tzw. Zachodzie, kupiłem sobie za ciężko zarobioną walutę <a href="https://www.linuxjournal.com/article/4409" target="_blank">pudełkową wersję SuSE 7.0</a> – kilka grubych podręczników i sześć płytek zniknęło w trakcie wielu przeprowadzek, zostały mi tylko 2 dyskietki.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjmze7Q1c2aOtcdSCsNkQxwoDP787aLhzd9Wq2z0OBQiSRhMpKb2Xq27fWxYsMR0v6U4az8QadKKAL87btaeKLZEglXs2ZBc0NUosXdAwvz35x2XnxBzjCFQ6DtiaH5eBVuohBl6wCFR0/s1600/IMG_20200314_215309.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjmze7Q1c2aOtcdSCsNkQxwoDP787aLhzd9Wq2z0OBQiSRhMpKb2Xq27fWxYsMR0v6U4az8QadKKAL87btaeKLZEglXs2ZBc0NUosXdAwvz35x2XnxBzjCFQ6DtiaH5eBVuohBl6wCFR0/s400/IMG_20200314_215309.jpg" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Gdybym miał szybko odpowiedzieć, którą dystrybucję instalowałem najczęściej, odpowiedź byłaby dość trudna – przez pewien czas zmieniałem dystrybucje jak rękawiczki (co tydzień oranie dysku i instalacja czegoś nowego), a potem i tak wracałem do Slackware albo <a href="https://www.dobreprogramy.pl/wielkipiec/Niepotrzebne-projekty-polski-Aurox-Linux,63913.html" target="_blank">Auroksa</a>. Ten pierwszy wymagał na początku sporo rzeźbienia (pamiętam kilkudniowe zmagania z jakimiś sterownikami do karty bezprzewodowej), po jakimś czasie potrafiłem już go zainstalować z zawiązanymi oczami.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd-qKfybiHKQh9Hr9ruRvfpOAOyKKFI2gUTSk3xB2vWkjgnrChKv5aYO2ek7W2DwpyRL3APc8SvZu5T2lhhDHUh7z-WUPCM1wqTFovr9gkb6y_T2jxw5USEpESlxAdKS7pkdi93Jck5w8/s1600/IMG_20200314_215247.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd-qKfybiHKQh9Hr9ruRvfpOAOyKKFI2gUTSk3xB2vWkjgnrChKv5aYO2ek7W2DwpyRL3APc8SvZu5T2lhhDHUh7z-WUPCM1wqTFovr9gkb6y_T2jxw5USEpESlxAdKS7pkdi93Jck5w8/s400/IMG_20200314_215247.jpg" width="400" /> </a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
W nowej pracy nagle dostałem możliwość administrowania całą masą komputerów, więc coraz częściej wybierałem Ubuntu. To było jeszcze w czasach, gdy stojąca za nim firma Canonical hojnie wysyłała zainteresowanym płytki CD z systemem (no i naklejki!).</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhjCPLbgvLAAZ9yJ7kFOqqFZ2ykw42UVceeCFxdOiotczfZX9hkBLBJu7Bcv6QHiU12QBFvA7FBmQ7nlf__t8ueevuAGS45FqSXJe118NR2KI1vBQlf4-Qe6l4LhE5bo5LMVv-p59iY_Y/s1600/IMG_20200314_215403.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhjCPLbgvLAAZ9yJ7kFOqqFZ2ykw42UVceeCFxdOiotczfZX9hkBLBJu7Bcv6QHiU12QBFvA7FBmQ7nlf__t8ueevuAGS45FqSXJe118NR2KI1vBQlf4-Qe6l4LhE5bo5LMVv-p59iY_Y/s400/IMG_20200314_215403.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
Na koniec dwie ciekawostki: firma Corel przez krótki czas chciała mieć swoją własną wersję Linuksa – o ile dobrze pamiętam, w zestawie był ich pakiet biurowy WordPerfect, uruchamiany mocno na siłę z użyciem Wine. Druga płytka to pierwsza dystrybucja <i>live</i>, którą dało się uruchomić bez instalacji – wystarczył do niej sprzęt z 64 MB pamięci. (<i>cdn.</i>)<br />
<br />
<br />
<br />
<br />
<br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2232703684264489429.post-86109218533914370882019-12-30T13:55:00.001-08:002019-12-31T03:05:15.265-08:00Sylwester w LututowiePoczątek roku to termin wprowadzania zmian na mapie administracyjnej Polski, to znaczy przesuwania granic, zmiany statusu, podziałów i fuzji.
<br>
<br>
W tym roku na szczęście żadna gmina nie podzieli losu zlikwidowanych przed rokiem <a href="https://gospodarka.dziennik.pl/news/artykuly/588270,zachodniopomorskie-gmina-ostrowice-likwidacja-specustawa.html">Ostrowic</a>, natomiast cztery miejscowości (Lututów, Czerwińsk nad Wisłą, Piątek i Klimontów) odzyskają prawa miejskie, utracone jeszcze w czasach carskich.
<br>
<br>
To świetna okazja, żeby przyjrzeć się możliwościom, jakie oferuje pakiet języka Python (w wersji 3) o nazwie Matplotlib-Basemap i szybko narysować mapę z nowymi miastami.<br><br>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFhbKNwAZSY0GhbzYk6YKwD48-1Z7flqWJMe8eECAl6N7i6MNe9j0qTa1RVI6zTsucLN-vM1bbmAvvwygwQU-29BEMjC4wtgeQSQLxzBsKhhtnxrjWcJHzNkziQIsyACJcKzJ6_5CjPIY/s1600/mapka4miast.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFhbKNwAZSY0GhbzYk6YKwD48-1Z7flqWJMe8eECAl6N7i6MNe9j0qTa1RVI6zTsucLN-vM1bbmAvvwygwQU-29BEMjC4wtgeQSQLxzBsKhhtnxrjWcJHzNkziQIsyACJcKzJ6_5CjPIY/s320/mapka4miast.jpg" width="320" height="240" data-original-width="1600" data-original-height="1200" /></a></div>
<br>
<br>
Do narysowania powyższej mapki wystarczy ok. 25 linijek kodu w Pythonie.
<br>
<br>
<iframe src="https://pastebin.com/embed_iframe/jTCirBiF" style="border:none;width:100%"></iframe>
<br>
<br>
<h2>Instalacja</h2>
Instalacja matplotlib-basemap pod Linuksem jest banalna i np. w Ubuntu sprowadza się do zainstalowania paczki dostępnej w repozytoriach systemowych (plus drugiej – dość sporej – z danymi na temat linii brzegowej, rzek, jezior itp.).
<br><br>
Kartografowie z Windows nie mają tak łatwego życia – wersja dostępna przez instalator <b>pip</b> jest dość wiekowa, albo nie zawsze da się zainstalować; osobiście korzystałem z Pythona do celów naukowych o nazwie <a href="https://www.anaconda.com/distribution/">Anaconda</a> (ze świetnym instalatorem pakietów <b>conda</b>.
Można też spróbować zainstalować gotowy pakiet <a href="https://www.lfd.uci.edu/~gohlke/pythonlibs/#basemap">stąd</a>.
<br>
<br>
<h2>Kopalnia współrzędnych</h2>
Przy zaledwie czterech punktach na mapie współrzędne można oczywiście wygrzebać z Wikipedii. Gdyby jednak trzeba ich było znaleźć więcej, to polecam plik Excela z Państwowego Rejestru Nazw Geograficznych (plik można legalnie i nieodpłatnie pobrać <a href="ftp://91.223.135.109/prng/PRNG_MIEJSCOWOSCI_XLSX.zip">tutaj</a>, sprawdźcie tylko, czy nie ma jakichś ograniczeń licencyjnych).
<br><br>
Tabela zawiera w tej chwili 265092 nazw geograficznych (np. miast, wsi i ich części) oraz ich współrzędnych. Jest to na tyle ciekawy zbiór, że zasługuje na osobną notkę; mam nadzieję, że ukaże się ona przed kolejnym Sylwestrem.
<br><br>
Uwaga techniczna: współrzędne, zarówno w Wikipedii jak i w pliku PRNG są podane w stopniach i minutach kątowych (np. <b>51°22'18''</b>
N), więc trzeba je przeliczyć na ułamki dziesiętne (<b>51+22/60+18/3600 = 51.3716666666667</b>). W tym zapisie półkulę południową i zachodnią przedstawia się przy użyciu liczb ujemnych.
<br><br>
<h2>Rysujemy mapę</h2>
Po zaimportowaniu wszystkich potrzebnych pakietów, możemy zabrać się za rysowanie mapy.
Kolejna linia, rozbita na części ze względu na czytelność, zawiera sporo parametrów:
<ul>
<li><b>projection</b> (odwzorowanie) – tutaj będzie to stary dobry Mercator</li>
<li><b>lat_0</b> – w tym odwzorowaniu: szerokość geograficzna środkowego równoleżnika</li>
<li><b>lon_0</b> – w tym odwzorowaniu: długość geograficzna środkowego południka</li>
<li><b>resolution</b> – rozdzielczość <i>high</i> (czyli wysoka, może być też 'l' (<i>low</i> = niska) czy 'c' (<i>crude</i> = toporna)</li>
<li><b>area_thresh</b> to parametr oznaczający jakie obiekty mają być pominięte (tutaj – wszystkie obiekty o powierzchni poniżej 150 km2)</li>
<li><b>llcrnrlon</b> i <b>llcrnrlat</b> to odpowiednio długość i szerokość geograficzna lewego dolnego rogu (<i>lower left corner</i>) mapy, a <b>urcrnrlon</b> i <b>urcrnrlat</b> to długość i szerokość geograficzna jej prawego górnego rogu (<i>upper right corner</i>).</li>
</ul>
<br><br>
<h2>Czas na kropki</h2>
Do narysowania punktów i miejscowości potrzebne są trzy listy: z długościami geograficznymi naszych miast, z szerokościami no i z nazwami (etykietami).
<br><br>
W linii 14 program przelicza dane z listy na współrzędne na rysunku, a w następnej rysuje punkty.
<br><br>
W kolejnych liniach program wstawia nazwy miast. Etykiety nie mogą być w tym samym miejscu, co punkty, stąd przesunięcie (podawane, co ciekawe, w metrach): -80000 dla współrzędnej x i +22000 dla współrzędnej y.
<br><br>
Tak naprawdę ciężko jest znaleźć jedno i takie samo optymalne przesunięcie dla wszystkich nazw – powinno ono być inne dla każdego napisu i umieszczone w postaci oddzielnej listy. Problem ten dość ładnie rozwiązano na blogu <a href="https://peak5390.wordpress.com/2012/12/08/matplotlib-basemap-tutorial-plotting-points-on-a-simple-map/">peak 5390</a>, który był dla mnie sporą pomocą i inspiracją w trakcie pisania tej notki.
<br>
<br>
<h2>Kolorowanie</h2>
Kolejne linie programu to polecenia do rysowania wybrzeży (<i>drawcoastlines</i>), granic państwowych (<i>drawcountries</i>, tutaj z opcjonalnie podanym kształtem przerywanych kresek), wreszcie wypełnienia lądów (<i>fillcontinents</i>) i mórz (<i>drawmapboundary</i>).
<br>
<br>
Oprócz poetyckich <a href="https://matplotlib.org/3.1.0/gallery/color/named_colors.html">nazw kolorów</a> istnieje możliwość wpisania ich numeru RGB. Dodatkowo, kasując linijki i wstawiając odpowiednie polecenie, można stworzyć tło z danych satelitarnych – w stylu mapy Google (<b>bluemarble</b>), tradycyjnej mapy topograficznej (<b>etopo</b>) czy cieniowanej rzeźby terenu (<b>shadedrelief</b>).
<br><br>
Z góry jednak uprzedzam, że tego rodzaju tła w tej skali wyglądają dość mizernie.
<br><br>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmhnbpFGqUJs_04hdIkuzApGPrI04vM63WjwmBpjtzhYOQir-U8sO-NnK9fpBdVTVQgHKLaWC2gm7suZEA4jPdC235wqlz2-6xqQ-iEj9FcAeWLXN6DohEfya-3Lk8851gC6behLNhgIE/s1600/mapka4miast_bluemarble.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmhnbpFGqUJs_04hdIkuzApGPrI04vM63WjwmBpjtzhYOQir-U8sO-NnK9fpBdVTVQgHKLaWC2gm7suZEA4jPdC235wqlz2-6xqQ-iEj9FcAeWLXN6DohEfya-3Lk8851gC6behLNhgIE/s320/mapka4miast_bluemarble.jpg" width="320" height="240" data-original-width="1600" data-original-height="1200" /></a></div>
<br>
<center>Tło ze zdjęć satelitarnych jest dość niewyraźne;</center>
<br><br>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRNFDuTBtBEM0FHYrbUn6htVjo26BEMpbcQMVtcVQgzqVB2YhxZ42RQW06VZZIVV0Fy1OQrMRDTYUKoDbG7vjGS-SSKVMWIpUoBP2nknFY8t3IUVcvrW-i8RSO54_OfVsUypKP08XmGhA/s1600/mapka4miast_etopo_v2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRNFDuTBtBEM0FHYrbUn6htVjo26BEMpbcQMVtcVQgzqVB2YhxZ42RQW06VZZIVV0Fy1OQrMRDTYUKoDbG7vjGS-SSKVMWIpUoBP2nknFY8t3IUVcvrW-i8RSO54_OfVsUypKP08XmGhA/s320/mapka4miast_etopo_v2.jpg" width="320" height="240" data-original-width="1600" data-original-height="1200" /></a></div>
<br>
<center>na mapie topograficznej widać wręcz kwadratowe ,,kafelki"...</center>
<br><br>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNsXgV0U_k026-6C4L9rqMIHs5S4l1wsa1PTxZAJxhn-3_t7iF4zZxO7neyKLlelMr07grbg7xpXDM5ZE66zxGxXlA_tWXh6bMmmD0E9ovQPghl8o9xEmR7K261o9_DxRYT9nVKLiLY9U/s1600/mapka4miast_shadedrelief.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNsXgV0U_k026-6C4L9rqMIHs5S4l1wsa1PTxZAJxhn-3_t7iF4zZxO7neyKLlelMr07grbg7xpXDM5ZE66zxGxXlA_tWXh6bMmmD0E9ovQPghl8o9xEmR7K261o9_DxRYT9nVKLiLY9U/s320/mapka4miast_shadedrelief.jpg" width="320" height="240" data-original-width="1600" data-original-height="1200" /></a></div>
<br>
<center>...a cieniowana rzeźba terenu jest mocno uproszczona (gdzie jest Pas Wyżyn?).</center>
<br><br>
Tego rodzaju tło dużo lepiej sprawdza się w przypadku mapy świata:
<br><br>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlTaab6h95lzN1WvkakcX2wfGm7KTL4YGDt16vEm6xVpk_M7XrDRmoTIiitwH4PfvpisQuwr4Eqxp8L8jkpPDz1R4SMfUZ8G3So-IYya9noeaySDocsYtVWSL60czKvtr6v9eIcKnuc44/s1600/glob_robinson_etopo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlTaab6h95lzN1WvkakcX2wfGm7KTL4YGDt16vEm6xVpk_M7XrDRmoTIiitwH4PfvpisQuwr4Eqxp8L8jkpPDz1R4SMfUZ8G3So-IYya9noeaySDocsYtVWSL60czKvtr6v9eIcKnuc44/s320/glob_robinson_etopo.jpg" width="320" height="240" data-original-width="1600" data-original-height="1200" /></a></div>
<br><br>
Dla ciekawych – kod programu (8 linijek!):
<br><br>
<iframe src="https://pastebin.com/embed_iframe/5PfZZ0YA" style="border:none;width:100%"></iframe>
<br><br>
Inna sprawa, że generowanie takiego tła może nam strasznie spowolnić komputer. To chyba największa wada pakietu Basemap – python nie należy do najszybszych języków programowania, a ilość obliczeń, jakich musi tutaj dokonać, jest spora. Zwykła mapa potrafi zatkać komputer na pół minuty, natomiast czas rysowania cieniowanej rzeźby terenu niekiedy jest dłuższy od bloku reklamowego na Polsacie.
<br><br>
Skoro zacząłem już o wadach – nie wiedzieć czemu, polecenie do rysowania podziałki nie działa w każdym odwzorowaniu, co gorsza, programista nie dostaje nawet najmniejszego ostrzeżenia w tej sprawie.
<br><br>
<h2>Zapis mapy</h2>
Ostatnia linia programu służy do zapisu – format docelowy rysunku (SVG, PNG, JPEG, PDF) program automatycznie rozpoznaje na podstawie rozszerzenia pliku.
<br><br>
<i>Szczęśliwego Nowego Roku!</i>
Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-2232703684264489429.post-28696858578664049872018-02-19T08:55:00.002-08:002018-02-19T13:41:49.745-08:00Znów urodzinowoDzisiaj są urodziny siostrzeńca samego Lukasa Watzenrode (biskupa warmińskiego). Cytat z siostrzeńca:
<blockquote>Choć nieskończona jest ilość plag, które zazwyczaj powodują upadek
królestw, księstw i rzeczypospolitych, to (moim zdaniem) najgorsze są cztery: niezgoda, śmiertelność, jałowość ziemi i podły pieniądz.
<br>
Trzy pierwsze są tak oczywiste, że wszyscy dobrze wiedzą, iż tak właśnie jest; ale czwartą, która dotyczy pieniądza, uznają tylko nieliczni, i to najmądrzejsi, ponieważ doprowadza do upadku rzeczypospolitych nie od razu i nie za pomocą jednego ciosu, ale
stopniowo i jakby skrycie.</blockquote>
Dzieci w szkołach powinny uczyć się tego cytatu, a nie jakieś wierszowanych dyrdymałek o przestawianiu wajch planetarnych.
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2232703684264489429.post-2839007485353582162017-09-26T15:22:00.000-07:002017-09-26T15:22:00.996-07:00Sto lat, Larry!Dzisiaj są urodziny <a href="https://pl.wikipedia.org/wiki/Larry_Wall">Larry'ego Walla</a>. Wprawdzie w kartografii Perl chyba trochę pozostał w tyle za swoim wężowatym kolegą, ale i tak jest na liście języków, które warto znać.
<br><br>
Dwa moje ulubione cytaty z Larry'ego:
<br><br>
<blockquote>When they first built the University of California at Irvine they just put the buildings in. They did not put any sidewalks, they just planted grass. The next year, they came back and put the sidewalks where the trails were in the grass. Perl is just that kind of language. It is not designed from first principles. Perl is those sidewalks in the grass.</blockquote>
<br>
<blockquote>Real programmers can write assembly code in any language.</blockquote>
<br>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2232703684264489429.post-15486196683639604252017-09-24T01:37:00.001-07:002017-09-27T13:07:50.998-07:00Czarno na białymKiedy nadchodzi sezon palenia w piecu, zaczynam tęsknić za blokami. Może dlatego dzisiaj notka między innymi o osiedlach, choć niekoniecznie o tzw. wielkiej płycie.
<br><br>
Wbrew temu, co sugerowano na filmie <q>Poszukiwany, poszukiwana</q>, osiedla nie zawsze planowano na zasadzie <q>A jezioro przesuniemy tutaj</q>. Za niektórymi projektami stał konkretny pomysł, jakaś idea urbanistyczna.
<br><br>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiA5ofq-ocayaDq-_Hz-2C_fK6w_NL2_N-32ji9om4vTVsjO8GArPIpeSVpPbAqjldsEbir-y5KR7r4nsefNachsm6qBqw40_kO2okfSZW-LGp1JzL6XQTFhRadqkhqxlYMdaxxnV2IAGk/s1600/poszukiwany_poszukiwana.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiA5ofq-ocayaDq-_Hz-2C_fK6w_NL2_N-32ji9om4vTVsjO8GArPIpeSVpPbAqjldsEbir-y5KR7r4nsefNachsm6qBqw40_kO2okfSZW-LGp1JzL6XQTFhRadqkhqxlYMdaxxnV2IAGk/s320/poszukiwany_poszukiwana.jpg" width="320" height="240" data-original-width="480" data-original-height="360" /></a></div>
<br><br>
Niekiedy po dołożeniu jakiegoś przypadkowego pawilonu handlowego czy wciśnięciu dodatkowego bloku na bezcennych gruntach pomysł ten przestaje być jasny i oczywisty, ale jest jeden sposób, żeby się o tym przekonać: <a href="https://de.wikipedia.org/wiki/Schwarzplan">schwarzplan</a>, czyli mapa, na której czarnym kolorem na białym tle zaznaczono układ budynków i nic poza tym. Żadnych dróg, linii tramwajowych czy rzek.
<br><br>
Zaczniemy od poniemieckiego klasyka, czyli wrocławskiego osiedla-ogrodu <a href="https://pl.wikipedia.org/wiki/S%C4%99polno_(Wroc%C5%82aw)">Sępolno</a>, zbudowanego na planie orła (łatwiej go zobaczyć, gdy się przekręci głowę w lewo) — drobne kropki wewnątrz tego orła, które psują efekt, to dobudowane później garaże, szopy, pomieszczenia gospodarcze itp.
<br><br>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5CnVoC24LIam6AZdm4p3_J6H3E9f-lvuCKV733pBP1BaOwGRAGGUjtWK8Aq_FiG5gDqaKAwkvXo2QSbILuYP0CLQgEueh-t5fqugSqjR0eju2Uc_1D8RZZep_p0abenzULFZL7kLmtVk/s1600/output.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5CnVoC24LIam6AZdm4p3_J6H3E9f-lvuCKV733pBP1BaOwGRAGGUjtWK8Aq_FiG5gDqaKAwkvXo2QSbILuYP0CLQgEueh-t5fqugSqjR0eju2Uc_1D8RZZep_p0abenzULFZL7kLmtVk/s320/output.png" width="320" height="247" data-original-width="1600" data-original-height="1234" /></a></div>
<br><br>
O schwarzplanach i układach miast bardzo ładnie pisał na swoim blogu Marcin Piotrowski, przedstawiając <a href="http://uxonline.pl/modernizm-schwarzplan/">fascynujące tło powstania miasta Brasilii</a> (polecam cały cykl artykułów!), zrobił to tak ciekawie, że w zasadzie wyczerpał temat. W tej notce chciałbym jedynie podać przepis na szybkie narysowanie schwarzplanu przy użyciu bezpłatnego narzędzia Maperitive oraz danych z OpenStreetMap.
<br><br>
<h2>1. Instalacja</h2>
Pobieramy program <a href="http://maperitive.net/download/Maperitive-latest.zip">Maperitive</a> i rozpakowujemy go. Następnie w katalogu Maperitive, a ściślej w podkatalogu <b>Rules</b>, gdzie znajdują się reguły renderowania map, zapisujemy plik <a href="https://raw.githubusercontent.com/quelbs/maperitive-rulesets/master/UserRules/Schwarzplan.mrules">Schwarzplan.mrules</a>. Teraz trzeba uruchomić program i zarejestrować nową regułę, wpisując w wierszu znajdującym się na dole okna polecenie:
<br><br>
<b>use-ruleset location=Rules/Schwarzplan.mrules as-alias=Schwarzplan</b><br><br>
i naciskając ENTER.
<br><br>
<h2>2. Wybór obszaru roboczego</h2>
Przesuwamy mapę w interesującym nas obszar. Można tego dokonać przy użyciu myszki, przydadzą się też przyciski przybliżania i oddalania [+]/[-]. Jeżeli znamy współrzędne geograficzne danego miejsca (w postaci dziesiętnej), możemy od razu przejść tam, wpisując komendę:
<br><br>
<b>move-pos y=szerokość_geograficzna x=długość_geograficzna</b>
<br><br>
Wszystkie kolejne operacje będą domyślnie wykonywane dla widocznego na podglądzie obszaru mapy. Jeżeli go chcemy zmodyfikować albo obejrzeć w pomniejszeniu lub powiększeniu, to należy skorzystać z opcji <b>Set Geometry Bounds</b> w menu <b>Map</b>. Po zmianie powiększenia będzie widać obszar roboczy, zaznaczony czerwoną ramką.
<br><br>
<h2>3. Pobranie danych i renderowanie</h2>
Po ustaleniu obszaru pobieramy dane z OpenStreetMap — służy do tego opcja w menu <b>Map</b> o nazwie <b>Download OSM Data (Overpass API)</b>. Jeżeli operacja zakończy się sukcesem, to na liście warstw oznaczonych gwiazdkami w prawym, dolnym rogu programu pojawi się nowa warstwa o nazwie <b>OSM File</b>.
<br><br>
Teraz w menu <b>Map</b> wybieramy <b>Switch to rules</b>, potem z listy reguł wybieramy <b>Schwarzplan</b>.
Można już wyłączyć podgląd warstwy o nazwie <b>Web map</b>, odznaczając gwiazdkę na liście warstw (Sources), w podglądzie Maperitive zostanie już tylko czarno-biały układ budynków.
<br><br>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaVuPTgYHSbu4JxwaMVLXUGuAgySfnOFWjKtZf3tf-_6PgEXmTZ2aNysFgPhPWCebO2Q8hGPtQtoIcb7ortwLjmDAMIOoKw7VCBJenxjr6d1CxZdyb9lZar-gKiOFiqPjqLFq0GSxL9uU/s1600/sources.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaVuPTgYHSbu4JxwaMVLXUGuAgySfnOFWjKtZf3tf-_6PgEXmTZ2aNysFgPhPWCebO2Q8hGPtQtoIcb7ortwLjmDAMIOoKw7VCBJenxjr6d1CxZdyb9lZar-gKiOFiqPjqLFq0GSxL9uU/s1600/sources.jpg" data-original-width="245" data-original-height="125" /></a></div>
<br><br>
<h2>4. Obszar, skala i format wyjściowy planu</h2>
Granice obszaru roboczego, dla którego program pobrał dane OSM oraz wyrenderował je (tzw. Geometry Bounds — czerwona ramka) nia nie zawsze pokrywają się granicami do eksportu (Printing Bounds — niebieska ramka). Żeby ustalić te ostatnie, należy wybrać opcję <b>Set Printing Bounds</b> z menu <b>Map</b> albo kliknąć drugim przyciskiem myszy na czerwoną ramkę i wybrać opcję <b>Place Printing Bounds Here</b>.
<br><br>
Od tego momentu przyciski powiększenia i oddalenia [+]/[-] mają wpływ nie tylko na widok ale też skalę i wielkość eksportowanej mapy.
<br><br>
Pozostaje nam już tylko format rysunku; do wyboru mamy grafikę rastrową PNG albo wektorową SVG (w dwóch wersjach, bo podobno Adobe Illustrator nie zawsze prawidłowo czyta pliki przeznaczone dla Inkscape'a). Jeżeli wybierzemy opcję eksportu z menu <b>Tools</b>, to program domyślnie zapisze schwarzplan w podkatalogu <b>output</b>. Możemy też sami ustalić ścieżkę do zapisu przy użyciu polecenia
<br><br>
<b>export-bitmap file="ścieżka/nazwapliku.png"</b>
<br><br>
<h2>5. Problemy miast</h2>
Na deser kilka narysowanych naprędce planów.
<br>
Rzut oka na mapę Miasteczka Wilanów sprawia, że budzą się we mnie podejrzenia — wszystko jakieś takie zbyt idealne, z drugiej strony budynki prawdopodobnie mają funkcję głównie mieszkalną. Bez wizyty na osiedlu widzę, że wszelkie sklepy, knajpy i punkty usługowe jeżeli są, to schowane na parterach domów. Szkoła, gdzie jest szkoła?
<br><br>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7fpfedI6z01LIhOm3liljdExwuJQGkodpVPbmRugJACZvJvw-UbIvZ-Qvcl_iIvRYPf80Cz1akmg0mvzxZ2DijwA0yzhPYA5jT2iLw7__afQ-5-U08Dk07rn3TgfBq-J4sSLXt5RCTxU/s1600/miasteczko.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7fpfedI6z01LIhOm3liljdExwuJQGkodpVPbmRugJACZvJvw-UbIvZ-Qvcl_iIvRYPf80Cz1akmg0mvzxZ2DijwA0yzhPYA5jT2iLw7__afQ-5-U08Dk07rn3TgfBq-J4sSLXt5RCTxU/s320/miasteczko.png" width="320" height="234" data-original-width="1003" data-original-height="733" /></a></div>
<br><br>
Dla porównania dokładam Podzamcze — sypialnię na obrzeżach Wałbrzycha, podobno jedno z lepiej zaprojektowanych osiedli w Polsce z lat 70'/80'.
<br>
W czasach świetności mieszkało tam ponad 40 tys. ludzi, teraz zdaje się została połowa. Widać budynki handlowe, mały budynek na planie krzyża to zapewne kościół; dużo przestrzeni pomiędzy ułożonymi jak szańce blokami daje wytchnienie, ale wiać tam musi strasznie.
<br>
Dwie linie małych budynków w górnej części mapy to ciągi garaży — nie zaplanowano ich w trakcie budowy osiedla, więc obstawiam, że na Podzamczu mogą być problemy z parkowaniem.
<br><br>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0gRIn0bIFiCPNhmLu8UDRZxb4R_UoWxKuQ2786dNmwX6lLpoGxmOm2K2ehtaSanozJMQ3eVmtJ_-KF0nXYyon3pWGTtSV_UDv9NgUdlSU3SmByvwfh7HiPlUoNyr7Ae4ms5IAKq-5EqU/s1600/Podzamcze2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0gRIn0bIFiCPNhmLu8UDRZxb4R_UoWxKuQ2786dNmwX6lLpoGxmOm2K2ehtaSanozJMQ3eVmtJ_-KF0nXYyon3pWGTtSV_UDv9NgUdlSU3SmByvwfh7HiPlUoNyr7Ae4ms5IAKq-5EqU/s320/Podzamcze2.png" width="320" height="211" data-original-width="1246" data-original-height="823" /></a></div>
<br><br>
Analizę Nowej Huty pozostawiam już Czytelnikom.
<br><br>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZdHxynVWF-5Z_LqkJbfWSKdJo0JfkMUVSkJCa9eXIDwBCvRvkpi3U06N78QBvs0059LSy16brMAkrCTP-P6I57qyKZ4PK3FYsb9UnllmMbYokc9gL9VFVo-PD60cPxhdm541iUmyJNZw/s1600/Nowa_Huta.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZdHxynVWF-5Z_LqkJbfWSKdJo0JfkMUVSkJCa9eXIDwBCvRvkpi3U06N78QBvs0059LSy16brMAkrCTP-P6I57qyKZ4PK3FYsb9UnllmMbYokc9gL9VFVo-PD60cPxhdm541iUmyJNZw/s320/Nowa_Huta.png" width="320" height="191" data-original-width="1600" data-original-height="956" /></a></div>
<br><br>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2232703684264489429.post-50100841110660756292017-05-14T23:34:00.000-07:002017-05-14T12:41:28.374-07:00Szybka mapa na niedzielną wyprawęSłoneczko świeci, nic tylko wybrać się na rower. No ale jak to? Bez mapy?<br><br>
Możemy oczywiście zabrać ze sobą komórkę, czasami jednak przyda się nam mapa na zwykłej kartce. Możliwości wydrukowania mapy (na przykład <a href="http://www.openstreetmap.org">OpenStreetMap</a>) jest naprawdę sporo, mnie zainteresowała usługa oferowana przez <a href="https://inkatlas.com/">Inkatlas</a>.
<br><br>
Firma ta oferuje pobranie interesującego nas fragmentu mapy OSM i przygotowanie jej do druku w postaci pliku PDF. Usługa jest bezpłatna dla map zajmujących mniej niż 4 strony A4, w przypadku większego obszaru wydruku trzeba uiścić niewielką kwotę.
<br><br>
Rejestracja w testowanej przeze mnie bezpłatnej wersji nie jest wymagana; po wyszukaniu interesującego nas punktu zaznaczamy, używając przycisku z czarnym kwadratem, konkretny obszar, potem dobieramy suwakiem skalę mapy i układ strony.
<br><br>
Inkatlas oferuje mapy w kilku różnych stylach:
<br><br>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEho7qavIsYhYmuEq0xmSbFm7vVJPFCPp-WHJeRGyE5di9CXI1Pv8DT9U6lw6IDIzu9xSyndHdKrDmJg8Q0frIo1oC3JUXt6X6Osscc4kxgV6sBHyQeK29nGUq9QRZGHW45rI8XAl948DQU/s1600/-000.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEho7qavIsYhYmuEq0xmSbFm7vVJPFCPp-WHJeRGyE5di9CXI1Pv8DT9U6lw6IDIzu9xSyndHdKrDmJg8Q0frIo1oC3JUXt6X6Osscc4kxgV6sBHyQeK29nGUq9QRZGHW45rI8XAl948DQU/s400/-000.jpg" width="400" height="274" /></a></div>
<br><b>OpenStreetMap</b>, czyli zwykła mapa OSM bez przeróbek — czasami po prostu może być za mocno przeładowana informacjami
<br><br>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjT7uBFXAuFzsInn7r-Rcdct-EjFS-YPrDrOSH_kVi7x5RY6MMCec_LYuP1A9o-Y_Uum3_67AH9oFEpRZp0ISdDILvUhdlPULCz-kG-mluqRFaEELxAKa8gUUAuAc7B4yNEi_kTMOSLcWI/s1600/-000.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjT7uBFXAuFzsInn7r-Rcdct-EjFS-YPrDrOSH_kVi7x5RY6MMCec_LYuP1A9o-Y_Uum3_67AH9oFEpRZp0ISdDILvUhdlPULCz-kG-mluqRFaEELxAKa8gUUAuAc7B4yNEi_kTMOSLcWI/s400/-000.jpg" width="400" height="274" /></a></div>
<br><b>Inkatlas Urban</b> — czarno biała mapa z podkreślonymi zabudowaniami i wyraźnym układem ulic i dróg
<br><br>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsQBcoj5pgp5P_ITxswTu8VAKOGRYOPbm3If-Ja2O3OB_Q91A2SUJgJLiJbkJpr9q3bXgyQiKR4nBBP2m5WESQPGAy8cBmAzyCKEdWYV4MH3QA_jgtfYtEZeIZz7dhRJRDAQlmhdG-lPY/s1600/-000.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsQBcoj5pgp5P_ITxswTu8VAKOGRYOPbm3If-Ja2O3OB_Q91A2SUJgJLiJbkJpr9q3bXgyQiKR4nBBP2m5WESQPGAy8cBmAzyCKEdWYV4MH3QA_jgtfYtEZeIZz7dhRJRDAQlmhdG-lPY/s400/-000.jpg" width="400" height="274" /></a></div>
<br>
<b>Inkatlas Outdoor</b> — styl podobny do wersji Urban, ale z zaznaczonymi poziomicami
<br><br>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGrVvDLLjXsML5kaOnfMuhVsrdzKXfSasuuNQyoHfFLK39ytHaOwn1ByCn3K_DLJnLegjptg6K5Zs-yOcI6AGEeGdoba9IGfyFHexBiGl8T0PClkfV8L9Ci9rSxi-Iss3kmeodXWNe6SY/s1600/-000.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGrVvDLLjXsML5kaOnfMuhVsrdzKXfSasuuNQyoHfFLK39ytHaOwn1ByCn3K_DLJnLegjptg6K5Zs-yOcI6AGEeGdoba9IGfyFHexBiGl8T0PClkfV8L9Ci9rSxi-Iss3kmeodXWNe6SY/s400/-000.jpg" width="400" height="274" /></a></div>
<br>
<b>OpenTopoMap</b> — kolorowa mapa topograficzna uzyskana na podstawie mapy OpenStreetMap
<br>
<br>
Po wybraniu stylu należy nacisnąć przycisk "Continue". W drugim etapie można wpisać tytuł mapy i jej opis (oraz zadecydować, czy chcemy mieć na mapie siatkę geograficzną), po przejściu do kolejnej strony rozpoczyna się generowanie mapy.
<br><br>
Garść uwag:
<br><br>
1. Wszystkich tych, którzy chcieli za darmo wygenerować plik w formacie A4, a potem zrobić sobie z tego mapę sztabową na pół ściany, muszę zmartwić — w powiększeniu wygląda ona kiepsko, po obejrzeniu mapy okazało się, że jest to tak naprawdę średniej jakości rysunek JPG zapakowany tylko do PDFa.
<br><br>
2. W mapie w stylu Inkatlas Outdoor zauważyłem pewien błąd — chciałem wydrukować sobie mapę pobliskiego zalewu, okazało się, że w okolicznych miejscowościach, w których obszar zabudowany nie był zaznaczony jako całość, znikały również pojedyncze budynki.
<br><br>
3. Jeżeli ktoś się zastanawia, czy można z tak uzyskaną mapą iść w góry, to radzę obejrzeć przykładową <a href="https://drive.google.com/uc?export=download&id=0B_6RJNd3AGYnMlY1QklCVTdnaWc">mapę</a> okolic Karpacza.
Unknownnoreply@blogger.com0Kąty Wrocławskie, Polska51.039818999999987 16.79439490000004350.880048999999985 16.471671400000044 51.199588999999989 17.117118400000042tag:blogger.com,1999:blog-2232703684264489429.post-37662432035081004672017-05-01T02:41:00.001-07:002017-05-03T13:10:51.570-07:00Mapyrus - schemat połączeń kolejowychDo rozpracowania <a href="http://mapyrus.sourceforge.net/">Mapyrusa</a> zabrałem się już jakiś czas temu; na pierwszy rzut oka sprawiał wrażenie nowoczesnego — wieloplatformowy, może pracować jako serwer, produkuje ładne grafiki wektorowe itp. <br><br>
Mętna dokumentacja plus niestabilność tamtej wersji programu sprawiła, że odłożyłem go na półkę. Później jednak wypatrzyłem na stronie internetowej Mapyrusa drobiazg, który mnie zachwycił — przykładowy schemat połączeń komunikacyjnych.<br><br>
Narysowanie mapy/wykresu sprowadza się do stworzenia skryptu w dość dziwnym języku programowania (czy tylko ja widzę fascynację autora PostScriptem?), potem trzeba ów skrypt uruchomić poleceniem:<br><br>
<b>java -classpath ścieżka_do_programu\mapyrus.jar org.mapyrus.Mapyrus nazwa_skryptu</b>
<br><br>Niezwykle intuicyjne, prawda? Na szczęście można wstawić to polecenie do jakiegoś programu wsadowego (np. mapka.bat) i później uruchamiać go normalnie, klikając myszką.
<br><br>
Nie pisałem własnego skryptu, przerobiłem jedynie odrobinę przykład o nazwie <b>mapview3.mapyrus</b> dołączony do dokumentacji tak, żeby obsługiwał polskie znaki i żeby układ wykresu był pionowy. W jednym folderze ze skryptem powinien znaleźć się oddzielny plik z listą stacji (oba przykładowe pliki można pobrać <a href="https://docs.google.com/uc?export=download&id=0B_6RJNd3AGYneEFtWmQ4S1EzMFU">stąd</a>). Aha, dużo ładniejszy wynik uzyskamy w formacie SVG, wystarczy zmodyfikować w jednej z ostatnich linii skryptu po poleceniu <b>newpage</b> najpierw nazwę formatu, potem nazwę pliku.<br><br>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1d2OBrD_Dz6plrida0z-pFeSfBFqZuE3RyvpKqJWn6yePPL8ZNry0kJzt1Lak7WVQ5tcSiStg1NfkXvRv3hBMmpiLQ15_oPyioE4fkRdVJTd8FIh7y8HMMPHzbX9_mfZufms6akAqJ0s/s1600/koleje.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1d2OBrD_Dz6plrida0z-pFeSfBFqZuE3RyvpKqJWn6yePPL8ZNry0kJzt1Lak7WVQ5tcSiStg1NfkXvRv3hBMmpiLQ15_oPyioE4fkRdVJTd8FIh7y8HMMPHzbX9_mfZufms6akAqJ0s/s640/koleje.jpg" width="377" height="640" /></a></div>
<br><br>Linia kolejowa 285 jest jedną z ładniejszych w Polsce, obecnie trwają prace nad jej przywróceniem do użytku. Malownicze wiadukty już dawno docenili ludzie z <a href="http://www.drezyny.org">Sowiogórskiego Bractwa Kolejowego</a>, którzy na tej trasie organizują Mistrzostwa Polski w Drezynowaniu.<br><br>Unknownnoreply@blogger.com0