Tyle wiem na temat co jest na wikipedii. Mapy są dostępne np. tutaj. Weźmy jako przykład Wernersdorf, która zawiera m.in. okolice Piekła i Białej Góry.
Ściągnąłem oba wyżej
wymienione pliki 2079_Wernersdorf_1939_jpg.map
oraz 2079_Wernersdorf_1939.jpg
.
Po to aby wprowadzić współrzędne interesujących mnie punktów do GPSa
posłużyłem się programem OziExplorer (w wersji Trial).
Po załadowaniu pliku 2079_Wernersdorf_1939_jpg.map
w pasku na na górze okna ukazują
się współrzędne punktu, na którym znajduje się wskaźnik myszy. W notacji mieszanej, tj. przykładowo
53° 54,918'
oraz 18° 53,170 minut (mieszanej bo nie ma sekund tylko dziesiąte części minuty). Pewnie można to przestawić, ale
ja spisałem jak jest i zamieniłem na układ 100% dziesiętny używając skryptu:
#!/usr/bin/perl use Geo::Coordinates::DecimalDegrees; my @dms = @ARGV ; print STDERR "*** dms2decimal deg min sec ... deg/min/sec niekoniecznie sa liczbami calkowitymi....\n"; print STDERR "*** każde trzy liczby w linii poleceń są traktowane jako deg min sec *** \n"; while (@dms) { $deg = shift @dms ; $min = shift @dms ; $sec = shift @dms ; printf "%f %f %f = %.6f\n", $deg, $min, $sec, dms2decimal($deg, $min, $sec); } ## przykład: dms2decimal.pl 53 54.918 0 18 53.170 0 > 53.000000 54.918000 0.000000 = 53.915300 > 18.000000 53.170000 0.000000 = 18.886167
Czyli 53° 54,918'/18° 53,170 to 53.915300/18.886167 w notacji dziesiętnej. Nb. wszystkie on-line serwisy do
konwersji deg→dms, które oglądałem,
wymagają całkowitych wartości stopni/minut/sekund, a Geo::Coordinates::DecimalDegrees
nie. Inna sprawa
czy to co podaje jest poprawne. Na 100% pewności nie mam ale chyba tak.
Na mapie Google wygląda to tak.
Wg mapy Wernersdorf i OziExplorera w tym miejscu jest środek mostu nad Nogatem na drodze nr 605 w Białej Górze, czyli ten punkt.
Różnica dla długości i szerokości geograficznej wynosi odpowiednio 53.915300 - 53.913498 = 0,001802 oraz 18.886167 - 18.883739 = 0,002428.
W odpowiedź na pytanie czy ja coś poplątałem czy ktoś inny na razie nie będę się wgłębiał. Zamiast tego to co odczytam w OziExplorerze skoryguję (na razie) za pomocą wyżej wyznaczonych poprawek.
OziExplorer się instaluje w Fedorze, się uruchamia za pomocą wine, ale beznadziejnie kończy pracę komunikatem o brakującej pamięci...
Dawno temu zrobiłem systemik formatujący pewien plik XML do postaci pliku PDF. Ten cel jest realizowany na dwa pas. Najpierw skrypt Perla zamienia XML na plik TeXa, który to plik jest zamieniany pdfTeXem na dokument PDF. 10 lat działało i nagle ktoś dostrzegł, że zakładki (bookmarks) są nie po polsku. No nie są, bo kiedyś było to trudne do wykonania... A teraz faktycznie nie jest trudne -- wystarczy zamienić kodowanie z jednobajtowego na UTF-8.
Po tej właśnie linii zaatakowałem problem, tj. 1) zmieniłem kodowanie w generowanym pliku TeXowym z ISO8859-2 na UTF-8 oraz, w związku z tym 2) zmieniłem pdfTeXa na XeTeXa. Jak zwykle nie obyło się bez problemów:
Elementy nawigacyjne są definiowane inaczej w XeTeXu niż w pdfTeXu, więc za pierwszym razem bookmarki zniknęły w ogóle. Gdybym swoje makra pisał w LaTeXu problem by nie istniał, ale w plain TeXu zwykle trzeba wszystko samemu... Tym razem na szczęście z pomocą google znalazłem działające gotowe makra pn. navigator.
Kolory też są inaczej definiowane. Ja to zrobiłem tak:
\def\cmykRed{0 1 1 0} \def\setcolor#1{\special{color push cmyk #1}} \def\endcolor{\special{color pop}} \setcolor\cmykRed \bf Cośtam-coś-tam-na-czerwono \endcolor
Miłą cechą XeTeXa jest to, że można korzystać z fontów systemowych. Wymyśliłem zatem, że dokument będzie składany fontem TeX Gyre Heros w odmianie wąskiej. Można to zadeklarować następująco:
%% Podstawowym fontem jest TeX Gyre Heros w odmianie `Condensed' %% cf. http://www.gust.org.pl/projects/e-foundry/tex-gyre/heros \def\MainFont{TeX Gyre Heros Cn}\def\MainXFont{TeX Gyre Heros} \font\rm = "\MainFont:mapping=tex-text" \font\bf = "\MainFont/B:mapping=tex-text" \font\it = "\MainFont/I:mapping=tex-text" %% W stopniu 8pt zamiast odmiany wąskiej używamy normalnej %% \font\eightrm = "\MainXFont:mapping=tex-text" at 6.25pt \font\eightbf = "\MainXFont/B:mapping=tex-text" at 6.25pt \font\eightit = "\MainXFont/I:mapping=tex-text" at 6.25pt
Zapis mapping=tex-text
oznacza, że font ,,reaguje'' na TeXowe ligatury, m.in
--
oraz ---
zamieniając je (odpowiednio) na półpauzę i pauzę.
Zapis /B
włącza odmianę grubą a /I
kursywę...
I gdy już wszystko było prawie gotowe nieopatrzenie zajrzałem do pliku .log
a tam cała masa wpisów:
Invalid UTF-8 byte or sequence at line 22 replaced by U+FFFD.
Czyli Perl jednak sygnalizował coś brzydkiego wypisując:
Wide character in print at ....
Mój skrypt czyta plik XML, parsuje go z wykorzystaniem XML::Parser
,
który to -- jak powszechnie wiadomo -- wypluwa dokument w UTF-8.
Więc czemu w efekcie dostaję błędnie kodowany plik??
Ustalenie co
jest nie tak zajęło mi kilka godzin a sprawa sprowadzała się do dodania:
open (OUT, ">:utf8", "plik-out") # zamiast open (OUT, ">plik-out")
zamiast open (OUT, ">:utf8"...
można wpisać:
use open ":encoding(utf8)"; use open IN => ":encoding(utf8)", OUT => ":utf8";
Wpisanie zaś:
use utf8 ;
wskazuje tylko tyle, że skrypt Perla jest kodowany w UTF-8.
Stary dowcip sięgający czasów tzw. PRL, a może i dalej. W oryginale, który znam dotyczył drętwych mów działaczy PZPR...
Przykładowo w tabeli poniżej należy połączyć dowolną frazę z kolumny 1 z dowolną frazą z kolumn 2--4. W ten sposób powstaje tekst samograj. Zwykle wierszy jest 10, co daje około 6,5 tys różnych zdań. Przy 5 wierszach jest tego dużo mniej...
1 | 2 | 3 | 4 |
Kaczyński | swoim seansem nienawiści | pokazał chamstwo i bezczelność | prowadząc do wojny domowej. |
Hoffman | podczas tego haniebnego spędu | przekroczył granicę zbydlęcenia | pokazując swoje prostactwo moralne. |
Macierewicz | tam na Krakowskim Przedmieściu | szkodzi dobremu wizerunkowi Polski | podpalając Polskę i dzieląc Polaków. |
Brudziński | mówiąc te dyrdymały bzdury i wypociny | podnosi rękę na demokratyczny rząd | , powinien trafić do szpitala psychiatrycznego. |
Ziobro | oczerniając i obrzucając błotem premiera | zachowuje się jak nazista | schodząc poniżej poziomu dna wyznaczonego przez Kempę. |
Powyższy kreator przemówień aktywisty partii rządzącej znalazłem dziś w Sieci (reklamowany jako kreator przemówień marszałka S. Konstantego Myszkiewicza-Niesiołowskiego).
Gotowy plik z frazami do generatora jest tutaj. A tu skrypt perla generujący przemówienie o zadanej objętości. Przykładowo:
## 15 zdaniowy news do pokazania w `TuskVaselinaNetwork': perl cliche.pl cliche-PO.txt -zdania 15
co daje:
Brudziński swoim seansem nienawiści przekroczył granicę zbydlęcenia podpalając Polskę i dzieląc Polaków. Macierewicz mówiąc te dyrdymały bzdury i wypociny przekroczył granicę zbydlęcenia , powinien trafić do szpitala psychiatrycznego. Ziobro oczerniając i obrzucając błotem premiera pokazał chamstwo i bezczelność , powinien trafić do szpitala psychiatrycznego. Macierewicz tam na Krakowskim Przedmieściu pokazał chamstwo i bezczelność pokazując swoje prostactwo moralne. Macierewicz mówiąc te dyrdymały bzdury i wypociny podnosi rękę na demokratyczny rząd , powinien trafić do szpitala psychiatrycznego. Ziobro mówiąc te dyrdymały bzdury i wypociny podnosi rękę na demokratyczny rząd prowadząc do wojny domowej. Brudziński oczerniając i obrzucając błotem premiera zachowuje się jak nazista schodząc poniżej poziomu dna wyznaczonego przez Kempę. Kaczyński tam na Krakowskim Przedmieściu zachowuje się jak nazista schodząc poniżej poziomu dna wyznaczonego przez Kempę. Macierewicz tam na Krakowskim Przedmieściu szkodzi dobremu wizerunkowi Polski schodząc poniżej poziomu dna wyznaczonego przez Kempę. Hoffman oczerniając i obrzucając błotem premiera szkodzi dobremu wizerunkowi Polski podpalając Polskę i dzieląc Polaków. Hoffman swoim seansem nienawiści podnosi rękę na demokratyczny rząd pokazując swoje prostactwo moralne. Kaczyński swoim seansem nienawiści pokazał chamstwo i bezczelność , powinien trafić do szpitala psychiatrycznego. Ziobro swoim seansem nienawiści szkodzi dobremu wizerunkowi Polski schodząc poniżej poziomu dna wyznaczonego przez Kempę. Ziobro oczerniając i obrzucając błotem premiera przekroczył granicę zbydlęcenia pokazując swoje prostactwo moralne. Hoffman mówiąc te dyrdymały bzdury i wypociny zachowuje się jak nazista prowadząc do wojny
Dłuższej `kongresowej' wersji:
perl cliche.pl cliche-PO.txt -zdania 500
może nie będę cytował. Za mało jest wierszy, stąd tekst pełny jest podobnie brzmiących zdań. Tekst 10 wierszowy wypada lepiej -- tu jest przykład (z czasów koalicji PSL-SLD) jak ktoś nie wierzy.