Piksele kontra współrzędne
Kiedy myślę o mapach rastrowych, moją pierwszą myślą są zdjęcia satelitarne. Prawie każdy piksel na szczegółowym zdjęciu satelitarnym obszaru miejskiego może zawierać unikalne informacje. Pojedynczy kafelek na mapie internetowej (zazwyczaj wariant Mercatora luźno określany jako „ Spherical Mercator ” lub „ Web Mercator ” i obsługiwany przez Google , Bing , Yahoo, OSM i ESRI) ma zazwyczaj 256 x 256 = 65 536 pikseli, a każdy poziom powiększenia ma (2 ^ powiększenie * 2 ^ powiększenie) kafelków. Kiedy myślę o Vector, myślę, że wielokąty i linie. Na przykład plik kształtu z wyszczególnieniem granic stref w całym mieście (potencjalnie milionach płytek rastrowych) może mieć tylko 65 000 kształtów wektorowych.
Dokładne skalowanie
Wygląda na to, że Ty (i prawdopodobnie większość czytelników) znasz już najbardziej oczywistą różnicę między stałymi pikselami rastrowymi a wektorem (mapy współrzędnych). Rysunki wektorowe (i mapy) mogą być skalowane z wyższym stopniem wierności niż piksele, ponieważ dane wektorowe zawierają wzory współrzędnych (punkty, wielokąty, linie itp.), Które można renderować względem siebie w różnych rozdzielczościach przy użyciu prostych wzorów, podczas gdy zmiana rozmiaru pikseli zwykle używa algorytm wygładzania , w wyniku którego powstają artefakty obrazu.
Kompresja obrazu a kompresja struktury
W praktyce większość obrazów nie posiadających 100% unikalnych pikseli może zostać skompresowana do mniejszych pakietów danych, a wiele plików wektorowych zawiera nadmierne szczegóły, które nie są potrzebne przy wielu poziomach powiększenia przy niskich szczegółach. Kompresja obrazu jest dobrze znanym i bardzo wydajnym procesem i prawie każda biblioteka kodująca ma wbudowane klasy do wykonywania tej pracy. Kompresja współrzędnych wektorowych lub „uproszczenie geometrii” jest nieco mniej powszechne (ponieważ ogólnie GIS jest nieco mniej powszechny niż ogólna manipulacja obrazem). Z mojego doświadczenia wynika, że poświęcisz prawie 0 czasu na myślenie o kompresji obrazu (po prostu włącz lub wyłącz) i znacznie więcej czasu na myślenie o kompresji przestrzennej. Sprawdź przykłady algorytmu Douglas Peucker lub po prostu pobaw się z QGIS i niektóre pliki brzegowe Spisu.
Renderowanie po stronie klienta a serwera
Ostatecznie wszystko oglądane na komputerze jest renderowane w piksele na ekranie w określonej rozdzielczości (tj. Na poziomie powiększenia). Często (szczególnie w Internecie) wyzwaniem jest uzyskanie tych pikseli przed użytkownikami tak skutecznie, jak to możliwe. Do grupy plików shape US Census Tract & blokowesą szczególnie interesujące, ponieważ przekraczają granicę wektorowych zestawów danych, które są „zbyt duże”, aby można je było renderować w przeglądarce jako dane wektorowe. W przeciwieństwie do hrabstw USA można ledwo renderować w nowoczesnych przeglądarkach jako pliki do pobrania wektorowego. Podczas gdy plik wektorowy kształtu grupy bloków spisu ludności USA byłby z pewnością mniejszy niż zestaw rastrowy renderowany w celu objęcia całego USA przy wielu poziomach powiększenia, plik kształtu grupy bloków jest zbyt duży (blisko 1 GB), aby przeglądarka internetowa mogła go pobrać na żądanie. Nawet jeśli przeglądarka internetowa może szybko pobrać plik, większość przeglądarek internetowych (nawet przy użyciu Flasha) działa dość wolno przy renderowaniu ogromnej liczby kształtów. Tak więc, do przeglądania dużych zestawów danych wektorowych, często lepiej jest tłumaczyć je na skompresowane obrazy w celu przesłania do przeglądarki internetowej.
Kilka praktycznych przykładów
Kilka dni temu odpowiedziałem na podobne pytanie dotyczące renderowania dużych zbiorów danych w mapach Google. Można zobaczyć na pytanie oraz szczegółową analizę „najlepszych praktyk” stosowany przez NY Times i inni dzisiaj tutaj .
Kilka lat temu postanowiłem zrezygnować z renderowania wektorów po stronie klienta flash w kierunku renderingu wektorów po stronie serwera, który zapewnia skompresowane kafelki obrazów do czystego HTML i JavaScript. Mamy galerię map z kilkoma wersjami HTML + Raster (kafelki generowane przez serwer) i Flash + Vector (ciężkie renderowanie po stronie klienta).
Reprezentacja danych rastrowych jest czasem nazywana reprezentacją danych siatki. Służy do reprezentowania danych geograficznych lub informacji za pomocą wierszy i kolumn, w których każda komórka reprezentuje dane cyfrowe o określonej reprezentacji.
źródło