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.