Styl do Maperitive dla map drukowanych

No nie wiem, może jest jakaś konwencja przyjęta, żeby umieszczać to np. w MaperitiveStyle/Nazwa lub coś w tym stylu.

Ochrzcij Twoje dziecko… Uzywasz jakiejs nazwy roboczej dla Twojego projektu?

OK, już widzę, że jest kategoria Maperitive/Rules i ludzie w większości wrzucają w User:Login/Maperitive Rules/Nazwa.
http://wiki.openstreetmap.org/wiki/Category:Maperitive/Rules

Mhmm, a czy jest sens pakowac energie w prace jesli wiemy ze program jest A. na zamknietym kodzie B. nie bedzie rozwijany? Dla mnie to byloby super gdyby zastapilo czarnobiale kafelki z fieldpapers.
BTW: walczylem z tym Maperitive przez godzine, ale na moim Ubuntu nie chce dzialac, co bym nie robil.

Skoro już zacząłem, to przynajmniej skończę w miejscu, który mnie jakoś zadowala. Może do tego czasu Maperitive nie padnie. :wink:
A potem pewnie przepiszę do czegoś innego. Pewnie TileMill, choć konieczność instalacji, konfiguracji i ogólnie utrzymania bazy danych mnie odstręcza. Aha, przypomniało mi się: ktoś wcześniej sugerował QGIS — jakkolwiek w miarę go znam, wydaje mi się, że tak ogólnie to trochę strzelanie z armaty do muchy. :slight_smile:

Na Debianie najpierw zainstalowałem samo mono-runtime bez pakietów zalecanych:

aptitude -R install mono-runtime

ale się wywalał przy uruchamianiu. Stwierdziłem, że nie chce mi się patrzeć czego konkretnie brakuje i zainstalowałem mono-complete (bez zalecanych oczywiście):

aptitude -R install mono-complete

I działa (uruchamiam załączonym Maperitive.sh o treści:mono --desktop Maperitive.exe “$@”) . Choć mam trochę niepotrzebnego śmiecia w systemie.

Bo sam program działa, wypuszczane są poprawki na tyle by działał dalej a jak przestanie działać to można zawsze go puścić w VM? Nie ma dla niego jakiejkolwiek alternatywy (jest TileMill i inne ale to jest znacznie trudniejsze w obsłudze, tutaj problem z samym importowaniem danych i generowaniem mapy jest niemal zerowy - i całość wysiłku idzie w tworzenie stylu).

Kolejne propozycje: wyświetlanie fixme, historic=wayside cross, historic=wayside_cross/man_made=cross/historic=wayside_shrine.

Dzięki, gdy wrócę do domu, to dodam.

Dla fixme dawać tylko ikonkę (prawdopodobnie wykrzyknik lub coś w tym stylu), że w danym miejscu jest jakieś fixme, czy dodać też treść danego fixme? Niby dobrze by było dodawać, z drugiej strony przy dłuższych opisach mapa może tracić na czytelności.

Treść, przy wizycie w terenie warto o tym wiedzieć - może małą czcionką by nie blokowało?

Czy jest gdzieś tutorial pokazujący w prosty sposób, jak samemu wyrenderować sobie kawałek mapy?

Może http://maperitive.net/docs/#Tutorials dadzą radę.

A jeśli nie - do czego dotarłeś? Udało ci się w Maperitive użyć domyślnie wbudowanych stylów?

Nie dotykałem wcale tematu. Ekipa z Górzna chciała by się nauczyć, jak w prosty sposób wygenerować sobie taką mapę.

No właśnie myślałem, żeby napisać jakąś instrukcję, ale nie mogłem się zebrać. :slight_smile:
Nie mam w tej chwili dostępu do komputera z Maperitive i piszę z pamięci, więc odrobinę mogę pokićkać nazwy. Gdy wrócę do domu poprawię i nieco rozwinę opis.

Przygotowanie kafelków

  1. Trzeba pobrać plik stylu do katalogu Rules. Jeśli Maperitive służyć będzie tylko do tej mapy, najprościej zapisać plik jako default.mrules (można zarchiwizować oryginalny default.mrules), wtedy bez dodatkowego działania i ustawiania od razu ten styl będzie się wczytywal.
  2. Na mapie w Maperitive (powinien się domyślnie wczytać Mapnik) wybieramy z grubsza rejon, który nas interesuje. Klikamy prawym przyciskiem myszy na mapie i wybieramy Set geometry – pojawi się prostokąt na mapie, rozciągamy go do obszaru, który nas interesuje. W górnym menu wybieramy Cośtam (no nie pamiętam, chyba Map, ale głowy nie dam) > Download cośtam cośtam OverPass Turbo – zostaną pobrane dane z OSM, i wyrenderowany zostanie mapa wg stylu nad Mapnikiem. W okienku w prawym dolnym rogu wyłączamy widoczność warstwy Mapnik klikając na ikonkę obok jej nazwy (sumie nie wiem czy to konieczne ;))
    2b. Możemy również wyeksportować plik .osm wcześniej (np. przez OverPass lub na osm.org) i wczytać go przez File > Open file. Po czym ustawić geometry i wyłączyć warstwę Mapnika
  3. W wierszu poleceń na dole wpisujemy:
generate-tiles minzoom=10 maxzoom=17

Oczywiście warstwy można ustawić dowolne, przy czym należy mieć na uwadze, że wysokie zoomy znacząco wydłużają generowanie kafelków, zdecydowanie odradzam maxzoom=18 (albo i wyższy) na większym obszarze. Kafelki zapiszą się w katalogu Tiles.

Drukowanie mapy

Osobiście do przygotowania mapy do wydruku polecam Mobaca (poniekąd nielubianego przez OSM ;)).

  1. Tworzymy plik mapsources/maperitive.xml o treści:
<?xml version="1.0" encoding="UTF-8"?>
<localTileFiles>
   <name>Maperitive</name>
   <sourceType>DIR_ZOOM_X_Y</sourceType>
   <sourceFolder>/ścieżka/do/Maperitive/Tiles/</sourceFolder>
   <backgroundColor>#000000</backgroundColor>
</localTileFiles>

W Windows ścieżka oczywiście będzie miała postać C:\cośtam\itd.
2. Uruchamiamy Mobaca, wybieramy rodzaj mapy do wydruku PDF. W lewym panelu klikamy Settings, przechodzimy do zakładki Paper atlas – tu ustawiamy:

  • format arkusza (powiedzmy A4),
  • marginesy (ja chcę jak największą więc 1 cm, tylko lewy nieco większy - 1,7 cm, żeby objechać kartkę dziurkaczem i wsadzić do segregatora)
  • DPI (do druku to ze 300, przy domyślnym wyjdzie pikseloza!)
  • polecam ustawić crop na 100%, w ten sposób jeśli strona nie będzie w całości zapełniona, to zostanie pominięta w PDF-ie
  1. Na jakiejś ogólnej wbudowanej warstwie zbliżamy do interesującej nas okolicy, zmieniamy na warstwę Maperitive, zaznaczamy interesujący nas obszar (jeśli wcześniej daliśmy crop na 100% to nieco większy w okolicy prawego dolnego rogu)
  2. Zaptaszamy interesujące nas zbliżenia, np. 15+16+17, wpisujemy jakąś nazwę dla zaznaczonej warstwi i klikamy Add selection
  3. Klikamy Create atlas

Ech, opis Mobaca pisany z pamięci jest fatalny, za kilka dni to napiszę jak należy (+ dodam instrukcję dla kieszonkowego atlasu A5 lub A6), ale teraz te wypociny muszą wystarczyć.

Można też eksportować do bitmapy, można poradzić sobie wtedy bez Mobaca (Tools | Export to bitmap) i drukujemy plik. Stosuję to jak chcę mieć jakiś konkretny kawałek terenu do jednorazowego wykorzystania.

Przydaje się też umiejętność drobnego zmieniania stylu - np. pokaż specjalnie wszystkie drogi bez surface=*, wtedy ma się ładnie pokazane co chce się zmapować.

Małe jednorazówki może i faktycznie szybciej i wygodniej będzie przez export-bitmap. Przy czym tu chyba trzeba dać Set printing area (czy jak to się zwało, coś z print w każdym razie). Tu trzeba dodać zoom=poziom (np. 16) i stanowczo zalecam dodać dpi=300 oraz file=nazwa.png, np.

export-bitmap zoom=16 dpi=300 file=mapa.png

Ale jednak będę upierał się, że “poważniejszą” mapę szczególnie interesującego nas obszaru lepiej przygotować do druku przez Mobaca.

Oczywiście, takie mapki robię jak wiem że gdzieś w mieście będę czekał przez kilka/kilkanaście minut. I dzięki za info o Mobacu, myślę że przyda się.

Dość wylegiwania się, czas wrócić do grzebania. :slight_smile:

Wstępnie dodane (jeszcze wymagają szlifu/znalezienie lepszej ikonki):

  • paśnik (amenity=game_feeding OR amenity=feeding_place): ⟰
  • ambona myśliwska (amenity=hunting_stand): Ħ
  • krzyże i kapliczki (historic=wayside_cross OR man_made=cross OR historic=wayside_shrine): :latin_cross:
  • schronienie (amenity=shelter): :umbrella:
  • fixme (fixme=*): ❢ treść ❢

Ikonki czcionką DejavuSans:

Do wieczora postaram się napisać porządną instrukcję tworzenia mapy (i muszę w końcu wrzucić styl na wiki).

Dadaj jeszcze “highway=street_lamp”

Dodano (jak zwykle wstępnie, do doszlifowania):

  • highway=street_lamp: آ
  • emergency=fire_hydrant: н
  • emergency=suction_point: ⇡

Z tymi wszystkimi nowymi tagami coraz bardziej zaczyna mi brakować znaków na ikonki, chyba będzie trzeba niedługo zaakceptować konieczność rozwinięcia stylu o ikonki graficzne…

Wstępna wersja łopatologicznej instrukcji drukowania map z Maperitive. Później jeszcze dodam zrzuty ekranu oraz przykładowy atlas. A jeszcze później dodatkowe sztuczki typu kieszonkowy atlas A5/A6, oskryptowanie Maperitive celem wygenerowania mapy jednym kliknięciem.

I wybaczcie, że tyle mi to zajęło. :slight_smile:

1. Instalacja i pierwsze uruchomienie

Pobieramy najnowszą wersję Maperitive ze strony projektu: http://maperitive.net/download/Maperitive-latest.zip

Następnie pobieramy i instalujemy (oczywiście jeśli już nie mamy) środowisko uruchomieniowe .NET (Windows) lub Mono (Linux, chyba również Mac OS X). W przypadku Windows udajemy się na stronę http://www.microsoft.com/net/downloads, w przypadku Linuksa pakiet powinien znajdować się w repozytorium i wystarczy zainstalować go menedżerem pakietów (w Debianie, Ubuntu, Mincie i pochodnych należy zainstalować pakiet mono-complete).

W końcu możemy uruchomić Maperitive.exe (Windows) lub Maperitive.sh (Linux), po chwili ukaże się następujące okno:

maperitive_pierwsze_uruchomienie.png

Po zamknięciu okna asystenta, będziemy mieli przed oczami ulubione okolice autora programu. Jeśli ktoś nie lubi, może wyłączyć przy okazji wyświetlanie siatki geograficznej (w menu: Map > Show Grid) oraz skali (Map > Show Map Scale).

2. Renderowanie mapy

2.1. Załadowanie stylu

Jeśli interesuje nas renderowanie jednej konkretnej mapy, najprościej będzie zapisać styl (np. paper.mrules w pliku Default.mrules, który jest domyślnym stylem (dla porządku warto zachować jego kopię). Dzięki temu nie będzie trzeba wykonywać dodatkowych czynności aby go wczytać.

W przeciwnym razie będzie trzeba wczytywać styl wpisując w wierszu poleceń (Command prompt):

use-ruleset Rules/paper.mrules as-alias=Paper

aby dodać go do dostępnych styli, a następnie wybierając go w menu Map > Switch to Rules > Nazwa.

2.2. Pobranie danych OpenStreetMap

Dane OSM można pobrać bezpośrednio w Maperitive lub wcześniej zapisać je na dysku i wczytać w Maperitive. Pierwsza metoda sprawdza się idealnie jeśli chcemy na szybko sprawdzić lub opracować dane miejsce bez specjalnych przygotowań. Jednak jeśli mamy specjalnie interesujące nas miejsce, które dość często renderujemy, testujemy własne zmiany w stylu lub z innych powodów wielokrotnie renderujemy ten sam fragment mapy — wtedy lepiej jest pobrać dane raz do pliku (lco jakiś czas go odświeżając oczywiście), niż ciągle pobierać te same dane przy każdym uruchomieniu Maperitive.

Aby pobrać dane do pliku najlepiej udać się na osm.org, kliknąć Eksport na górnej belce, po czym w menu bocznym Ręcznie zaznacz inny obszar, ustawić granice obszaru na mapie i pobrać przez wygenerowany link “Overpass API”. Jeśli obszar będzie pobierany wielokrotnie można sobie ów zapisać link (np. zakładka w przeglądarce, polecenie wgeta).

Aby pobrać dane w Maperitive wystarczy wybrać w menu Map > Download OSM Data (Overpass API). Domyślnie pobierze się obszar widoczny na podglądzie mapy, można go zmienić klikając na mapie prawym przyciskiem myszy (PPM), klikając na Place Geometry Bounds Here i rozciągając granicę do pożądanego obszaru.

Po wczytaniu danych OSM dowolną metodą na podglądzie mapy wyświetli się wstępnie wyrenderowana mapa. Możemy teraz wyłączyć podgląd mapy OSM kilkając na gwiazdkę przy nazwie warstwy w okienku Map Sources w prawym dolnym rogu.

2.3. Wyrenderowanie mapy

Mapę można wyrenderować na kilka sposobów: pojedynczy plik rastrowy PNG, pojedynczy plik wektorowy SVG, kafelki lub kafelki w kontenerze SQLite (tzw. MBTiles). Tutaj omówimy tylko pojedynczy plik rastrowy oraz kafelki, informacje o reszcie można znaleźć w dokumentacji Maperitive.

2.3.1. Pojedynczy plik rastrowy PNG

Metoda jest dobra do tworzenia na szybko niewielkich fragmentów mapy. Wystarczy kliknąć na mapie Place Printing Bounds Here, rozciągnać obszar do pożadanego rozmiaru i w wierszu poleceń wpisać:

# mapa w powiększeniu 16
export-bitmap zoom=16 dpi=300 file=nazwa_pliku.png
# mapa w konretnej skali, np. 1:25000
export-bitmap map-scale=25000 dpi=300 file=nazwa_pliku.png

Jeśli chcemy utworzoną mapę wydrukować należy dodać opcję dpi=*, do druku najlepiej przynajmniej 300. Jeśli plik ma być wyświetlany wyłącznie na ekranie komputera można tę opcję pominąć.

2.3.2 Kafelki

Jeśli chcemy przygotować mapę staranniej polecam jednak wyrenderować kafelki, a następnie przy pomocy Mobaca złożyć mapę PDF (o czym za chwilę). Ponadto kafelki można użyć w innych programach do wyświetlania map, planowania tras itd.

Aby je wyrenderować należy zaznaczyć granicę obszaru przy pomocy PPM > Place Geometry Bounds Here (można wykorzystać wcześniej ustawioną granicę podczas pobierania danych w Maperitive), po czym w wierszu poleceń wpisać:

generate-tiles minzoom=10 maxzoom=17

Oczywiście minimalne i maksymalne zbliżenie można podać własne (przy czym warto mieć na uwadze, że im większe zbliżenie tym dłużej się one generują, odradzam podawanie wartość 18+ dla większego obszaru). Kafelki utworzą się w katalogu Tiles. Można też podać własny katalog za pomocją opcji tilesdir={ścieżka}.

3. Mobac

Mobac to program do tworzenia atlasów i map dla najróżniejszych programów. Ponadto pozwala on też na przygotowanie map papierowych, z czego skrzętnie za chwilę skorzystamy.

3.1. Instalacja i konfiguracja

Najpierw należy pobrać oraz rozpakować Mobaca ze strony projektu, do jego uruchomienia potrzebne będzie jeszcze środowisko uruchomieniowe Java lub OpenJDK. Ponadto musimy dodać wygenerowane kafelki do źródeł programu — w tym celu tworzymy plik mapsources/maperitive.xml o treści:

<?xml version="1.0" encoding="UTF-8"?>
<localTileFiles>
   <name>Maperitive</name>
   <sourceType>DIR_ZOOM_X_Y</sourceType>
   <sourceFolder>{/ścieżka/do/Maperitive/Tiles/}</sourceFolder>
   <backgroundColor>#000000</backgroundColor>
</localTileFiles>

Oczywiście należy podać właściwą ścieżkę do katalogu z wygenerowanymi kafelkami. Dobrze będzie też uruchomić Javę z maksymalną ilością dostępnej pamięci (Windows, flaga -Xms64m -Xmx1024Mw Linuksie — znów należy podać odpowiednią wartość).

Przy pierwszym uruchomieniu Mobaca zostaniemy poproszeni o podanie nazwy atlasu (dowolny) oraz jego rodzaj (Paper Atlas (PDF)). Od razu możemy ukryć prawy panel GPX, który do niczego nam się nie przyda: Menu > Panels > Show/Hide GPX Panel. Następnie dokonamy kilku zmian w ustawieniach — na dole lewego panelu klikamy na przycisk Settings, gdzie:

  • w zakładce Display możemy ustawić kolor i krój czcionki siatki (jeśli z niej będziemy korzystać)
  • w zakładce Paper Atlas możemu ustawić:
    • format oraz orientację papieru (w większości przypadków A4, ale można sobie też przygotować np. ścienną mapę B1)
    • marginesy (jeśli chcemy trzymać mapy w segregatorze sugeruję lewy margines (oraz prawy jeśli drukujemy dwustronnie) ustawić na 1,70 cm, aby zrobić miejsce na dziurkacz)
    • pokazywanie lub nie siatki (WGS 84 Grid)
    • pokazywanie lub nie numerów stron i odnośniki do stron na górze i na dole (Page numbers)
    • pokazywanie lub nie skali (Scale bar)
    • pokazywanie lub nie róży wiatrów (Compass)

Osobiście zalecam włączenie numeracji stron w przypadku kilkustronicowych atlasów, zwłaszcza jeśli atlas ma kilka „rzędów” stron, reszta ustawień wg własnych upodobań.

Bardzo ważnym ustawieniem jest jeszcze Resolution — dla druku powinniśmy ustawić odpowiednio duże, najlepiej przynajmniej 300. Ponadto można ustawić Overlap (na ile sąsiednie kartki mają na siebie zachodzić) oraz Crop (minimalna powierzchnia jaka musi być zajęta na stronie, aby została ona do atlasu dodana — tu sugeruję ustawić 100%, dzięki czemu unikniemy drukowania niepełnych stron, a podczas zaznaczania obszaru mocno przesadzić w prawym dolnym rogu).

3.2. Przygotowanie atlasu

Korzystając z ogólnej wartswy (np. MapQuest) zbliżamy do obszaru, dla którego przygotowaliśmy kafelki. Następnie:

  • w zakładce Map Source w lewym panelu zmieniamy warstwę na Maperitive (czy jakkolwiek nazwaliśmy warstwę),
  • przeciągając PPM na mapie zaznaczamy interesujący nas obszar,
  • w zakładce Zoom Levels wybieramy interesujące nas zbliżenia,
  • w zakładce Atlas Content nadajemy nazwę warstwie atlasu (cokolwiek) i klikamy Add selection

Po czym możemy w końcu wygenerować PDF(-y) klikając w lewym panelu Create Atlas.