Eine globale, gitterartige Projektion zum Erstellen von Heatmaps


11

Ich stelle eine Anwendung zusammen, in der ich ein Vektorraster erstellen muss, in dem eine Heatmap gespeichert und angezeigt wird. Es hat folgende Anforderungen:

  • Kann den gesamten Planeten abdecken.
  • Die überwiegende Mehrheit der Gitterquadrate hat keine Werte.
  • Ich möchte das Raster selbst nicht speichern müssen. Ich würde es gerne im laufenden Betrieb berechnen.
  • Der Umfang der mit dem Raster verwendeten Daten kann massiv variieren.
  • Ich gehe davon aus, dass Gitterquadrate von 1 km bis 100 km Durchmesser gewünscht werden. (Mir ist bewusst, wie viele dies sein werden (~ 510 Millionen für 1 km, ~ 51.000 für 100 km)).
  • Die Werte werden für jedes Gitterquadrat akkumuliert / aggregiert.
  • Im Idealfall könnte ich problemlos kleinere Gitterzellen verwenden, um Werte für größere zu berechnen, anstatt die größeren Gitterzellenwerte zu speichern.
  • Ich werde OpenLayers verwenden, um es über OpenStreetMap zu drapieren.
  • Ich werde es in SpatiaLite oder SQLite speichern, also vorzugsweise von diesen nativ unterstützt (dh für SpatiaLite = ein unterstütztes CRS; oder für SQLite = ein auf reinen Zahlen basierendes System).

Meine Frage lautet also: Welche Projektion soll ich für dieses Raster verwenden?

Auch - gibt es eine gute Möglichkeit, dies zu entwerfen? Kennt jemand eine gute mögliche Lösung für dieses Problem oder hat eine ähnliche Lösung schon einmal gelöst? Oder kann mich in eine nützliche Richtung weisen.

Anwendungsfall bearbeiten - im Grunde fasse ich Begrenzungsrahmen in verschiedenen Formen und Größen zusammen. Sie können von einigen Hektar bis zu Tausenden Quadratkilometern groß sein. Sie können auch in unterschiedlichen Projektionen vorliegen.

Unten finden Sie eine maßgeschneiderte Version von dem, was ich automatisch in größerem Maßstab erreichen möchte. Geben Sie hier die Bildbeschreibung ein

Danke vielmals.


Auf keinen Fall unbedingt eine vollständige oder perfekte Antwort, aber Sie können das Military Grid Reference System oder zumindest das US National Grid fgdc.gov/usng googeln, um einige Ideen zu erhalten, wie diese Organisationen mit mindestens ähnlichen Herausforderungen umgegangen sind. Auch dies ist nicht unbedingt perfekt, kann aber eine gute Referenz für Ihre Arbeit sein. Ich hoffe es hilft.
John

@ John - Danke; Ich bin bei meinen eigenen Suchen auf das Militärraster gestoßen, aber es werden sowohl Buchstaben als auch Zahlen verwendet, sodass ich nicht sicher bin, ob es geeignet ist. Das USNG-Zeug sieht interessant aus, aber ich versuche nicht, mein eigenes zu kreieren.
GIS-Jonathan

1
Einige Informationen über die Art der Daten und den Zweck der Heatmap helfen dabei, die Antworten zu fokussieren. Diese können (und sollten) je nach den geografischen Eigenschaften variieren, die Sie in den Karten beibehalten möchten: Ausrichtung, Peilung, Fläche, Form usw. Da die Neuprojektion von Geodaten jedoch relativ schnell und einfach ist, könnte man dazu gebracht werden, diese Probleme zu ignorieren und sich stattdessen auf grundlegendere Aspekte der Voreingenommenheit und Genauigkeit zu konzentrieren: Was ist mit der MAUP zu tun? Planen Sie, aus den in diesen Rasterzellen zusammengefassten Daten Rückschlüsse zu ziehen? Warum muss es eine Vektordatenstruktur sein ?
whuber

Können Sie die räumliche Dimensionalität der zugrunde liegenden Daten klären? dh sind die Daten fundametal punktuell und nur zur Zelle aggregiert, oder ist sie tatsächlich flächendeckend?
AnserGIS

@whuber - Die Daten werden zur allgemeinen Darstellung für Laien verwendet, nicht für jede Form der räumlichen Analyse. Daher ist keine besondere Präferenz in Bezug darauf, welche geografischen Eigenschaften erhalten bleiben / verloren gehen, und MAUP irrelevant, da ich eine grobe Verallgemeinerung der Daten anstrebe. Ich brauche nur die Gitterquadrate, um so etwas wie OSM-Kacheln sauber zu überlagern. Mein Wunsch nach Vektor ist, weil ich ihn in einer Datenbank speichere und er viel einfacher zu manipulieren ist.
GIS-Jonathan

Antworten:


3

Standard-OSM-Kacheln befinden sich in Spherical Mercator (SRID = 3857), sodass es wahrscheinlich am einfachsten ist, Ihr Raster mit derselben Projektion zu erstellen.

Wenn Sie SM verwenden, können Sie die Daten auf der höchsten von OSM unterstützten Zoomstufe oder auf der höchsten Zoomstufe speichern, in die Benutzer hineinzoomen können. Wenn die Abdeckung gering ist, verwenden Sie eine Datenstruktur nach dem Vorbild von

XIndex, YIndex, Count

Wenn die Indizes die Indizes für das Kachelraster mit der gewünschten Zoomstufe sind, ist count die Anzahl der Features, die diese Kachel schneiden, und enthält keine Einträge für Punkte, bei denen count null ist. Dann können Sie einfach die Anzahl nach Index auswählen oder bei niedrigeren Zoomstufen die Summe der Anzahl nach Indexbereich auswählen, wobei Sie wissen, dass die Anzahl für die angegebene Region Null ist, wenn die Abfrage nichts zurückgibt.

Dies ist natürlich eine Abstraktion. Ich gehe von einer Softwareebene zwischen dieser und Ihrem Heatmap-Renderer aus. Eine genauere Beschreibung, wie Sie die Heatmap rendern, würde mir helfen, bessere Ratschläge zu geben.


3

Der in einer Zelle aus einer Heatmap gespeicherte Wert wird häufig durch seine Fläche normalisiert. In diesem Fall würde ich eher eine flächengleiche Projektion vorschlagen, damit Sie leicht in größerem Maßstab aggregieren können


Planen Sie, die Dichte auf der projizierten Ebene oder auf einer sphärischen Oberfläche zu berechnen und auf diese Weise anzuzeigen? Müssen die rechteckigen Daten jemals auf mehr als eine Gitterzelle verteilt werden?
AnserGIS

@AnserGIS - Die Berechnung erfolgt auf einer projizierten Ebene. Die rechteckigen Daten können mehrere Gitterzellen abdecken. Weitere Informationen finden Sie auch in der Bearbeitung.
GIS-Jonathan

2

Dies ist eine Antwort darauf, wie Sie eine Heatmap entwerfen können. Mein Vorschlag ist, dass Sie sich das Quarter Degree Grid Cell-System ansehen . QDGC stellt eine Möglichkeit dar, (fast) gleich große Flächenquadrate zu erstellen, die einen bestimmten Bereich abdecken, um bestimmte Qualitäten des abgedeckten Bereichs darzustellen. Die Quadrate selbst basieren auf den Gradquadraten, die die Erde bedecken. Um den Äquator haben wir 360 Längslinien und vom Nord- zum Südpol haben wir 180 Breitenlinien. Zusammen ergibt dies 64800 Segmente oder Kacheln, die die Erde bedecken. Die Form der Quadrate wird rechteckiger, je länger wir nach Norden kommen. An den Polen sind sie nicht quadratisch oder gar rechteckig, sondern enden in länglichen Dreiecken.

Die Gitterzellen können in vier geteilt werden, und die resultierenden Gitterzellen können wieder in vier geteilt werden. Das System bietet dem Benutzer eine vorhersehbare Namenskonvention. Durch die Berechnung der Flächen für die verschiedenen Gitterzellen sollten sie für flächenabhängige Präsentationen geeignet sein. Die Nomenklatur der Quarter Degree Grid Cells ist rekursiv.

Detailliertere Informationen und Verweise auf einige andere Systeme finden Sie auch in einem Artikel, den ich vor einigen Jahren veröffentlicht habe. Der Standard wird in mehreren afrikanischen Atlanten für Umweltinformationen verwendet.

Shapefiles für verschiedene Kontinente und Länder können auf meiner Blog-Site heruntergeladen werden.

Ich habe mit dem Gedanken herumgespielt, den Standard so zu erweitern, dass die Gitterzellen über oder unter einem bestimmten Breitengrad in zwei Teile geteilt werden können, um bei Verwendung ein optisch ansprechenderes Kartenprodukt zu erhalten.


1
Danke für das Teilen; interessante Idee. Sicherlich scheint es dafür nützlich zu sein. Ich gehe davon aus, dass es nicht zu aufwendig wäre, es so zu ändern, dass es rein numerisch ist. dh kein "E" oder "N"? Dies würde wahrscheinlich eine einfachere und effizientere Aggregation von Zellen ermöglichen, insbesondere am Meridian oder Äquator.
GIS-Jonathan

Ein guter Grund, die Zeichen (Text) beizubehalten, besteht darin, sie für den Menschen lesbar zu halten. Für die Verwendung in Atlanten und menschlichen Referenzen erfüllt sie den Zweck gut. Es wäre natürlich möglich, dies beispielsweise anhand dieser Darstellung zu verwenden: E = 0, W = 1, S = 0, N = 1, A = 1, B = 2, C = 3 und D = 4. Einige gut geschriebene Codefragmente in Python oder einer anderen relevanten Skriptsprache sollten in der Lage sein, die Meridian / Äquator-Herausforderungen mit geringen Kosten zu "überbrücken". Natürlich abhängig von Ihrer QDGC-Betriebsebene und der Datensatzgröße.
Ragnvald
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.