Wydawca treści Wydawca treści

Geocaching

Marzyliście w dzieciństwie o poszukiwaniu skarbów, niczym bohaterowie powieści Roberta L. Stevensona czy filmów o dzielnym Indianie Jonesie? Jeśli dodatkowo uważacie, że poszukiwanie może być ciekawsze niż sam skarb, to geocaching jest czymś dla was.

Geocaching powstał dokładnie 4 maja 2000 r. Amerykanin Dave Ulmer ukrył tego dnia w lesie wiadro wypełnione różnymi przedmiotami. Jego współrzędne podał na grupie dyskusyjnej użytkowników nawigacji satelitarnej GPS. Ci przez kolejne dni, z wykorzystaniem swoich odbiorników GPS, poszukiwali wiadra i dzielili się swoimi wrażeniami na grupie. Wkrótce w podobny sposób różne pojemniki zaczęli ukrywać inni entuzjaści technologii satelitarnego namierzania obiektów. Niedługo też po raz pierwszy użyto nazwy geocaching.

Wszystko to było możliwe dzięki odkodowaniu, wcześniej zakłócanego przez wojskowych, sygnału wysyłanego przez satelity do odbiorników GPS. System nawigacji satelitarnej GPS został bowiem stworzony przez Departament Obrony Stanów Zjednoczonych. Nic zatem dziwnego, że początkowo miał służyć wyłącznie celom militarnym. Jednak po pomyłkowym zestrzeleniu w 1983 r. nad terytorium b. ZSRR koreańskiego samolotu pasażerskiego uznano, że GPS powinien zostać udostępniony także cywilom. Aż do 2000 r. dla zwykłych użytkowników pozostawał jednak właściwie bezużyteczny, bowiem tzw. degradacja sygnału, zapobiegliwie wprowadzona przez wojsko, ograniczała dokładność określania pozycji do 100 metrów. Po decyzji Billa Clintona o wyłączeniu zakłócania, dokładność systemu wzrosła do 4-12 metrów. Rozpoczęła się nowa era nie tylko dla turystów i podróżników, ale też w wielu innych dziedzinach życia. Szacuje się, że dziś już 6-7 proc. europejskiego PKB (produktu krajowego brutto) zależy od zastosowań nawigacji satelitarnej.

Na tropie przygody

Na czym dziś polega geocaching? Od czasów Dave'a Ulmera główna idea nie zmieniła się. To gra terenowa polegająca na poszukiwaniu, przede wszystkim z użyciem GPS, „skarbów" ukrytych przez jej innych uczestników. „Skarbami" są skrzynki - wodoszczelne pojemniki, zawierające drobne przedmioty oraz dziennik.

Jak zacząć zabawę w geocaching? Na początek musimy wybrać skrzynkę, której będziemy poszukiwać. Bazy skrzynek znajdziemy w serwisach internetowych, takich jak opencaching.pl czy geocaching.pl. Na początku warto wybrać skrzynkę tradycyjną (czyli taką, której położenie jest dokładnie określone) i o niezbyt wysokim poziomie zadań i trudności terenu (określane są one w pięciostopniowej skali). Jeśli wybierzemy skrzynkę, którą niedawno ktoś odnalazł, mamy większą szansę, że nie została jeszcze zniszczona. Warto więc sprawdzić w bazie ostatnie zapisy jej dotyczące. 

Przed wyruszeniem na wyprawę, poza zanotowaniem wszystkich szczegółów dotyczących skrzynki, dobrze jest przejrzeć mapę, żeby zapoznać się z terenem. Na wyprawę warto wziąć łopatkę i rękawice, przydać może się też zestaw naprawczy, na wypadek, gdyby skrzynka była uszkodzona (torebki foliowe, ołówek, nowy dziennik), a także jakiś przedmiot na wymianę. Najważniejszym wyposażeniem będzie oczywiście GPS. Możemy kupić oddzielne urządzenie lub - wykorzystując moduł GPS w swoim smartfonie - zainstalować aplikację, która pokazuje nasze położenie, a nierzadko jest także od razu zintegrowana z bazą ukrytych skrzynek. W wyborze odpowiedniej opcji pomogą nam forumowicze w jednym z poświęconych geocachingowi serwisów internetowych.

Las pełen niespodzianek

W internetowych bazach można znaleźć coraz więcej skrzynek ukrywanych w lasach, również przez samych leśników. Jest to bowiem jeszcze jeden sposób na przyciągnięcie turystów do lasów i pokazanie ich piękna. Chcąc znaleźć w bazie takie skrzynki, najlepiej w wyszukiwarce jako ich właściciela, podać "nadleśnictwo". Można też o nie zapytać w siedzibie nadleśnictwa. Każde takie pytanie będzie zachętą dla leśników, by przygotować na swoim terenie tego typu atrakcje dla turystów.
Kilkanaście skrzynek w najciekawszych miejscach swoich lasów ukryli np. leśnicy z Nadleśnictwa Katowice (RDLP Katowice). Opis każdej z nich przybliża przy okazji historię miejsca. Reakcje internautów są entuzjastyczne. Wysoko poprzeczkę zawiesili pracownicy Nadleśnictwa Lidzbark (RDLP Olsztyn). Ich skrytki w formie wyrzeźbionego ptaka zostały umieszczone w koronach drzew, 12-20 metrów nad ziemią. Zdobycie wszystkich, czyli przejście trasy "Tylko dla orłów", to nie lada wyzwanie.

Skrzynka z zagadką

Podczas zabawy w geocaching w lesie trzeba pamiętać o jednej, bardzo ważnej sprawie. Skrzynek nie można zakopywać! Rozkopywanie gruntu, a nawet rozgarnianie ściółki to niszczenie lasów. Jest to wykroczenie karane grzywną. Właśnie ze względu na ochronę lasów, niektóre serwisy internetowe nie pozwalają w swoich bazach na rejestrację skrzynek zakopanych w lesie.

Zgodnie ze zwyczajem, znalazca skrzynki powinien wpisać się w dzienniku, który zwykle jest w niej schowany. Można też wymienić znaleziony w skrzynce przedmiot lub dołożyć własny (zazwyczaj są to drobne zabawki, maskotki). W przypadku niektórych skrzynek celem samym w sobie jest przenoszenie ukrytych w nich przedmiotów z jednej lokalizacji do innej i śledzenie w serwisach internetowych tras, pokonywanych przez fanty. Po powrocie z każdej wyprawy powinniśmy opisać nasze poszukiwania z serwisie, w którym skrzynka była zarejestrowana, nawet jeśli nie udało jej się znaleźć.

Zabawę w poszukiwanie skrzynek można urozmaicać na różne sposoby. Żeby znaleźć skrzynkę multicache, trzeba pokonać etapy, a na każdym z nich otrzymuje się tylko część potrzebnych informacji. Z kolei skrzynka typu quiz wymaga rozwiązania zagadki: może to być  łamigłówka, puzzle do ułożenia lub obliczenia. Skrzynki oznaczane są także dodatkowymi parametrami, które określają czego możemy spodziewać się na miejscu. Z pewnością na brak wrażeń nie będziemy narzekać.


Najnowsze aktualności Najnowsze aktualności

Powrót

X Regionalna Wystawa Przyrodniczo-Łowiecka

Wystąpił błąd podczas przetwarzania szablonu.
Error on line 204, column 33 in 10097#20183917#29277751
dlFileEntryLocalService.getFileEntryByUuidAndGroupId(uuid, groupId) is undefined.
It cannot be assigned to file
1<#setting locale="${locale?string}"> 
2 
3<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.portlet.journal.service.JournalArticleLocalService") /> 
4<#assign dlFileEntryLocalService = serviceLocator.findService("com.liferay.portlet.documentlibrary.service.DLFileEntryLocalService") /> 
5 
6<#assign journalArticleId = .vars["reserved-article-id"].data?replace('.', '-') /> 
7<#assign journalArticle = journalArticleLocalService.getArticle(getterUtil.getLong(groupId), journalArticleId) /> 
8<#assign journalArticleCreateDate = journalArticle.getCreateDate() /> 
9<#assign journalArticleModifiedDate = journalArticle.getModifiedDate() /> 
10<#assign journalArticleAuthor = .vars["reserved-article-author-name"].data /> 
11<#if coauthors?? && coauthors.data?has_content> 
12    <#assign journalArticleAuthor = coauthors.data /> 
13</#if> 
14<#if title?? && title.data?has_content> 
15    <#assign journalArticleTitle = title.data /> 
16<#else> 
17    <#assign journalArticleTitle = .vars["reserved-article-title"].data /> 
18</#if> 
19<#assign journalArticleUrlTitle = journalArticle.getUrlTitle() /> 
20 
21<#assign serviceContext = staticUtil["com.liferay.portal.service.ServiceContextThreadLocal"].getServiceContext() /> 
22<#assign themeDisplay = serviceContext.getThemeDisplay() /> 
23<#assign portletId = themeDisplay.getPortletDisplay().getId() /> 
24 
25<div id="article-${journalArticleId}" class="nfh-cp-article"> 
26 
27    <h1 class="title">${journalArticleTitle}</h1> 
28 
29    <#-- MEDIA SPOŁECZNOŚCIOWE --> 
30    <#assign printGroupId = "" /> 
31    <#if journalArticle.groupId != themeDisplay.scopeGroupId> 
32        <#assign printGroupId = themeDisplay.scopeGroupId /> 
33    </#if> 
34    <div class="social-media"> 
35        <div class="addthis_toolbox addthis_default_style"> 
36            <input type="image" alt="${languageUtil.get(locale, "print")}" src="${themeDisplay.pathThemeImages}/nfh-cp/icon-print-20x17.png"                 onclick="Nfhcp.AssetPublisherPortlet.printFullContent('${portletId}', '${journalArticleId}', '${printGroupId}', '${journalArticleUrlTitle}');" class="print"/> 
37        </div> 
38    </div> 
39 
40    <#-- ZDJĘCIE GÓRNE --> 
41    <#assign showImageGallery = false /> 
42    <#if mainphoto?? && mainphoto.data?has_content> 
43        <#assign showImageGallery = true /> 
44    </#if> 
45    <#if showImageGallery> 
46        <div id="gallery-${journalArticleId}" class="event"> 
47            <#assign eventDateFromAsString1 = "" /> 
48            <#assign eventDateFromAsString2 = "" /> 
49            <#assign eventDateToAsString2 = "" /> 
50 
51            <#if event?? && event.datefrom?? && event.datefrom.data?has_content> 
52                <#if event.datefrom.data?matches("^\\d+$")> 
53                    <#assign eventDateFrom = event.datefrom.data?number?number_to_datetime /> 
54                <#else> 
55                    <#assign eventDateFrom = event.datefrom.data?datetime("yyyy-MM-dd HH:mm") /> 
56                </#if> 
57 
58                <#assign eventDateFromAsString1 = eventDateFrom?string("d '<span>'MMMM'</span>'") /> 
59                <#assign eventDateFromAsString2 = eventDateFrom?string("d MMMM 'godz.' HH:mm") /> 
60 
61                <#assign eventDateFromAsString1 = eventDateFromAsString1?replace("styczeń", "stycznia") /> 
62                <#assign eventDateFromAsString1 = eventDateFromAsString1?replace("luty", "lutego") /> 
63                <#assign eventDateFromAsString1 = eventDateFromAsString1?replace("marzec", "marca") /> 
64                <#assign eventDateFromAsString1 = eventDateFromAsString1?replace("kwiecień", "kwietnia") /> 
65                <#assign eventDateFromAsString1 = eventDateFromAsString1?replace("maj$", "maja") /> 
66                <#assign eventDateFromAsString1 = eventDateFromAsString1?replace("czerwiec", "czerwca") /> 
67                <#assign eventDateFromAsString1 = eventDateFromAsString1?replace("lipiec", "lipca") /> 
68                <#assign eventDateFromAsString1 = eventDateFromAsString1?replace("sierpień", "sierpnia") /> 
69                <#assign eventDateFromAsString1 = eventDateFromAsString1?replace("wrzesień", "września") /> 
70                <#assign eventDateFromAsString1 = eventDateFromAsString1?replace("październik$", "października") /> 
71                <#assign eventDateFromAsString1 = eventDateFromAsString1?replace("listopad$", "listopada") /> 
72                <#assign eventDateFromAsString1 = eventDateFromAsString1?replace("grudzień", "grudnia") /> 
73 
74                <#assign eventDateFromAsString2 = eventDateFromAsString2?replace("styczeń", "stycznia") /> 
75                <#assign eventDateFromAsString2 = eventDateFromAsString2?replace("luty", "lutego") /> 
76                <#assign eventDateFromAsString2 = eventDateFromAsString2?replace("marzec", "marca") /> 
77                <#assign eventDateFromAsString2 = eventDateFromAsString2?replace("kwiecień", "kwietnia") /> 
78                <#assign eventDateFromAsString2 = eventDateFromAsString2?replace("maj$", "maja") /> 
79                <#assign eventDateFromAsString2 = eventDateFromAsString2?replace("czerwiec", "czerwca") /> 
80                <#assign eventDateFromAsString2 = eventDateFromAsString2?replace("lipiec", "lipca") /> 
81                <#assign eventDateFromAsString2 = eventDateFromAsString2?replace("sierpień", "sierpnia") /> 
82                <#assign eventDateFromAsString2 = eventDateFromAsString2?replace("wrzesień", "września") /> 
83                <#assign eventDateFromAsString2 = eventDateFromAsString2?replace("październik$", "października") /> 
84                <#assign eventDateFromAsString2 = eventDateFromAsString2?replace("listopad$", "listopada") /> 
85                <#assign eventDateFromAsString2 = eventDateFromAsString2?replace("grudzień", "grudnia") /> 
86            </#if> 
87            <#if event?? && event.dateto?? && event.dateto.data?has_content> 
88                <#if event.dateto.data?matches("^\\d+$")> 
89                    <#assign eventDateTo = event.dateto.data?number?number_to_datetime /> 
90                <#else> 
91                    <#assign eventDateTo = event.dateto.data?datetime("yyyy-MM-dd HH:mm") /> 
92                </#if> 
93 
94                <#assign eventDateToAsString2 = eventDateTo?string("d MMMM 'godz.' HH:mm") /> 
95 
96                <#assign eventDateToAsString2 = eventDateToAsString2?replace("styczeń", "stycznia") /> 
97                <#assign eventDateToAsString2 = eventDateToAsString2?replace("luty", "lutego") /> 
98                <#assign eventDateToAsString2 = eventDateToAsString2?replace("marzec", "marca") /> 
99                <#assign eventDateToAsString2 = eventDateToAsString2?replace("kwiecień", "kwietnia") /> 
100                <#assign eventDateToAsString2 = eventDateToAsString2?replace("maj$", "maja") /> 
101                <#assign eventDateToAsString2 = eventDateToAsString2?replace("czerwiec", "czerwca") /> 
102                <#assign eventDateToAsString2 = eventDateToAsString2?replace("lipiec", "lipca") /> 
103                <#assign eventDateToAsString2 = eventDateToAsString2?replace("sierpień", "sierpnia") /> 
104                <#assign eventDateToAsString2 = eventDateToAsString2?replace("wrzesień", "września") /> 
105                <#assign eventDateToAsString2 = eventDateToAsString2?replace("październik$", "października") /> 
106                <#assign eventDateToAsString2 = eventDateToAsString2?replace("listopad$", "listopada") /> 
107                <#assign eventDateToAsString2 = eventDateToAsString2?replace("grudzień", "grudnia") /> 
108            </#if> 
109 
110            <div class="image-wrapper"> 
111                <div class="event-date">${eventDateFromAsString1}</div> 
112                <img src="${mainphoto.data}&height=305"> 
113            </div> 
114 
115            <div class="event-data"> 
116                <div class="header">${languageUtil.get(locale, "event-information")}</div> 
117 
118                <div class="subheader">${languageUtil.get(locale, "event-date")}</div> 
119                <div class="date table"> 
120                    <div class="row"> 
121                        <div class="from-date cell"><img src="${themeDisplay.pathThemeImages}/nfh-cp/event-from-date-marker-10x9.png"/></div> 
122                        <div class="from-date cell"><span>${eventDateFromAsString2}</span></div> 
123                    </div> 
124                    <div class="row"> 
125                        <div class="to-date cell"><img src="${themeDisplay.pathThemeImages}/nfh-cp/event-to-date-marker-10x9.png"/></div> 
126                        <div class="to-date cell"><span>${eventDateToAsString2}</span></div> 
127                    </div> 
128                </div> 
129                 
130                <div class="subheader">${languageUtil.get(locale, "location")}</div> 
131                <div class="location table"> 
132                    <#if event?? && event.place?? && event.place.data?has_content> 
133                        <div class="row"> 
134                            <div class="cell"><span>${event.place.data}</span></div> 
135                        </div> 
136                    </#if> 
137                    <#if (event?? && event.person?? && event.person.data?has_content) || (event?? && event.email?? && event.email.data?has_content)> 
138                        <div class="row"> 
139                            <div class="cell"><a href="mailto:${event.email.data}">${event.person.data}</a></div> 
140                        </div> 
141                    <#elseif event?? && event.email?? && event.email.data?has_content> 
142                        <div class="row"> 
143                            <div class="cell"><span>${event.email.data}</span></div> 
144                        </div> 
145                    </#if> 
146                    <#if event?? && event.phone?? && event.phone.data?has_content> 
147                        <div class="row"> 
148                            <div class="cell"><span>${languageUtil.get(locale, "phone-abbreviation")}: ${event.phone.data}</span></div> 
149                        </div> 
150                    </#if> 
151                </div> 
152            </div> 
153        </div> 
154    </#if> 
155 
156    <#-- ZAWARTOŚĆ ARTYKUŁU --> 
157    <#if abstract?? && abstract.data?has_content> 
158        <p class="description">${abstract.data}</p> 
159    <#else> 
160        <p class="description">${.vars["reserved-article-description"].data}</p> 
161    </#if> 
162 
163    <div class="content">${content.data}</div> 
164 
165    <#-- ZAŁĄCZNIKI --> 
166    <#assign hasAttachments = false /> 
167    <#if file?? && file.getSiblings()?size gt 0> 
168        <#list file.getSiblings() as fileItem> 
169            <#if fileItem.filedescription?? && fileItem.filedescription.data?has_content> 
170                <#assign fileItemName = fileItem.filedescription.data /> 
171            <#elseif fileItem.filetitle?? && fileItem.filetitle.data?has_content> 
172                <#assign fileItemName = fileItem.filetitle.data /> 
173            <#else> 
174                <#assign fileItemName = fileItem.data /> 
175            </#if> 
176            <#if fileItemName?? && fileItemName?has_content> 
177                <#assign hasAttachments = true /> 
178            </#if> 
179        </#list> 
180    </#if> 
181    <#if hasAttachments> 
182        <div class="attachments"> 
183            <h2>${languageUtil.get(locale, "resources-to-get")}</h2> 
184            <ul class="attachment-list"> 
185                <#list file.getSiblings() as fileItem> 
186                    <#if fileItem.filedescription?? && fileItem.filedescription.data?has_content> 
187                        <#assign fileItemName = fileItem.filedescription.data /> 
188                    <#elseif fileItem.filetitle?? && fileItem.filetitle.data?has_content> 
189                        <#assign fileItemName = fileItem.filetitle.data /> 
190                    <#else> 
191                        <#assign fileItemName = fileItem.data /> 
192                    </#if> 
193 
194                    <#if fileItemName?? && fileItemName?has_content> 
195                        <#assign url = fileItem.data /> 
196                        <#if url?contains("/documents/")> 
197                            <#assign urlParts = stringUtil.split(url, "?") /> 
198                            <#assign urlParts = stringUtil.split(urlParts[0]?string, "/") /> 
199                            <#assign groupId = getterUtil.getLong(urlParts[2]) /> 
200                            <#assign folderId = getterUtil.getLong(urlParts[3]) /> 
201                            <#assign title = httpUtil.decodeURL(urlParts[4]?string, true) /> 
202                            <#if urlParts?size gt 5> 
203                                <#assign uuid = urlParts[5]?string /> 
204                                <#assign file = dlFileEntryLocalService.getFileEntryByUuidAndGroupId(uuid, groupId) /> 
205                            <#else> 
206                                <#assign file = dlFileEntryLocalService.getFileEntry(groupId, folderId, title) /> 
207                            </#if> 
208                            <#assign fileIcon = file.icon + ".png" /> 
209                        </#if> 
210                        <#if !fileIcon?? || !fileIcon?has_content> 
211                            <#assign fileItemExt = fileItem.data /> 
212                            <#assign indexOfDot = fileItemExt?last_index_of(".") + 1 /> 
213                            <#assign indexOfSlash = fileItemExt?last_index_of("/") /> 
214                            <#if indexOfSlash gt indexOfDot> 
215                                <#assign fileItemExt = fileItemExt?substring(0, indexOfSlash) /> 
216                            </#if> 
217                            <#assign fileIcon = fileItemExt?substring(indexOfDot) + ".png" /> 
218                        </#if> 
219                        <#if fileItem.wcagdescription?? && fileItem.wcagdescription.data?has_content> 
220                            <#assign fileItemWCAGDesc = fileItem.wcagdescription.data /> 
221                        <#else> 
222                            <#assign fileItemWCAGDesc = "" /> 
223                        </#if> 
224                        <#if file?? > 
225                            <#assign 
226                            fExtension = file.extension 
227                            textFormatter = staticUtil["com.liferay.portal.kernel.util.TextFormatter"] 
228                            sizeFormatted = textFormatter.formatStorageSize(file.size, locale) 
229                            /> 
230                        </#if> 
231 
232                        <li> 
233                            <a href="${fileItem.data}" target="_blank" <#if fileItemWCAGDesc?? && fileItemWCAGDesc?has_content>title="${htmlUtil.escapeAttribute(fileItemWCAGDesc)}"</#if>><img src="${themeDisplay.pathThemeImages}/file_system/small/${fileIcon}"></a> 
234                            <a href="${fileItem.data}" target="_blank" <#if fileItemWCAGDesc?? && fileItemWCAGDesc?has_content>title="${htmlUtil.escapeAttribute(fileItemWCAGDesc)}"</#if>>${fileItemName} (${stringUtil.upperCase(fExtension)}, ${sizeFormatted})</a> 
235                        </li> 
236                    </#if> 
237                </#list> 
238            </ul> 
239        </div> 
240    </#if> 
241</div>