Zastanawiam się nad testowaniem generowania kafelków warstwy światowej do tworzenia map internetowych.
W tym kontekście chcę wiedzieć, jak mogę obliczyć liczbę kafelków (256x256 dla tilecache, jeśli pamiętam) będę potrzebował n poziomów we współrzędnych WGS84.
Być może użyję rozwiązania złożonego z wstępnie wygenerowanymi kafelkami i generowania w locie, ale na końcu muszę wiedzieć, ile miejsca na dysku jest generowane, czy każdy kafelek jest generowany i ile plików będzie reprezentować.
Są dwa cele, czas potrzebny i potrzebne miejsce na dysku.
Wszelkie informacje są mile widziane
Edytować:
Znalazłem ten skrypt do obliczania liczby kafelków do wygenerowania w zależności od poziomów powiększenia i zasięgu danych. Zobacz tę treść https://gist.github.com/1675606
źródło
Odpowiedzi:
Oto arkusz Excel w Dokumentach Google od zespołu GeoSolutions (http://geo-solutions.blogspot.com/2010/12/estimating-time-and-space-required-to.html)
https://spreadsheets4.google.com/ccc?key=tyCIm7rz8753DUGC9FyOXaw#gid=0
źródło
Zrobiłem ściągawki, która zawiera całkowitą liczbę płytek dla danego poziomu powiększenia.
Ma dwie stoły. Jeden pokazuje liczbę poziomów powiększenia potrzebnych do pokazania rzeczy w określonej skali, zaczynając od kafelka przedstawiającego ludzi.
Drugi pokazuje liczbę poziomów powiększenia potrzebnych, jeśli zaczynasz od mapy świata, i poziomy szczegółowości progresywnej:
źródło
To bardzo stare pytanie, ale istnieją (przynajmniej) dwa ważne zastrzeżenia, w zależności od wykonywanego zadania.
(2) jest już prawie wyjaśnione, ale jako przykład mam piramidę kafelkową, w której całkowity rozmiar pliku to 168 MB, ale jego rozmiar na dysku to ponad 600 MB. To sprawia, że znacznie ważniejsze jest poprawne (1).
Odnośnie do (1): zastanów się, czy Twoja praca nad plikiem światowym obejmuje tylko granice państw.
Dowolny kafelek, który nie jest granicą, może być podawany z jednym z dwóch kafelków „alt” - kafelkiem „morskim” (niebieskim) w dowolnym miejscu poza krajem lub kafelkiem „blokowym” (wypełnienie) dla kafelków, które są całkowicie w obrębie granica państwowa. Renderowane muszą być tylko kafelki zawierające segment granicy - pozostałe można „domyślnie” odrzucić.
Dlaczego to? Ponieważ wszystkie płytki blokowe określonego typu (wpisz (morze, ląd) lub wpisz (morze, kraj a, kraj b itp.)) Będą identyczne.
Płytka „blokowa” może mieć jeden kolor dla każdego kraju, jeden kolor dla całego świata lub pustą płytkę (jeśli nakładasz kontury kraju na tle).
Płytki „Block” należy renderować tylko raz (np. 1 płytka 256 x 256, całkowicie wypełniona pożądanym kolorem).
Podczas tworzenia kafelków możesz przetestować
(a) jeżeli istnieje jego „element nadrzędny” - kafelek o jednym powiększeniu mniejszym - i
(b) jeżeli jest to płytka „blokowa” (tzn. jest całkowicie wypełniona jednym kolorem).
W przypadku (a) płytki nie trzeba renderować; jeśli rodzic nie istnieje, to dlatego, że rodzic był całkowicie kafelkiem bloku i został usunięty.
W przypadku (b) (jeśli element nadrzędny istnieje, więc płytka wymaga przetestowania), jeśli jest to płytka blokowa, można ją bezpiecznie usunąć z piramidy dachówkowej. (Test kafelkowania bloków jest po prostu oparty na rozmiarze pliku. Kafelek 256x256 w całości jednego koloru ma bardzo dokładny rozmiar, a prawdopodobieństwo, że kafelek „właściwej zawartości” ma ten sam rozmiar, wynosi zero).
Usunięcie tych kafelków podczas procesu tworzenia minimalizuje czas w pętli renderowania kafelków, ale oszczędza ogromne ilości miejsca na dysku. Alternatywą jest wyrenderowanie wszystkiego, a następnie rekurencyjne przeszukiwanie piramidy w poszukiwaniu bloków i usuwanie ich: trwa to dłużej.
Po zbudowaniu piramidy procedura wywołania kafelka może zostać domyślnie ustawiona na kafelek „bloku”, jeśli przejdzie on do poszukiwania kafelków / z / x / y i otrzyma 404.
Aby zobaczyć, dlaczego tak jest, rozważ renderowanie powiększenia 256x256 = 1, gdy górna ćwiartka jest całkowicie pusta. Wiesz z pewnością, że 4 płytki przy powiększeniu = 2 pokrywające ten sam obszar również będą puste. Podobnie 16 płytek przy powiększeniu = 3 i tak dalej.
Tak więc w dowolnym momencie podczas procesu kafelkowania, w którym kafelek ma kolor bloku (lub jest pusty), wszystkie czasy przy wyższych poziomach powiększenia można zignorować.
Oszczędza to dużo miejsca i dużo czasu w procesie układania płytek.
Zastrzeżenie do tych zastrzeżeń: bardziej złożone zadanie układania płytek przełącza się na różne warstwy przy różnych poziomach powiększenia. W takim przypadku należy zadbać o to, aby test „macierzysty” nie był przeprowadzany, gdy poziom powiększenia to taki, w którym nowa warstwa znajduje się w zestawie renderowania.
źródło