Podczas korzystania z Ulotki do wizualizacji dużego zestawu danych (GeoJSON z 10.000 punktami), nic dziwnego, że przeglądarka zawiesza się lub zawiesza. Podpróbka 1000 obiektów z tego samego zestawu danych działa bezbłędnie. Niestety nie mogę udostępnić zestawu danych innym osobom do wypróbowania.
Czy ktoś ma lepsze rozwiązania do wizualizacji tak dużych zbiorów danych? (ostatecznym celem jest zwiększenie tej skali do 2 milionów funkcji). Jestem nawet skłonny rozważyć ramy wizualizacji offline, na wypadek gdyby alternatywy oparte na przeglądarce, takie jak Polymaps lub d3.js, zostały uznane za niezdolne.
Edycja: zapomniałem wspomnieć, że użytkownik musi mieć możliwość filtrowania zestawu danych według atrybutów. Tak więc z N wyposażony tylko dopasowanie n <N wyposażony może być konieczne dynamicznie renderowane.
Odpowiedzi:
Jestem autorem ulotki. Jest do tego niesamowita wtyczka do klastrowania, Leaflet.markercluster . Jest bardzo szybki i wydajny (spójrz na przykład na 50k znaczników), wygląda i działa bardzo płynnie z ładnymi animacjami i ma wiele opcji dostosowanych do twoich potrzeb.
źródło
PruneCluster
Wygląda również obiecująco.Możesz używać TileMill i renderować punkty jako obrazy rastrowe z szybką interaktywnością z UTFGrid . Skaluje się do milionów punktów i wielokątów, takich jak ta mapa spisu , ponieważ inteligentnie wysyła tylko dane potrzebne do określonych obszarów, dokładnie wtedy, gdy są potrzebne.
O ile mi wiadomo, nie ma innych szybkich metod, jak tylko bardzo szybki serwer WFS, który jest trudny do utrzymania / skalowania dla wielu widzów.
Ujawnienie: praca dla MapBox , napisałem sporo kodu. Ale TileMill jest darmowy / open source itp.
źródło
Czy przejrzałeś klaster ulotek? Opisuje to post na blogu autora tutaj
Inną opcją wartą obejrzenia może być użycie ulotki w połączeniu z GIS Cloud . Spójrz na to demo, aby zobaczyć, jak bardzo szybko obsługuje wiele geometrii. Bardzo imponujące. Nie jestem w żaden sposób związany z GISCloud.
źródło
Nigdy nie powinieneś wyświetlać milionów punktów na mapie. Nie tylko ze względu na poważne problemy z wydajnością, ale także z perspektywy użytkownika, ponieważ dla nich z pewnością trudno będzie interpretować te dane. Użyj niektórych sposobów agregowania danych (grupowanie, agregowanie do obszarów wielokąta itp.) W połączeniu z różnymi typami wyświetlania przy różnych poziomach powiększenia (np. Pokaż „surowe” dane punktowe tylko przy bardzo wysokich poziomach powiększenia i używaj zagregowanych danych gdziekolwiek indziej). Przykładem może być strona z nieruchomościami, taka jak zillow.com .
źródło
Sugeruję zmniejszenie renderowanej liczby cech punktowych: ludzkie oko nie będzie w stanie zobaczyć 10 000 punktów, nie mówiąc już o 2 000 000.
To, co możesz spróbować, to dynamicznie żądać zestawu danych z serwera niestandardowego (który musisz skonfigurować), np
Twój serwer obliczy następnie, które punkty zwrócić, w zależności od tego, co użytkownik chce teraz zobaczyć. W zależności od współczynnika powiększenia i przycinania wystarczy zwrócić bardzo niewielki procent punktów bez pogorszenia komfortu użytkowania.
Wady: konfiguracja serwera (powinieneś znaleźć biblioteki do filtrowania punktów geograficznych) i wolniejsze renderowanie (po każdym powiększeniu lub przeciągnięciu należy złożyć żądanie serwera)
źródło
Miałem rozwiązania do mapowania od 50 do 100 milionów rekordów, musisz użyć rozwiązań po stronie serwera, aby wykonać grid i dynamiczne. Nie możesz odpowiadać na interfejsy API map internetowych (Google lub inne), aby renderować po stronie klienta ....
[http://96.231.36.9:8080/rbgis/google_map.html][1] wypróbuj powyższe linki i zobacz jak
źródło