Przygotowuję aplikację, w której muszę utworzyć wektorową siatkę, która będzie używana do przechowywania i wyświetlania mapy cieplnej. Ma następujące wymagania:
- Może objąć całą planetę.
- Zdecydowana większość kwadratów siatki nie będzie miała wartości.
- Nie chcę przechowywać samej siatki; Chciałbym to przeliczyć na bieżąco.
- Skala danych używanych z siatką może się znacznie różnić.
- Spodziewam się, że chcę kwadratów siatki od 1 km do 100 km szerokości. (Wiem, ile to będzie (~ 510 milionów na 1 km, ~ 51 000 na 100 km)).
- Wartości będą gromadzone / agregowane dla każdego kwadratu siatki.
- Idealnie byłoby w stanie łatwo użyć mniejszych komórek siatki do obliczenia wartości dla większych, zamiast przechowywać większe wartości komórek siatki.
- Będę używał OpenLayers do układania go na OpenStreetMap.
- Będę przechowywać go w SpatiaLite lub SQLite, więc najlepiej obsługiwane przez te natywnie (tj. Dla SpatiaLite = obsługiwany CRS; lub dla SQLite = system oparty na liczbach czystych).
Więc moje pytanie brzmi: jakiej projekcji powinienem użyć dla tej siatki?
Ponadto - czy istnieje dobry sposób na zaprojektowanie tego? Czy ktoś wie o dobrym potencjalnym rozwiązaniu tego problemu lub wcześniej rozwiązał podobny problem? Lub może wskazać mi przydatny kierunek.
Edytuj przypadek użycia - w zasadzie agreguję ramki graniczne o różnych kształtach i rozmiarach. Mogą mieć wielkość od kilku hektarów do tysięcy kilometrów kwadratowych. Mogą być również w różnych projekcjach.
Poniżej znajduje się niestandardowa wersja tego, co chcę osiągnąć automatycznie na większą skalę.
Wielkie dzięki.
źródło
Odpowiedzi:
Standardowe kafelki OSM są w sferycznym Mercatorze (SRID = 3857), więc prawdopodobnie najłatwiej będzie zbudować siatkę przy użyciu tej samej projekcji.
Jeśli używasz SM, możesz przechowywać dane na najwyższym poziomie powiększenia obsługiwanym przez OSM lub na najwyższym poziomie powiększenia, na który pozwolisz użytkownikom powiększyć. Jeśli zasięg jest niewielki, użyj struktury danych wzdłuż linii
XIndex, YIndex, Count
gdzie indeksy są indeksami w siatce kafelków na żądanym poziomie powiększenia, liczba jest liczbą obiektów, które przecinają tę płytkę i nie zawierają wpisów dla punktów, w których liczba wynosi zero. Następnie możesz po prostu wybrać liczbę według indeksu lub przy niższych poziomach powiększenia wybrać sumę liczby według zakresu indeksu, wiedząc, że jeśli zapytanie zwróci, licznik nie będzie wynosił zero dla danego regionu.
Jest to oczywiście abstrakcja, zakładam, że istnieje warstwa oprogramowania między tym a twoim renderem map cieplnych. Bardziej opis tego, jak wyrenderujesz mapę cieplną, pomoże mi lepiej doradzić.
źródło
Wartość przechowywana w komórce z mapy cieplnej jest często znormalizowana według jej obszaru. W takim przypadku wolałbym zaproponować rzut równej powierzchni, abyś mógł łatwo agregować do większej skali
źródło
To odpowiedź na pytanie, jak zaprojektować mapę cieplną. Moją sugestią jest przyjrzenie się systemowi siatki komórek Quarter Degree . QDGC reprezentuje sposób tworzenia (prawie) równych kwadratów powierzchni obejmujących określony obszar, aby reprezentować określone cechy tego obszaru. Same kwadraty są oparte na kwadratach stopnia pokrywających ziemię. Wokół równika mamy 360 linii podłużnych, a od północnego do południowego bieguna mamy 180 linii podłużnych. Łącznie daje nam to 64800 segmentów lub płytek pokrywających ziemię. Forma kwadratów staje się bardziej prostokątna w miarę zbliżania się północy. Na biegunach wcale nie są kwadratowe ani nawet prostokątne, lecz kończą się wydłużonymi trójkątami.
Komórki siatki można podzielić na cztery, a wynikowe komórki siatki ponownie podzielić na cztery. System zapewnia użytkownikowi przewidywalną konwencję nazewnictwa. Obliczając obszary dla różnych komórek siatki, powinny one być odpowiednie do prezentacji zależnych od obszaru.
Bardziej szczegółowe informacje i odniesienia do niektórych innych systemów są również dostępne w artykule, który opublikowałem kilka lat temu. Standard ten jest wykorzystywany w kilku afrykańskich atlasach w celu uzyskania informacji o środowisku.
Pliki kształtów dla różnych kontynentów i krajów są dostępne do pobrania na mojej stronie blogu.
Rozmyślałem nad rozszerzeniem standardu, aby komórki siatki powyżej lub poniżej pewnej szerokości geograficznej mogły zostać podzielone na dwie części, zapewniając w ten sposób bardziej przyjemny wizualnie produkt mapy, gdy jest używany.
źródło