niedziela, 17 października 2021

Zimno jak w Suwałkach albo sztuka rysowania klimatogramów

Przygotowanie

1. Pobieramy i instalujemy program Gnuplot (wersję pod Windowsa można znaleźć tutaj, 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.

Możemy go przetestować, wpisując plot x*x i naciskając 'Enter'. Powinno nam się pokazać okno z ładnym wykresem funkcji kwadratowej.


 2. Zarówno dane jak i skrypt możemy edytować w systemowym Notatniku, ale szczerze polecam Notepad++ albo Geany.

Pobieramy dane

Dane możemy pobrać ze strony Klimadiagramme (po niemiecku) albo Climate Data (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.

Na potrzeby niniejszego posta, pobrałem sobie dane 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):

Zapisujemy dane w pliku np. jako suwalki.txt (bezpieczniej nie używać polskich znaków).

Skrypt do generowania wykresu

Otwieramy nowe okno w Notatniku i przeklejamy tam poniższy skrypt.

 

Zapisujemy plik skryptu np. pod nazwą klimatogram.txt w tym samym folderze, co nasz plik z danymi. Teraz otwieramy skrypt z menu Gnuplota, wybierając opcję File -> Open.
Sam proces rysowania odbywa się po cichu i bez komunikatów – w Gnuplocie wyświetli się tylko w nowej linii napis load 'klimatogram.txt', ale w folderze pojawi gotowy plik graficzny z klimatogramem o nazwie ustalonej w skrypcie (suwalki.jpg)

 


Modyfikacje

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.

Oś x (z miesiącami) pozostaje niezmienna, ale zakresy temperatury (set yrange) i opadów (set yrange2) 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 y2ticks wyraźnie podają, że podziałka osi ma się zacząć dopiero od 0, skończyć na 100 i iść co 25 jednostek.

Formaty wyjściowe

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 set term i naciskając 'Enter'.
Jeżeli chcemy podejrzeć od razu efekt pracy programu, a dopiero potem zapisać go na dysku, to można zamienić w linii 14 set term jpeg na set term qt (uwaga – za pierwszym razem otworzenie okna z podglądem zajmuje trochę więcej czasu!).

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.

Disclaimer

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 windytan. W międzyczasie w samej Wikipedii pojawił się inny, wbudowany sposób prezentowania danych klimatycznych, który nie wymaga już zewnętrznych narzędzi.

Udanych eksperymentów z Gnuplotem!


niedziela, 17 maja 2020

Ską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!


Zwróćcie uwagę - nie musimy się bawić we wpisywanie oryginalnej nazwy, transkrypcje z innego alfabetu itp.
Inspiracja: stąd.

sobota, 14 marca 2020

Noś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!


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ć. Slackware 7 odstraszał, ale Red Hat 6 zrobił na mnie wrażenie.


Potem, pracując na tzw. Zachodzie, kupiłem sobie za ciężko zarobioną walutę pudełkową wersję SuSE 7.0 – kilka grubych podręczników i sześć płytek zniknęło w trakcie wielu przeprowadzek, zostały mi tylko 2 dyskietki.



 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 Auroksa. 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.


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!).


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 live, którą dało się uruchomić bez instalacji – wystarczył do niej sprzęt z 64 MB pamięci. (cdn.)






poniedziałek, 30 grudnia 2019

Sylwester w Lututowie

Początek roku to termin wprowadzania zmian na mapie administracyjnej Polski, to znaczy przesuwania granic, zmiany statusu, podziałów i fuzji.

W tym roku na szczęście żadna gmina nie podzieli losu zlikwidowanych przed rokiem Ostrowic, natomiast cztery miejscowości (Lututów, Czerwińsk nad Wisłą, Piątek i Klimontów) odzyskają prawa miejskie, utracone jeszcze w czasach carskich.

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.



Do narysowania powyższej mapki wystarczy ok. 25 linijek kodu w Pythonie.



Instalacja

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.).

Kartografowie z Windows nie mają tak łatwego życia – wersja dostępna przez instalator pip jest dość wiekowa, albo nie zawsze da się zainstalować; osobiście korzystałem z Pythona do celów naukowych o nazwie Anaconda (ze świetnym instalatorem pakietów conda. Można też spróbować zainstalować gotowy pakiet stąd.

Kopalnia współrzędnych

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ć tutaj, sprawdźcie tylko, czy nie ma jakichś ograniczeń licencyjnych).

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.

Uwaga techniczna: współrzędne, zarówno w Wikipedii jak i w pliku PRNG są podane w stopniach i minutach kątowych (np. 51°22'18'' N), więc trzeba je przeliczyć na ułamki dziesiętne (51+22/60+18/3600 = 51.3716666666667). W tym zapisie półkulę południową i zachodnią przedstawia się przy użyciu liczb ujemnych.

Rysujemy mapę

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:
  • projection (odwzorowanie) – tutaj będzie to stary dobry Mercator
  • lat_0 – w tym odwzorowaniu: szerokość geograficzna środkowego równoleżnika
  • lon_0 – w tym odwzorowaniu: długość geograficzna środkowego południka
  • resolution – rozdzielczość high (czyli wysoka, może być też 'l' (low = niska) czy 'c' (crude = toporna)
  • area_thresh to parametr oznaczający jakie obiekty mają być pominięte (tutaj – wszystkie obiekty o powierzchni poniżej 150 km2)
  • llcrnrlon i llcrnrlat to odpowiednio długość i szerokość geograficzna lewego dolnego rogu (lower left corner) mapy, a urcrnrlon i urcrnrlat to długość i szerokość geograficzna jej prawego górnego rogu (upper right corner).


Czas na kropki

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).

W linii 14 program przelicza dane z listy na współrzędne na rysunku, a w następnej rysuje punkty.

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.

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 peak 5390, który był dla mnie sporą pomocą i inspiracją w trakcie pisania tej notki.

Kolorowanie

Kolejne linie programu to polecenia do rysowania wybrzeży (drawcoastlines), granic państwowych (drawcountries, tutaj z opcjonalnie podanym kształtem przerywanych kresek), wreszcie wypełnienia lądów (fillcontinents) i mórz (drawmapboundary).

Oprócz poetyckich nazw kolorów 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 (bluemarble), tradycyjnej mapy topograficznej (etopo) czy cieniowanej rzeźby terenu (shadedrelief).

Z góry jednak uprzedzam, że tego rodzaju tła w tej skali wyglądają dość mizernie.


Tło ze zdjęć satelitarnych jest dość niewyraźne;



na mapie topograficznej widać wręcz kwadratowe ,,kafelki"...



...a cieniowana rzeźba terenu jest mocno uproszczona (gdzie jest Pas Wyżyn?).


Tego rodzaju tło dużo lepiej sprawdza się w przypadku mapy świata:



Dla ciekawych – kod programu (8 linijek!):



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.

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.

Zapis mapy

Ostatnia linia programu służy do zapisu – format docelowy rysunku (SVG, PNG, JPEG, PDF) program automatycznie rozpoznaje na podstawie rozszerzenia pliku.

Szczęśliwego Nowego Roku!

poniedziałek, 19 lutego 2018

Znów urodzinowo

Dzisiaj są urodziny siostrzeńca samego Lukasa Watzenrode (biskupa warmińskiego). Cytat z siostrzeńca:
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.
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.
Dzieci w szkołach powinny uczyć się tego cytatu, a nie jakieś wierszowanych dyrdymałek o przestawianiu wajch planetarnych.

wtorek, 26 września 2017

Sto lat, Larry!

Dzisiaj są urodziny Larry'ego Walla. 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ć.

Dwa moje ulubione cytaty z Larry'ego:

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.

Real programmers can write assembly code in any language.

niedziela, 24 września 2017

Czarno na białym

Kiedy 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.

Wbrew temu, co sugerowano na filmie Poszukiwany, poszukiwana, osiedla nie zawsze planowano na zasadzie A jezioro przesuniemy tutaj. Za niektórymi projektami stał konkretny pomysł, jakaś idea urbanistyczna.



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ć: schwarzplan, 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.

Zaczniemy od poniemieckiego klasyka, czyli wrocławskiego osiedla-ogrodu Sępolno, 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.



O schwarzplanach i układach miast bardzo ładnie pisał na swoim blogu Marcin Piotrowski, przedstawiając fascynujące tło powstania miasta Brasilii (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.

1. Instalacja

Pobieramy program Maperitive i rozpakowujemy go. Następnie w katalogu Maperitive, a ściślej w podkatalogu Rules, gdzie znajdują się reguły renderowania map, zapisujemy plik Schwarzplan.mrules. Teraz trzeba uruchomić program i zarejestrować nową regułę, wpisując w wierszu znajdującym się na dole okna polecenie:

use-ruleset location=Rules/Schwarzplan.mrules as-alias=Schwarzplan

i naciskając ENTER.

2. Wybór obszaru roboczego

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ę:

move-pos y=szerokość_geograficzna x=długość_geograficzna

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 Set Geometry Bounds w menu Map. Po zmianie powiększenia będzie widać obszar roboczy, zaznaczony czerwoną ramką.

3. Pobranie danych i renderowanie

Po ustaleniu obszaru pobieramy dane z OpenStreetMap — służy do tego opcja w menu Map o nazwie Download OSM Data (Overpass API). 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 OSM File.

Teraz w menu Map wybieramy Switch to rules, potem z listy reguł wybieramy Schwarzplan. Można już wyłączyć podgląd warstwy o nazwie Web map, odznaczając gwiazdkę na liście warstw (Sources), w podglądzie Maperitive zostanie już tylko czarno-biały układ budynków.



4. Obszar, skala i format wyjściowy planu

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ę Set Printing Bounds z menu Map albo kliknąć drugim przyciskiem myszy na czerwoną ramkę i wybrać opcję Place Printing Bounds Here.

Od tego momentu przyciski powiększenia i oddalenia [+]/[-] mają wpływ nie tylko na widok ale też skalę i wielkość eksportowanej mapy.

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 Tools, to program domyślnie zapisze schwarzplan w podkatalogu output. Możemy też sami ustalić ścieżkę do zapisu przy użyciu polecenia

export-bitmap file="ścieżka/nazwapliku.png"

5. Problemy miast

Na deser kilka narysowanych naprędce planów.
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?



Dla porównania dokładam Podzamcze — sypialnię na obrzeżach Wałbrzycha, podobno jedno z lepiej zaprojektowanych osiedli w Polsce z lat 70'/80'.
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.
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.



Analizę Nowej Huty pozostawiam już Czytelnikom.



niedziela, 14 maja 2017

Szybka mapa na niedzielną wyprawę

Słoneczko świeci, nic tylko wybrać się na rower. No ale jak to? Bez mapy?

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 OpenStreetMap) jest naprawdę sporo, mnie zainteresowała usługa oferowana przez Inkatlas.

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ę.

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.

Inkatlas oferuje mapy w kilku różnych stylach:


OpenStreetMap, czyli zwykła mapa OSM bez przeróbek — czasami po prostu może być za mocno przeładowana informacjami


Inkatlas Urban — czarno biała mapa z podkreślonymi zabudowaniami i wyraźnym układem ulic i dróg


Inkatlas Outdoor — styl podobny do wersji Urban, ale z zaznaczonymi poziomicami


OpenTopoMap — kolorowa mapa topograficzna uzyskana na podstawie mapy OpenStreetMap

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.

Garść uwag:

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.

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.

3. Jeżeli ktoś się zastanawia, czy można z tak uzyskaną mapą iść w góry, to radzę obejrzeć przykładową mapę okolic Karpacza.

poniedziałek, 1 maja 2017

Mapyrus - schemat połączeń kolejowych

Do rozpracowania Mapyrusa 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.

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.

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:

java -classpath ścieżka_do_programu\mapyrus.jar org.mapyrus.Mapyrus nazwa_skryptu

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ą.

Nie pisałem własnego skryptu, przerobiłem jedynie odrobinę przykład o nazwie mapview3.mapyrus 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ć stąd). Aha, dużo ładniejszy wynik uzyskamy w formacie SVG, wystarczy zmodyfikować w jednej z ostatnich linii skryptu po poleceniu newpage najpierw nazwę formatu, potem nazwę pliku.



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 Sowiogórskiego Bractwa Kolejowego, którzy na tej trasie organizują Mistrzostwa Polski w  Drezynowaniu.