Globalna, podobna do siatki projekcja do tworzenia map cieplnych

11

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ę. wprowadź opis zdjęcia tutaj

Wielkie dzięki.

GIS-Jonathan
źródło
W żadnym wypadku niekoniecznie pełna lub doskonała odpowiedź, ale możesz chcieć skorzystać z Google Military Reference System lub przynajmniej US National Grid fgdc.gov/usng, aby uzyskać pomysły na to, jak organizacje te poradziły sobie z co najmniej podobnymi wyzwaniami. Ponownie niekoniecznie idealny, ale może być dobrym punktem odniesienia dla twojej pracy. Mam nadzieję, że to pomoże.
John,
@John - Dzięki; Natknąłem się na siatkę wojskową podczas własnych poszukiwań, ale używa ona zarówno liter, jak i cyfr, więc nie jestem pewien, czy jest odpowiednia. Rzeczy z USNG wyglądają interesująco, ale nie zamierzam tworzyć własnych.
GIS-Jonathan
1
Niektóre informacje na temat charakteru danych i celu mapy termicznej pomogą skoncentrować odpowiedzi, które mogą (i powinny) różnić się w zależności od właściwości geograficznych, które chcesz zachować na mapach: orientacji, namiaru, obszaru, kształtu itp. Ponieważ ponowne rzutowanie danych przestrzennych jest stosunkowo szybkie i łatwe, można skłonić do dyskontowania tych problemów i skupienia się na bardziej fundamentalnych kwestiach uprzedzeń i dokładności: Co planujesz zrobić w związku z MAUP? Czy planujesz wyciągać wnioski z danych zapisanych w tych komórkach siatki? Dlaczego musi to być struktura danych wektorowych ?
whuber
Czy mógłbyś wyjaśnić, jaka jest przestrzenna wymiarowość danych dotyczących stosowania? tzn. czy dane są zasadniczo punktowe i agregowane tylko w komórce, czy też faktycznie są rzeczywiste?
AnserGIS
@ whuber - Dane zostaną wykorzystane do ogólnej reprezentacji dla laików, a nie do jakiejkolwiek formy analizy przestrzennej. Zatem żadne szczególne preferencje dotyczące tego, które właściwości geograficzne są zachowane / utracone, a MAUP jest nieistotny, ponieważ dążę do ogólnego uogólnienia danych. Potrzebuję tylko kwadratów siatki, aby starannie nałożyć coś w rodzaju płytek OSM. Moje pragnienie wektora polega na tym, że przechowuję go w bazie danych i łatwiej jest nim manipulować.
GIS-Jonathan

Odpowiedzi:

3

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ć.

Russell w ISC
źródło
3

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

radouxju
źródło
Czy planujesz obliczyć gęstość na rzutowanej płaszczyźnie lub na kulistej powierzchni i po prostu wyświetlić ją w ten sposób? Ponadto, czy dane prostokątne muszą kiedykolwiek zostać rozdzielone między więcej niż jedną komórkę siatki?
AnserGIS
@AnserGIS - Obliczenia zostaną wykonane na rzutowanej płaszczyźnie. Dane prostokątne mogą obejmować wiele komórek siatki. Zobacz także edycję, aby uzyskać więcej informacji.
GIS-Jonathan
2

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. Nazewnictwo komórek siatki ćwierć stopnia jest rekurencyjne.

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.

Ragnvald
źródło
1
Dzięki za udostępnienie; ciekawy pomysł. Z pewnością wydaje się, że może to być przydatne. Zakładam, że modyfikowanie go nie byłoby zbyt wielkim wysiłkiem, aby był czysto numeryczny? tzn. brak „E” lub „N”? To prawdopodobnie pozwoliłoby na łatwiejszą i wydajniejszą agregację komórek, szczególnie na południku lub równiku.
GIS-Jonathan
Jednym z dobrych powodów, aby zachować znaki (tekst), jest to, aby były czytelne dla ludzi. Do użytku w atlasach i odniesieniach ludzkich dobrze służy temu celowi. Oczywiście byłoby to możliwe, stosując na przykład tę reprezentację: E = 0, W = 1, S = 0, N = 1, A = 1, B = 2, C = 3 i D = 4. Niektóre dobrze napisane fragmenty kodu w Pythonie lub innym odpowiednim języku skryptowym powinny być w stanie „zmostkować” wyzwania południka / równika przy niewielkim koszcie. Oczywiście w zależności od poziomu operacji QDGC i wielkości zestawu danych.
ragnvald