Tworzenie NMT z chmury punktów LAS w SAGA GIS

By móc pracować w nich z efektami skanowania LiDAR konieczne jest stworzenie na bazie chmur punktów (zazwyczaj zapisywanych obecnie w formacie LAS) rastrowych Numerycznych Modeli Terenu zarówno w postaci modeli powierzchni czy też pokrycia terenu, jak i rzeźby. Dla uzyskania tej drugiej opcji (co przecież jest największą zaletą skanowania LiDAR), konieczne jest odfiltrowanie roślinności i zabudowy.

Programów umożliwiających takie działania jest oczywiście sporo. Wiele z nich to bardzo drogie, komercyjne oprogramowanie. Dlatego skupimy się na darmowym, otwartoźródłowym SAGA GIS.

Krok 1: importujemy chmurę punktów LAS

Modules-File-Shapes-Import-Import LAS files

saga15

Istotne jest by zaznaczyć opcję „classification”. Pozostałe opcje wedle uznania – do stworzenia modelu rzeźby terenu nie będą potrzebne.

W ten sposób oprzemy się na istniejącej klasyfikacji chmury punktów. W przypadku plików z programu ISOK nie zawsze może być ona najlepsza dla celów archeologicznych, ale z moich prywatnych doświadczeń wynika, że zazwyczaj wystarcza.

Krok 2 (opcjonalny): podgląd chmury punktów.

Modules – Shapes – Point Cloud – Visualisation – Point Cloud Viewer

SAGA posiada moduł podglądu chmury punktów. Nie daje ona tylu możliwości co specjalistyczne programy obsługujące dane LiDAR, ale wystarczy do podejrzenia tego, co nam się udało zaimportować 😉

lid1

Krok 3: Odfiltrowanie roślinności i zabudowy.

Modules – Shapes – Point Clouds – Tools – Point Clouds Reclassifier/Subset Extractor

W oknie dialogowym musimy wybrać:

– w rubryce Point Cloud wybieramy chmurę, nad którą pracujemy.

– w rubryce Attribute: classification

– w rubryce Mode of operation: Extract Subset

– w rubryce old value możemy wpisać „2”

saga10W efekcie otrzymamy chmurę punktów odwzorowujących ukształtowanie powierzchni. W przeglądarce chmury będzie wyglądała tak:lid2 Jak widać nieco więcej tutaj dziur, wynikających z odfiltrowania powierzchni.

Krok 4: griding – tworzenie rastra NMT.

Modules – Grid – Gridding – Interpolation from points – Triangulation

saga12

W oknie dialogowym:

saga13

– w rubryce Points wybieramy chmurę po odfiltrowaniu roślinności i budynków (domyślnie ma rozszerzenie nazwy subset_classification).

– w rubryce Atribute wybieramy „z” (czyli wysokość)

Po zatwierdzeniu pojawi się kolejne okno dialogowe:

saga14Tutaj w rubryce Cellsize wpisujemy „1”. Po zatwierdzeniu rozpocznie się proces triangulacji, który może trwać nawet kilka godzin. Jest to oczywiście uzależnione od ilości punktów (dla terenów zalesionych trwa to krócej, bo wyeliminowanie roślinności zmniejsza liczbę punktów) i jakości komputera. Zwykle można w tym czasie zrobić sobie kawę. Albo nawet dwie… albo obiad…

Alternatywnie można zamiast triangulacji użyć funkcji:

Modules – Shapes – Point Clouds – Conversion – Poin Cloud to Grid

Zwykle trwa to nieco szybciej niż triangulacja.

Krok 5 – zapis uzyskanego rastra

Modules – File – Grid – Export – Export ESRI Arc/Info grid (o ile chcemy mieć plik z rozszerzeniem .asc czytany przez większość programów GIS, w tym Qgis). Opcjonalnie możemy importować do geotiff. Lub do dowolnego rastrowego formatu, jaki nam do głowy przyjdzie. Akurat te dwa pierwsze są najczęściej używane…

saga11Niekiedy zamiast triangulacji warto zastosować inną metodę gridingu. W przypadku niektórych terenów zalesionych, po odfiltrowaniu roślinności, liczba punktów, które są podstawą obliczenia rastra NMT jest znacznie mniejsza od wyjściowej (n.p. najczęściej stosowanej w programie ISOK 4 pkt. na 1m kwadratowy). Po wykonaniu triangulacji efekt końcowy może być daleko niezadowalający, jak w tym przypadku:

Chelmo hillshading

Fragment NMT z zastosowaniem cieniowania (hillshading). Widać wyraźne, duże trójkąty, wynikające z triangulacji pomiędzy zbyt „luźno” rozłożonymi punktami.

W takiej sytuacji można zastosować np. metodę krigingu (ordinary kriging), która dobrze się sprawdza w podobnych sytuacjach (zob. dawny wpis o tworzeniu NMT z planów warstwicowych).

Chelmo kriging hillshadingEfekt końcowy jest wyraźnie lepszy.

W skrajnych przypadkach może okazać się, że oparcie się na istniejącej klasyfikacji chmury nie będzie wystarczająco korzystne. Konieczna będzie reklasyfikacja chmury. Ale o tym może innym razem…

SAGA GIS – łączenie kilku rastrowych NMT

Czasami potrzebujemy połączyć (zmozaikować) kilka Numerycznych Modeli Terenu i stworzyć z nich jeden większy. Połączony NMT ułatwia tworzenie wizualizacji, analiz czy nawet ujednoliconego sposobu wyświetlania (kolor, przezroczystość etc). Dla doświadczonych użytkowników programów GIS to nie jest wielki problem, dla początkujących może być. Dla nich właśnie krótki tutorial dla SAGA GIS, który ma tę zaletę, że doskonale radzi sobie z rastrami, a do tego jest nieco łatwiejszy w obsłudze niż GRASS.

1. Otwieramy pliki rastrowe: Modules – File – GDAL/OGR – GDAL: Import Raster:

zrzut4

W oknie dialogowym wybieramy raster, który chcemy otworzyć. Pamiętajmy, że w SAGA każdorazowo musimy kliknąć na ikonę otwartej warstwy w zakładce „Data”, by zaimportowana warstwa wyświetliła się w oknie mapy i znalazła swoje miejsce w drzewie warstw w zakładce „Maps”.

zrzut6Tak mniej więcej obraz uzyskamy po zaimportowaniu wszystkich arkuszy NMT.

2. Drugim krokiem jest po prostu wejście w opcję: Modules – Grid – Grid System – Mosaicking

zrzut5Pojawi się okno dialogowe, w którym klikamy na „Input Grids”

3. W drugim okienku dialogowym, które pojawi się po wybraniu opcji „Input Grids” wybieramy warstwy, które mają zostać połączone:

zrzut2Po zatwierdzeniu w oknie dialogowym mozaikowania wybieramy następujące opcje:

Interpolation: B-Spline Interpolation

Overlapping Areas: mean

zrzut14. Po zatwierdzeniu powinniśmy uzyskać jednolity, połączony raster, który oczywiście musimy wywołać kliknięciem do okna mapy:

zrzut35. Gotowy raster możemy zapisać np. w postaci pliku Arc Grid (.asc): Modules – File – Grids – Export – Export ESRI Arc/Info Grid

zrzut7W okienku dialogowym wybieramy nowo stworzoną mozaikę (zazwyczaj na końcu listy w zakładce Grid systems) oraz wybieramy nazwę i lokalizację dla gotowego pliku:

zrzut8I gotowe.

NMT w 3D w SAGA GIS

Darek Bobak zauważył przy wpisie o Rozprzy, że GIS to nie tylko ładne mapy. To prawda. Ale nie zaszkodzi by przy okazji jakąś ładną mapę spłodzić. W niniejszym wpisie kilka słów poświęcę spłodzeniu estetycznie wyglądającego Numerycznego Modelu Terenu w ujęciu 3D (czy też pseudo 3D), czyli modnego wśród archeologów rzutu izometrycznego.

W tym zbożnym celu wykorzystuje się zwykle program Surfer. Jest to rzeczywiście wspaniałe oprogramowanie, niestety ma jedną podstawową wadę – jest drogie. No i przeznaczony jest wyłącznie na system Windows, co zniechęca takich nawiedzonych linuksiarzy jak ja (no dobra – tak na prawdę to nie mam kasy). Oczywiście wielu osób nie zniechęca cena Surfera. Właściwie nie ma ona żadnego znaczenia wobec dostępności wersji Pirate Edition. Tutaj jednak w ramach propagowania legalnego i otwartego oprogramowania spróbujemy zastąpić Surfera przez SAGA GIS.

1. Budujemy Numeryczny Model Terenu. W tym celu importujemy do programu punkty pomiarowe w formacie shapefile: File – GDAL/OGR – Import vector data.

skosz150Aby teraz wyświetlić zaimportowaną warstwę musimy w lewym oknie wejść w zakładkę „Data”.

skosz151I kliknąć dwukrotnie na miniaturę zaimportowanej warstwy. Od tej pory najlepiej będzie oglądać ją w zakładce „Maps” i podzakładce „Tree”, która wyświetla drzewo warstw GIS. Natomiast w oknie podglądu mapy będzie to wyglądało tak:

skosz152Do stworzenia modelu możemy użyć opcji triangulacji (Interpolation from Points – Triangulation) albo krigingu (Spatial and geostatistics – Kriging – Ordinary kriging). Jeśli wszystko pójdzie dobrze uzyskujemy mniej więcej taki efekt (tyle, że w kolorystyce red-blue):

skosz1482. Teraz należy dobrać odpowiedni sposób prezentacji naszego modelu. W domyślnie skonfigurowanym oknie programu SAGA, w prawym okienku możemy ustawić sobie sposób prezentacji. Wybieramy więc opcję: Colors – Scaling i w ramce klikamy na Colors. Pojawi się okno dialogowe, w którym wybieramy Presets. W Presets settings wybieramy schemat kolorystyczny dla naszej mapy. Niech będzie to „Topography”.

skosz138Należy pamiętać, że każdą zmianę w oknie ustawień musimy zatwierdzić klikając Apply.

W efekcie uzyskamy taki mniej więcej obraz:

skosz1423. Teraz zbudujemy sobie warstwę cieniowaną, która nada nieco głębi naszej mapie. Wybieramy Terrain Analysis – Lighting – Analytical Hillshading. W rubryczce Exaggeneration możemy ustawić przewyższenie, np. 3.

skosz149Azymut i kąt padania światła możemy zostawić bez zmian (ale z tą opcją warto poeksperymentować).

W efekcie powinniśmy otrzymać taki obrazek:

skosz1434. Kolejnym etapem jest ustawienie przezroczystości dla warstwy z cieniowaniem. Robimy to w prawym okienku (czyli oknie ustawień). Możemy ustawić np. 40. W efekcie nasz obrazek będzie wyglądał tak:

skosz1445. Teraz możemy wykonać projekcję 3D klikając na stosowną ikonkę na pasku górnym. W oknie ustawień widoku 3D (dostępnym w każdym momencie z 3D View – Properties) możemy ustawić przewyższenie (Exaggeneration) na wartość np. 3 (co podkreśli formę terenową). Warto też ustawić nieco większą niż domyślna wartość rozdzielczości (Resolution), przynajmniej na 800 (to w dużej mierze zależeć będzie od jakości waszej karty graficznej – im wyższa wartość tym lepszej karty będziecie potrzebowali; 2000 jest już całkiem nieźle i więcej nie trzeba zazwyczaj). W oknie 3D będzie to wyglądało tak:

skosz145Jak widać, coś już widać, ale dalekie to jest od jakości, której byśmy się spodziewali. Oczywiście widoczna na obrazku pikseloza w znacznej mierze zależeć będzie od jakości waszego modelu. Jeżeli jest to duży NMT, w dodatku oparty na pomiarach LiDAR, to piksele nie powinny przeszkadzać. Jeśli jest mniejszy, będzie bolało. Na szczęście jest na to rada.

6. Żeby pozbyć się wielkich pikseli wystarczy dalej pogrzebać w opcjach wyświetlania map, czyli w naszym prawym okienku programu. W ustawieniach Display wybieramy Interpolation i ustawiamy opcję B-Spline:

skosz137Jeśli zastosujemy ten zabieg dla obu naszych warstw rastrowych (NMT i warstwy cieniowanej), to nasz widok 3D powinien wyglądać tak:

skosz146Co jest już znacznie ładniejsze od wersji zamieszczonej wyżej.

7. Teraz możemy wzbogacić naszą mapę o warstwę izolinii (czyli warstwę warstwic). Wybieramy: Modules – Shapes – Grid – Vectorization – Contour Lines from Grid. W oknie dialogowym najważniejszym parametrem będzie wybranie odpowiedniego cięcia (Equidistance). Jeżeli potrzebujemy wartości dziesiętnej to musimy pamiętać by wpisać ją z kropką, a nie przecinkiem. Cięcie co 25 cm będziemy więc wpisywać: „0.25”. W efekcie powinniśmy uzyskać wektorową mapę warstwicową:

skosz147Możemy teraz zapisać nasz widok 3D w postaci obrazka. Wybieramy 3D View – Save as Image. Domyślne rozmiary zapisywanego obrazka mogą być nieco zbyt małe, więc możemy je nieco powiększyć, by uzyskać lepszą rozdzielczość. Niestety program nie zrobi tego automatycznie, więc musimy sobie samodzielnie wpisać wartości np. dwukrotnie większe niż domyślnie zaproponowane. Efekt końcowy wygląda tak:

3d5

Całość możemy wzbogacić o legendę. W menu „Map” klikamy „Copy Legend to Clipboard”. Legendę możemy wstawić na obrazek posługując się dowolnym programem graficznym, np. Gimpem. Otwieramy obrazek i wklejamy na niego legendę pozostającą w schowku systemowym. I gotowe. Nie będzie to Surfer, ale też będzie nieźle…

Android, Locus i badania powierzchniowe

Sprawa pojawiła się już przy okazji wpisów o badaniach powierzchniowych wykonywanych w trakcie realizowania programu nieinwazyjnego na grodziskach Polski Centralnej. Przypadkowo zapomniałem naładować ręczne urządzenie GPS i z braku innych możliwości wypróbowałem w tej roli tablet Galaxy Note 10.1. Okazało się, że pomiar jest całkiem precyzyjny jak na ręczne urządzenie (w przeciwieństwie do pomiarów z telefonu). Doskonałym narzędziem okazał się program Locus. Pomyślałem sobie więc, że warto napisać kilka słów o naszych doświadczeniach z użyciem Androida do badań powierzchniowych.

Locus ma dwie wersje – darmową i płatną. Do naszych celów darmowa jest zasadniczo wystarczająca, choć ma tę denerwującą właściwość, że wyświetla reklamy, więc można zainwestować parę groszy w wersję płatną. Programik oferuje cały szereg różnych funkcji (m.in. może służyć jako nawigacja), dla celów badań powierzchniowych najważniejsze są następujące:

Screenshot_2013-10-02-22-04-121. Wyświetlanie warstw WMS. Na zrzucie powyżej widać ortofotomapę z geoportal.gov.pl służącą jako podkład dla waypointów i geotagowanych fotografii.

Dodawanie warstw WMS jest stosunkowo proste. Sprowadza się do wybrania odpowiedniej opcji ze specjalnej strony internetowej, uruchamianej z poziomu programu. W zestawie mamy najpopularniejsze polskie serwisy:

Screenshot_2013-09-28-00-17-482. Wyświetlanie geotagowanych fotografii (o czym wspomniałem już wcześniej)

Screenshot_2013-10-02-22-04-273. Szybki eksport do Google Earth:

Screenshot_2013-09-28-00-11-074. Ale najważniejsze jest oczywiście rejestrowanie waypointów i ich eksport do GPX (i kilku innych formatów, w tym CSV)- w naszych badaniach przyjęliśmy, że będziemy rejestrować położenie każdego fragmentu ceramiki indywidualnie. Procedura polegała każdorazowo na zarejestrowaniu miejsca znaleziska przez dodanie punktu i opisanie go. Zaraz później fragment był pakowany indywidualnie do torebki i opisywany na metryczce. Założyliśmy, że jeśli w bezpośredniej odległości (do ok. 1,5 m) znajdziemy kolejne fragmenty, to będziemy je pakować razem. W ten sposób pojedynczemu punktowi zapisanemu w urządzeniu mógł odpowiadać więcej niż jeden fragment ceramiki.

Screenshot_2013-09-28-00-12-48Po zakończonej prospekcji terenowej następował etap „gabinetowy”. Na początek należało umyć skorupy i określić ich chronologię, a wyniki takiej analizy zestawić w arkuszu kalkulacyjnym:

zrzut30Pliki GPX wyeksportowane z Locusa trafiały do komputera, w którym były importowane do Qgisa:

zrzut31Teraz należało je wyeksportować do shapefile i zbudować tabelę zawierającą informacje o ilości fragmentów przyporządkowanych do kolejnych horyzontów chronologicznych. Nadanie odpowiedniego stylu przez wybranie indywidualnego koloru i rozmiaru dla unikalnych wartości punktów:

wsr_punktyDysponując takimi danymi łatwo jest już później dobierać rozmaite sposoby prezentowania danych. Można np. zbudować wokół punktów bufory o promieniu uzależnionym od ilości znalezionych fragmentów ceramiki:

wsr_buforyMożna zbudować też poligony analogiczne do tych, które posłużyły nam do badań w Starych Skoszewach. Tam wyznaczyliśmy je w terenie, a sama metoda zbierania materiału w ramach kwadratów analitycznych była niezbędna wobec olbrzymiej ilości zalegających na powierzchni fragmentów naczyń ceramicznych, których nie dalibyśmy rady namierzać indywidualnie. W tym przypadku kwadraty posłużą wyłącznie jako sposób prezentacji danych. Same poligony najprościej zbudować w programie gvSIG, który ma nieco lepsze możliwości edycyjne niż Qgis:

zrzut28Później wystarczy już tylko odpowiednio zbudować tabele z danymi, by móc przedstawić kartogramy z wynikami badań:

wsr_poligonyTaką siatkę kwadratów badawczych można zbudować sobie przed rozpoczęciem badań i w ich ramach prowadzić akwizycję. Wystarczy ją wyeksportować do formatu kmz i wrzucić na nasz tablet. Locus obsługuje ten format i będzie wyświetlał nam wirtualną siatkę podczas prospekcji. Ma to sens oczywiście jedynie wtedy, gdy siatka ma oczka na tyle duże, że nie będzie nam nadmiernie przeszkadzał margines błędu pomiarów GPS.

Wygląda na to, że tablet może być całkiem przydatnym narzędziem dla badań powierzchniowych. Oczywiście dokładnie ten sam efekt można osiągnąć korzystając z ręcznych urządzeń GPS, ale doświadczenie uczy, że tablet jest znacznie łatwiejszy w użyciu, zapewniając przede wszystkim wygodniejszy opis poszczególnych punktów pomiarowych, dobór ikon dla punktów i wyświetlanie geotagowanych zdjęć. Gdyby jeszcze Qgis na Androida działał bardziej stabilnie moglibyśmy wyniki podglądać od razu, w terenie, w środowisku GIS…

Automatyzacja procesu tworzenia ortofotografii w Qgis

Dłuższy już czas temu pisałem (tutaj i tutaj) o tym jak przygotować ortofotograficzną dokumentację archeologiczną z wykorzystaniem darmowego, open-source programu Gimp. Swój tutorial opracowałem w znacznej mierze na podstawie wskazówek Sebastiana Tyszczuka. Metoda ma tę zaletę, że do jej stosowania nie jest potrzebny właściwie żaden sprzęt, poza miarką, cyfrowym aparatem fotograficznym i komputerem. Nie da się jednak ukryć, że dopasowanie siatki wirtualnej z terenową zajmuje nieco czasu.
Proces można w znacznym stopniu zautomatyzować o ile dysponuje się tachimetrem. Do jego przeprowadzenia konieczny jest Qgis z modułem georeferencyjnym. Nie jesteśmy już wówczas uzależnieni od precyzyjnego rozmierzania siatki w terenie.
Krok 1. W terenie rozkładamy punkty georeferencyjne (np. krzyzyki glazurnicze). Nie musimy trzymać się regularnej siatki – punkty rozkładamy tak, jak nam pasuje i jak pozwala na to sytuacja terenowa (np. unikając kamieni, przegłębień etc). Wykonujemy zdjęcie (możliwie prostopadle do fotografowanej powierzchni) i pomiar tachimetrem stawiając tyczkę na punktach. Dane możemy wyeksportować do pliku txt, ewentualnie zapisać na karteczce :).
Krok 2. Otwieramy zdjęcie w module georeferencji Qgis i zaznaczamy punkty kontrolne wpisując (lub wklejając z pliku txt) wartości X i Y. Należy pamiętać, że wartości te w systemach GIS są zapisywane odwrotnie niż przez tachimetry.

zrzut5Krok 3. W ustawieniach transformacji wybieramy metodę „Odwzorowane (rzutowe)” i układ współrzędnych (grunt by był taki, jaki wybraliśmy dla całego projektu).

zrzut4Krok 4. Po zatwierdzeniu operacji system powinien dokonać transformacji zdjęcia.

zrzut6Krok 5. By uzyskać obrazek prostokątny w miejsce trapezowatego należy wykorzystać wtyczkę „Kadrowanie” zawartą w menu „Raster”. W oknie dialogowym wtyczki wybieramy raster z naszym zdjęciem, określamy położenie i nazwę pliku wynikowego.
Zasięg nowego rastra wyznaczamy w oknie mapy Qgis i zatwierdzamy operację. W efekcie otrzymujemy regularny, prostokątny, zgeoreferowany raster.

zrzut8

zrzut9Krok 6. Teraz wystarczy wykorzystać opcję wydruku, by skomponować ortofotografię wyposażoną w wybraną przez nas siatkę, skalę i inne elementy.

zrzut10Metoda zadziała oczywiście wyłącznie z planami.
Gdybyśmy potrzebowali planu złożonego z kilku zdjęć to dla każdego z nich powinniśmy przeprowadzić podobną procedurę. Ich połączenia można dokonać później w Gimp (co pomoże ewentualnie wyrównać kolorystykę i światło) lub w Qgis używając wtyczki „Połącz rastry”.zrzut11

Dysponując tachimetrem i Qgisem możemy oczywiście nałożyć na ortofotomapę dalsze warstwy z informacjami: punkty niwelacyjne lub plan warstwicowy wygenerowany dla obiektu.

Z Qgisem w chmurach

Nowa interesująca usługa dostępna dla użytkowników Qgis to qgiscloud. Usługa jest w rzeczywistości chmurą, pozwalającą udostępniać w sieci efekty własnej pracy. Całość jest produktem firmy Sourcepole, specjalizującej się w otwartych rozwiązaniach GIS, pochodzącej ze Szwajcarii. Chmura dostępna jest w trzech „planach taryfowych”, oferujących różną pojemność i dostępność do różnej ilości baz danych (a więc różnej ilości projektów). Wśród nich także plan darmowy, udostępniający 50Mb, pięć baz danych PostGis i nieograniczoną ilość podpiętych zasobów publicznych.

Co umożliwia qgiscloud? Może na początek warto napisać czego nie umożliwia, a nie umożliwia eksportu rastrów. Jeśli więc wasz projekt opiera się głównie na rastrach, to qgiscloud możecie sobie odpuścić. Chmura gości wyłącznie warstwy wektorowe i warstwy sieciowe, jak usługi Google, Open Street Maps czy WMS.

Jak to wygląda w praktyce? Na początek należy założyć swoje konto w serwisie i ściągnąć sobie wtyczkę qgiscloud z managera wtyczek w Qgis. Zresztą bardzo dobry tutorial, krok po kroku, znajdziecie na stronach serwisu.

Wtyczka qgiscloud – tak wygląda…

Dla celów testowych wykonałem mały projekt oparty na kilku warstwach z badań w Żarnowie. Projekt składa się z podpiętej warstwy z geoportal.gov.pl dostępnej dzięki WMS oraz kilku warstw wektorowych: poligonów wykopów archeologicznych z 2012 i z lat 70. XX wieku, elementów topografii namierzonych w terenie za pomocą tachimetru i planu warstwicowego automatycznie wygenerowanego przez wtyczkę Contour z Qgis. Jak widać właściwie wszystko działa:

Projekt po wyeksportowaniu do chmury jest dostępny przez przeglądarkę internetową, jako sieciowa baza danych, lub jako usługa WMS.

Interfejs sieciowy składa się z przeglądarki map, drzewa warstw i legendy. Umożliwia także przeglądanie zawartości tabel (akurat w tym projekcie tabele są dość wątłe i na dodatek nie uzupełnione).

Istnieje też specjalny interfejs dla urządzeń mobilnych. Jest nieco uboższy, ale w założeniu ma umożliwiać przeglądanie warstw, przybliżanie i oddalanie mapy oraz synchronizację z usługą lokalizacji, co potencjalnie może być świetnym rozwiązaniem dla pracy w terenie. Niestety potencjalnym, bo w moim przypadku interfejs dla urządzeń mobilnych nie działał zbyt dobrze. Usługa WMS z geoportalu zdecydowanie wygląda na nieco… hmm… niepoukładaną…

Jak widać kafelki geoportalu troszkę się pomieszały. Używam standardowej przeglądarki z Galaxy S2.

Pewnym pocieszeniem jest całkiem dobra praca standardowej wersji desktopowej:

Projekt jest dostępny pod tym adresem. Oczywiście za jakiś czas może zniknąć.

Czego mi brakuje? Przede wszystkim możliwości załączenia warstw rastrowych, co umożliwiłoby eksportowanie projektów z ortofotografiami wykonywanymi w terenie podczas badań, mapami z wynikami badań geofizycznych, skanami dokumentacji rysunkowej etc. Druga rzecz to możliwość osadzania map na stronach internetowych. Trzecia – bardziej rozbudowane możliwości edycji za pomocą interfejsu sieciowego, umożliwiające pracę grupową nad projektem. Pomimo tych ułomności warto się nową usługą zainteresować i śledzić jej rozwój.

Mam nadzieję, że podpięcie pod własny projekt sieciowy warstwy WMS z geoportalu nie jest jakimś naruszeniem regulaminu usługi… Jakby co, to dajcie znać.

Qgis i „graduated scale map”

W odpowiedzi na zapotrzebowanie pewnego młodego, brodatego archeologa przedstawię prosty sposób na uzyskanie zróżnicowania wielkości punktów w Qgis, w zależności od podanej wartości. Czyli czegoś co ów archeolog nazwał „graduated scale map”. Podobno można to w ArcGis uzyskać bardzo łatwo, a w Qgis nie chciało wyjść. Zobaczmy:

1. Upewnijmy się, że mamy właściwie sformatowany plik tekstowy z danymi. Chodzi o to by wszystkie istotne kolumny zawierały dane liczbowe, bez innych znaków. To bardzo ważne, gdyż importer plików txt w Qgis automatycznie określa kolumny z liczbami jako cyfrowe (integer), zaś kolumny z innymi znakami jako zawierające tekst (string; co było przyczyną niepowodzeń owego młodego archeologa).

2. Ściągamy dane za pomocą narzędzia importu danych txt:

Ustawiamy wiersze opisujące wartość x i y.

Powinniśmy otrzymać zbiór naszych punktów:

W tym miejscu klikamy prawym klawiszem myszy w warstwę (na drzewie warstw z boku) oraz zapisujemy ją jako plik shapefile.

3. Następnie wchodzimy we właściwości warstwy i wybieramy symbolikę. Wybieramy opcję „symbol pojedynczy”. Ustawiamy rozmiar na np. 0,05 oraz w opcji „zaawansowane” wybieramy pole skali.

Efektem powinno być uzyskanie pożądanej mapy:

Nie jest to trudne, ale być może w ArcGis jest łatwiej…

Mapy warstwicowe w Qgis

Niniejszy wpis, jak wszystkie tutaj, przygotowany jest przez archeologa, nie przez geodetę i kartografa, może więc nie spełniać wszystkich wymogów, jakie przedstawiciele tych dyscyplin uznają za ważne. Na pewno może być jednak przydatny przedstawicielom mojej dyscypliny. Gdyby ktoś z czytelników miał jakieś sugestie dotyczące usprawnienia zapraszam do komentowania.

Ponieważ ostatnio pisałem o wektoryzacji archiwalnych planów warstwicowych, a wcześniej jeszcze przedstawiałem krótki tutorial bardziej szczegółowo omawiający jak to robić, dzisiaj zajmiemy się całkiem aktualnymi zestawami danych. Jak więc uzyskać plan warstwicowy w Qgis dysponując zestawem danych z tachimetru?

1. Format danych – najprościej będzie użyć danych w formacie txt. By dane były używalne należy otworzyć je w Excelu i zapisać jako plik tekstowy rozdzielany tabulatorem. Niestety – Open/Libre Office nie może się doczekać tak prostej funkcji, więc nie może nam też pomóc. Jeśli nie dysponujecie produktem Microsoftu czeka was ręczna edycja zestawu danych w edytorze tekstowym (np. w kwrite w KDE lub gedit w Gnome) – współczuję…

Grunt by dane pogrupowane były w kolumnach. Przykładowo Topcon produkuje je w układzie: nazwa – x – y – z – opis:

2. Import danych do Qgis. Do tego celu wykorzystujemy wtyczkę importu danych tekstowych. W oknie dialogowym wtyczki wybieramy położenie pliku, wybieramy rodzaj separatora (tabulator ewentualnie spacja). Warto pamiętać, że to co dla sprzętu geodezyjnego (i oprogramowania CAD) jest wartością x, dla GIS jest wartością y. I to należy uwzględnić w ustawieniach wtyczki:

3. Jeśli wszystko poszło dobrze to powinniście w oknie programu zobaczyć zestawienie punktów:

Oczywiście by zobaczyć ich wartości, nazwy, opisy etc należy wejść w okno konfiguracji etykiet (prawym przyciskiem myszy na nazwę warstwy w drzewie warstw, wybieramy właściwości – etykiety-wyświetlaj etykiety i ustawiamy odpowiednią wartość jako „Pole wyświetlające etykiety”).

By zapisać punkty jako osobny plik (np. shapefile) kliknij prawy klawiszem myszy i wybierz „Zapisz jako”.

4. Tworzenie warstwic. Do tego celu potrzebna jest wtyczka Contour. Instalujemy ją w wtyczki-pobierz więcej wtyczek. Wcześniej należy zainstalować w systemie dodatkowe biblioteki: matplotlib, numpy, Shapely (w większości dystrybucji linuksowych znajdziecie je w repozytoriach, w Windows powinny być w instalatorze OSGeo). Po zainstalowaniu wtyczki otwieramy ją i w oknie dialogowym wybieramy naszą warstwę wektorową z punktami, kolumnę zawierającą dane dotyczące wysokości oraz opcję rysowania izolinii (jako polilinie lub jako wypełnione pola), a także cięcie (pole „Number”) i rodzaj przeprowadzanej interpolacji.

Określanie cięcia jest dość nietypowe. Wartość „Number” określa bowiem nie tyle cięcie, co liczbę warstwic, które chcemy uzyskać. By otrzymać w miarę regularne cięcia należy je ręcznie poprawić w okienku obok:

5. W efekcie otrzymujemy piękną mapę warstwicową:

6. Teraz możemy uczynić ją jeszcze piękniejszą.W tym celu należy prawym przyciskiem myszy wywołać menu dialogowe warstwy i wybrać „Właściwości”. W tym miejscu ustawiamy symbologię dla warstwy. W zakładce „styl” wybieramy opcję „symbol stopniowy”, ustawiamy kolumnę zawierającą wysokość (z) i wybieramy paletę kolorów. Jeśli nie odpowiada nam żaden z domyślnych wzorców możemy ustawić własny („Nowa paleta kolorów”).

Wybieramy opcję gradient i określamy własne kolory…

Pamiętajmy o ustawieniu odpowiedniej liczby klas:

7. Po zatwierdzeniu powinniśmy uzyskać taką oto warstwicówkę (dodatkowo w zakładce „etykiety” w oknie właściwości warstwy możecie wybrać etykietę określającą wysokość):

8. Uzyskaną warstwę należy koniecznie zapisać („zapisz jako”). Zwykle później należy przejść do ręcznej edycji, by usunąć rozmaite pojawiające się przy zautomatyzowanym procesie interpolacji niezgrubności:

Można to robić ręcznie, można też wykorzystać różne opcje zawarte we wtyczce operacji na wektorach, ale to już osobna historia…

Na zakończenie wszystko możemy wyeksportować do pliku SVG i jeszcze bardziej upiększać w Inkscape – jeśli oczywiście bardzo musimy…

123D Catch i SketchUp – będą parą?

Co prawda na razie nie jest to może para najszczęśliwsza – nie ze wszystkim się dogadują, ale łączy ich pośrednictwo Meshlab. W Meshlab można bez problemów odczytać pliki .obj, które produkuje 123D Catch i skonwertować na colladę lub 3ds. A oba te formaty plików są ponoć odczytywane przez Google SketchUp. Piszę „ponoć” bo na 3ds programik u mnie się wysypuje.

W efekcie model wykonany w 123D Catch (ale też w Acr3D) można otworzyć w SketchUp. Co prawda bez tekstury, ale zawsze. Korzystając z możliwości pracy na warstwach można opatrzyć go komentarzami, a nawet zbudować na jego bazie rekonstrukcję.

 

OpenSuse 12.1 okiem mym

… czyli okiem osoby, która z ostatnim Susłem miała do czynienia gdzieś w okolicach wersji 10.1, bodajże jeszcze na KDE serii 3. Tym razem w ramach rekompensaty po utracie Mandrivy (podwójnej – oryginalna Mandriva zamieniła się w jakiś rosyjski, błyszczący wynalazek, równolegle powstała nawiązująca do „starych dobrych tradycji” Mageia, a do tego oba systemy przestały startować na MacBooku*) i próby zastąpienia czymś działającym Kubuntu**, postanowiłem sprawdzić jak wygląda nowiutki OpenSUSE 12.1.

W porównaniu do starszych wersji, które pamiętam sprzed lat docenić należy szybkość. Może nie jest to najszybszy linux świata (do niego mu daleko), ale w porównaniu z tym to Suseł reprezentował sobą kilka lat temu mamy wielki postęp. Działa na pewno żwawiej niż Kubuntu (to żadne porównanie, bo Kubuntu nie naddaje się do użytku).

1. Instalacja.

Cóż – tutaj pojawiły się pierwsze schody. Ściągnąłem wersję KDE – trochę się obawiając, bo na wizytówce napisali „Can be installed as is (no upgrade) – cóż to ma znaczyć? Nie będzie aktualizacji? Cały czas nie wiem – może chodzi o to, że nie upgraduje się do nowszej wersji, albo nie da się za jej pomocą zaktualizować starszej? Tak czy inaczej pakiety da się zaktualizować.

Wypaliłem sobie płytkę, wrzuciłem do komputera, włączyłem i… i nic. Nie ruszyła. Zrestartowałem i tym razem zaskoczyła. Przywitał mnie zielony obrazek, a później równie zielony pulpit systemu w trybie Live. Chwilę się pobawiłem i postanowiłem zainstalować go na dysku. Mimo kilku prób nie udało się. System uparcie twierdził, że nie zainstaluje się na zamontowanej partycji (!!!).

Zrestartowałem komputer i tym razem zamiast opcji „Boot from CD” wybrałem bezpośrednią instalację. Poszło. Instalacja przebiegła bez dalszych problemów.

Kicha pierwsza.

2. Konfiguracja sieci.

Po drobnych korektach wyglądu pulpitu (powiększeniu panelu dolnego, który domyślnie stworzono dla krasnoludków dysponujących wadą wzroku w postaci zaawansowanego dalekowidztwa) przystąpiłem do konfiguracji połączenia wi-fi. Suseł ma specjalny graficzny konfigurator „do wszystkiego” – w tym do sieci:

Konfigurator nazywa się YaST. Są tam specjalne odnośniki do konfiguracji połączeń sieciowych. Jednak próba uruchomienia ich wyświetla komunikat, z którego dowiadujemy się, że konfigurację sieci należy przeprowadzić z Network Management na panelu dolnym. Ughmmm… to po co konfiguratory w YaST? Nie wiem…

Na początku okazało się, że sterowniki do MacBookowego AirPorta, czyli Broadcoma nie zainstalowały się automatycznie (no wielka szkoda – w Ubuntu się zainstalowały). Trzeba było wrócić do YaST, uruchomić konfigurator repozytoriów pakietów i zainstalować pakiet broadcom-wl (przez kabel). Po tym zabiegu poszło. Sieć bezprzewodową skonfigurowałem – działała.

Ale tylko do następnego dnia. Dzisiaj rano działać przestała i nie chciała się uruchomić. Koniec – końców pokasowałem wszystkie połączenia w Network Management i zrobiłem to od nowa. Zaskoczyło i działa.

Kicha druga.

3. Polonizacja systemu.

W czasie instalacji wybrałem opcję języka polskiego, ale pozwoliła ona tylko na ustawienie zegara na czas środkowoeuropejski. Instalacja przebiegła w jęz. angielskim. Pakiety z językiem polskim nie ściągnęły się automatycznie później (jak to ma miejsce w Ubuntu). Nie odnalazłem żadnej opcji umożliwiającej automatyczną polonizację systemu. Wszystkie pakiety językowe dla środowiska KDE, LibreOffice i programów gnomowych musiałem ściągnąć sobie ręcznie.

Szczytem wszystkiego była konieczność ręcznej konfiguracji klawiatury. Okazało się, że mimo wyboru polskiej klawiatury nie można było wprowadzać polskich znaków. Okazało się, że oprócz ustawienia klawiatury w YaST trzeba:

Wejść do centrum konfiguracji KDE i wybrać „Input Devices”

W zakładce „Sprzęt” wybrałem klawiaturę Apple, a w zakładce „Układ klawiatury”klikamy „Dodaj”

Wybrałem język „Polish”, układ polski.

Po zatwierdzeniu miałem polską klawiaturę. Takiej szopki nie miałem w żadnej dotąd testowanej dystrybucji linuksa. Choć pewnie w jakiś egzotycznych wynalazkach udałoby się natrafić na podobną. Ale Suseł to distro pretendujące do miana user-friedly i linuksowego mainstreamu!

Kicha trzecia.

4. Kamera internetowa.

Mamy rok 2011 – każdy właściwie laptop na rynku ma kamerę internetową. Nie spodziewałem się, żeby w OpenSUSE mogły z tym być jakieś problemy, zwłaszcza, że chcąc doprowadzić do użytku MacBookowe iSight na Mandrivie używałem właśnie pakietów rpm od Susła. Niestety sterowniki nie zainstalowały się automatycznie. Wybrałem je w YaST i zainstalowałem. I… nie działa.

Szczerze mówiąc nie wiem na razie jak to naprawić. Jak znajdę chwilę czasu to się pobawię. Ostatnimi czasy nie korzystam często z komunikatorów, więc nieszczęścia nie ma ale kicha jest.

Kicha czwarta.

Więcej kichów nie pamiętam. Zobaczymy co jeszcze się objawi. System oferuje nowe pakiety, sporo oprogramowania pojawia się tutaj znacznie szybciej niż na Mandrivę (np programy GISowskie – Qgis czy GRASS). Wydaje się być wystarczająco responsywny. Prawdopodobnie zagości u mnie na dłużej. Trudno jednak polecić go całkowitym nowicjuszom w świecie linuksa. Może się okazać, że ilość dziwnych, nietypowych problemów i niedoróbek zwyczajnie ich zniechęci.

——

*) Prawdopodobnie wiąże się to z jakimś problemem na styku mandrivowego GRUBa, a rEFIt. W każdym razie system nie bootuje, mimo, że do tej pory, przez ponad 2 i pół roku użytkowania kolejnych wersji Mandrivy na MacBooku nie miałem z tym żadnych problemów.

**) No wybaczcie Ubu-fani, ale tego się po prostu nie da używać. Ja może jestem konserwatywny, ale wolę mieć prawdziwe konto administratora, a nie sudo. No i taki Inkscape czy Gimp pod Kubuntu mulą przeraźliwie. Po prostu nie idzie na nich nic zrobić. A ja lubię KDE i nie widzę powodu by z niego rezygnować na rzecz Gnoma czy Unity. Kubuntu, które wykorzystuje hasło Friendly Cmputing jest tak toporne, że bez topora się do niego podejść nie da.