Długie odświeżanie map WMS - Wersja do druku +- Forum QGIS (http://forum.quantum-gis.pl) +-- Dział: Web GIS (http://forum.quantum-gis.pl/forum-3.html) +--- Dział: MapServer (http://forum.quantum-gis.pl/forum-6.html) +--- Wątek: Długie odświeżanie map WMS (/thread-388.html)
1
2
|
Długie odświżanie map WMS - sebaq - 28-02-2011 Witam. Chciałbym się poradzić co mogę zrobić z długim odświeżaniem map (rastrów) umieszczonych na wewnętrznym serwerze WMS (MapServer-Apache). Problem polega na tym, iż podczas przesuwania mapy, długo (od 3 do 6 sekund) trwa odświeżenie całej treści. Bez warstw WMS same wektory z bazy Postgis śmigają dość szybko. Dodam, że mapy WMS pojawiają się dopiero od skali 1:2000. Serwer na którym pracuje zarówno baza Postgresql jak i Map Server to Windows Server Standard SP2, Intel Xeon E3110 (2*3.0GHz) i 4GB RAM. Wydawałoby się, że powinien być wystarczający aczkolwiek przy przewijaniu mapy zarówno stacja kliencka jak i serwer są bardzo obciążone (głownie procesor, ramu jest dość). Rastrów mam około 800. Są one na różnych warstwach WMS (mapy z różnych układów współrzędnych). Stawiając MapSerwer najpierw stworzyłem piramidy dla wszystkich rastrów, następnie stworzyłem z nich plik VRT zapisany w oddzielnych projektach QGIS (dla poszczególnych układów). I tak mam między innymi projekt 42.qgs w którym znajduje się tylko plik 42.vrt złożony z rastrów w układzie 1942. Taki projekt został wyeksportowany do MapServera w formacie JPG a adresy WMS dodane do głównego projektu mapy jako warstwa WMS. Tak samo sprawa wygląda z pozostałymi układami np 1965. Nie tworzyłem piramidy dla plików VRT gdyż są one zrobione osobno dla każdego pliku TIFF, z których składa się VRT. Jeżeli lepiej zrobić piramidę dla pliku VRT, zamiast dla pojedynczych rastrów, to dajcie znać aczkolwiek w moim przypadku plik OVR będzie gigantyczny! Może nie należy tworzyć pliku VRT tylko wyeksportować projekt z wszystkimi mapami (dla danego układu)? Jeżeli są jeszcze jakieś inne metody przyśpieszenia wyświetlania rastrów na serwerze WMS to proszę o poradę. Pozdrawiam. PS1. Dołączam zrzut ekranu na którym widać główny projekt. PS2. Stacje klienckie pracują na Win XP/Vista/7 głównie z Qgis 1.5 i 1.6. RE: Długie odświżanie map WMS - Rayo - 28-02-2011 Trochę nie na temat WMSa, ale może Ci się przyda. Ja podobny projekt zrealizowałem za pomocą serwera plików. Wszystkie rastry (jakieś 800-900 plików) umieściłem w jednym folderze na serwerze. Każdy pojedynczy raster ma wyliczone kilka piramidek (chyba cztery pierwsze), bo akurat takie pliki dostałem z geodezji. Następnie zrobiłem z tego VRT i wyliczyłem piramidy dla całości. Mniej więcej oszacowałem które są potrzebne i nie pokrywają się z tymi z pojedynczych plików. Plik VRT ustawiam jako warstwę w projekcie QGISa i wszystko działa przyzwoicie. Piramidy dla VRT są w tym przypadku konieczne, bo inaczej QGIS, tworząc np. miniaturkę warstwy, musi przeczytać dane z kilkuset plików i połączyć je w całość. A wtedy otwarcie takiej warstwy trwa wieki... Testy WMSa też mamy w planie, ale jeszcze nie wiem kiedy. Po ich przeprowadzeniu będę wiedział co jest szybsze. RE: Długie odświżanie map WMS - sebaq - 01-03-2011 Pamiętam... już kiedyś o tym rozmawialiśmy. Nie próbowałem z samymi plikami VRT ale jeżeli chodzi o WMS to nie widzę zbytniej różnicy czy mam piramidę dla pliku VRT czy osobne piramidy dla wszystkich plików z których składa się VRT. Działa na podobnym akceptowalnym poziomie, ale myślałem, że może coś jeszcze przyśpieszę. Jeżeli ktoś gdzieś widzi jakąś szansę to proszę o info. Pozdrawiam RE: Długie odświżanie map WMS - borys - 07-03-2011 Jak chcesz naprawdę szybko, to tylko kafle... RE: Długie odświżanie map WMS - sebaq - 08-03-2011 Cześć Borys. Kafle ale jak? Jakim narzędziem je stworzyć i czy dla rastrów TIFF czy całych VRT? A może dopiero na serwerze WMS? Jeżeli mógłbyś przybliżyć temat to będę wdzięczny? Pozdrawiam. RE: Długie odświżanie map WMS - borys - 09-03-2011 No chyba dla całości. Metody są dwie: 1) Stawiasz wmsa i między niego a klienta wstawiasz TileCache (chyba, że WMS ma już wbudowany cache, jak GeoWebCache w Geoserverze). Cache będzie się napełniał w miarę korzystania, ale możesz też puścić skrypt, który pobierze z WMSa wszystkie możliwe kafle i wtedy WMSa można już wyrzucić. TileCache będzie odpowiadał zarówno na żądania WMS/C, jak i TMS. http://tilecache.org/ 2) Są skrypty, które ze źródłowego rastra (choćby tego vrt) zbudują strukturę katalogów z kaflami. Na przykład gdal2tiles, ktoś tu kiedyś (Odoakr?) chyba próbował jakichś innych. Potem katalog z tymi plikami po prostu serwujesz Apaczem i podpinasz się do niego klientem TMS. Metoda 2 jest dużo prostsza, ale wymusza protokół TMS, a Quantum póki co lepiej obsługuje WMS/C. Podpinasz jako WMS, szereg skal automatycznie blokuje się do istniejących kafli i gitara gra. Natomiast TMS możesz podpiąć na dwa sposoby, przy czym żaden nie jest idealny: a) jako normalną warstwę rastrową GDAL (http://terraobserver.blogspot.com/2011/01/warstwy-tms-w-qgis.html). Sęk w tym, że szereg skal nie jest zablokowany i trzeba się gimnastykować, żeby trafiać w skale kafli, inaczej raster jest po prostu brzydko reskalowany. Druga sprawa to, o ile pamiętam, kiepska jakość wydruku (zdaje się, że do wydruku idą te same kafle, co na ekran i do tego trafiać w skalę można już tylko z kalkulatorem w ręku ) UWAGA: w 1.7 wczoraj wieczorem popsuliśmy obsługę TMSów, wprowadzając reprojekcję rastrów w locie i do odwołania nie da się otwierać TMSów w ten sposób. b) przez wtyczkę OpenLayers (modyfikując jej kod pod Twoją warstwę). Szereg skal trzyma, ale ta wtyczka jest dość desperackim obejściem problemów z TMSem przez wprowadzenie do Quantuma przeglądarki webowej i jest daleka od ideału. ________________________________________ EDIT: Oczywiście popsuta obsługa TMSów została już dawno naprawiona RE: Długie odświżanie map WMS - sebaq - 15-03-2011 Wow... no łatwo nie będzie. Dzięki Borys. Jak znajdę trochę czasu i dojdę do jakiś wyników to dam znać. Pozdrawiam. RE: Długie odświżanie map WMS - basiuunia - 19-07-2011 Trochę odświeżę temat ze względu na podobny problem. Stawiam Mapservera, na którym mają być wyświetlane rastry w większej ilości. Tak aby ktoś w przeglądarce mógł sprawnie sobie podglądnąć interesujący go obszar, a potem wydrukować go, w dobrej jakości. Analizując wypowiedź Borysa doszłam do wniosku, że chyba najlepszym rozwiązaniem byłby TileCache. I teraz moje pytania: -czy on serwuje już gotowe kafelki dla danej skali, wybranej przez użytkownika? czy trzeba i tak stworzyć osobno kafelki dla każdego rastra? - czym się różni TMS a TileCache - jak połączyć TileCache z Mapserverem? Dodać jakiś plik, część składni w pliku map lub w innym - A może w mapserverze jest jakiś inny sposób na sprawne wyświetlanie dużej ilości rastrów bez tracenia na jakości? I jeszcze jedno. Mapserver ma ograniczoną ilość klas, bodajże coś ok.200. Więc jak zapodać mu większą ilość rastrów np. 500, gdy (wg mojej wiedzy) w jednej klasie może być jeden raster? RE: Długie odświżanie map WMS - vansen - 25-07-2011 Poruszyłaś temat, który całkiem niedługo sam będę przerabiał i jestem bardzo ciekawy odpowiedzi kogoś mądrzejszego . Ze swojej strony mogę tylko powiedzieć, że ograniczenia mapserver'a dotyczą ilości warstw (nie klas) i jest to właśnie ok 200, a co do dużej liczby rastrów to najprostszym sposobem jest stworzenie wirtualnego rastra dla Twoich plików (tzw. plik VRT), który będzie w stanie wyświetlić dużą liczbę rastrów razem na jednej warstwie mapserver'a. Musisz tylko pamiętać, że rastry muszę mieć taką samą kolorystykę (PCT czyli skala szarości, albo RGB) i taki sam układ współrzędnych - to wynika z moich zabaw z rastrami, ale wiem, że są jeszcze inne parametry mające znaczenie - tylko nie doszedłem jeszcze jakie... . RE: Długie odświżanie map WMS - basiuunia - 25-07-2011 Dzięki za małą podpowiedź I oczywiście warstw - tak jakoś z rozbiegu wyszło. Myślałam już nad tym i też doszłam do wniosku, że będzie potrzebny VRT. Ale jeszcze nigdy nie tworzyłam, więc zobaczymy co tego wszystkiego wyjdzie |