Frage

Ich möchte einige Wärme-Karte Artfliesen erstellen unsere Basiskarten mit Open Layers zu überlagern über. Grundsätzlich möchte ich einige einige Begrenzungsrahmen in ein Raster zu unterteilen, und jedes Quadrat des Gitters zeigen eine andere Farbe auf Basis von, wie viele Punkte einer Probe fallen in diesem Planquadrat.

Die Technologien beteiligt sind C #, Openlayers, SQL Server 2008 und GeoServer.

Meine Frage ist im Grunde ein allgemeiner Ansatz, ich bin nicht wirklich sicher, wo auf diesem die Spitze des Meißels zu setzen.

Mein Ziel ist es, jeden beliebigen Begrenzungsrahmen zu ergreifen, um die Lage sein, eine x-Meile von x-Meile Gittern, das in diesem Begrenzungsrahmen, die Iterierte über eine Sammlung von einzelnen Punkten und ordnen sie ein Planquadrat paßt berechnen oder eine andere, so kann ich Punktdichte pro Planquadrat berechnen, dann die Rasterfarbe die Dichten nach, dann ist das Overlay auf einer Cloudmade Basiskarte mit Open Layers.

Jede Hilfe bei allen sehr geschätzt, auf der ganzen Sache oder einen Teil davon würde.

War es hilfreich?

Lösung

Wenn Ihr Begrenzungsrahmen Achse ausgerichtet ist, ist dies relativ einfach. So stellen Sie Ihr Bild, und erstellen für sie von Hand eine Welt-Datei. Die Welt-Datei ist nur 6 Zeilen Text, und Sie wissen bereits alles Notwendige (x & y Pixelgröße, Koordinate der linken oberen Ecke).

So stellen Sie sicher, dass Sie die Mitte des oberen linken Ecke Pixel verwenden, nicht um die Ecke der Box.

------ Hier ist, wie man die Welt Datei machen würde -------

Sagen Sie Ihre Begrenzungsrahmen des linken oberen Ecke befindet sich an 203732x598374, und Sie möchten ein Bild, das Rechtecke hat, die 200 m breit Osten sind <-> Westen und 300m hohen Norden <->. Süden

Sie würden ein Bild machen, die die entsprechende Anzahl von Pixeln war, dann eine Welt-Datei, die die folgenden 6 Zeilen hatte:

200
0
0
-300
203632
598524

Dies entspricht:

200 == size of one pixel in X
0 == shear1
0 == shear2
-300 == size of one pixel in Y (from top down)
203632 == left edge - 1/2 pixel size (to center on pixel instead of edge of box)
598524 == top edge - 1/2 pixel size (to center on pixel instead of edge of box)

Wenn Sie ein .png Bild verwenden, werden Sie wollen, dass diese mit dem gleichen Namen speichern, sondern als .pgw. Wenn Sie eine JPG verwenden, würde es .jgw sein, etc.

Für vollständige Details finden Sie unter: Wiki auf Welt Dateien

Andere Tipps

„Aufteilen einig etwas Begrenzungsrahmen in ein Raster, und jedes Quadrats des Gitters Anzeigen eine andere Farbe auf, wie viele Punkte einer Probe fällt in diesem Planquadrat.“ Dies ist ein Raster und es gibt verfügt in GeoServer für diese Anzeige mit Farbschattierung, Legenden und so weiter. Ich denke, es wird flexibler sein, um diese Funktionen zu verwenden, als Bildkacheln in C # zu erstellen.

Von der GeoServer Dokumentation:

  

Rasterdaten ist nicht nur ein Bild,   vielmehr kann es als ein Gitter gedacht werden   georeferenzierter Informationen, viel   wie eine Grafik ist ein Raster von visuellen   Informationen (mit Kombination von Rot-,   Grün und Blau). Im Gegensatz zu Grafiken,   die nur visuelle Daten enthalten, die jeweils   Punkt / Pixel in einem Rastergitter kann aufweisen   viele verschiedene Attribute, mit   vielleicht keiner von ihnen mit einer   Natur visuelle Komponente.

Dies ist auch thematische Karten oder Konturplots oder Heatmaps oder 2,5D-Plots in anderen GIS-Paketen genannt.

Sie können eine kostenlose GIS verwenden wie Grass GDAL , die Sie in Rasterdateien schreiben können verschiedene Formate . Es gibt C # Bindungen.

Ich denke, die Formeln zur Berechnung der Mitte des oberen linken Pixels falsch sind. Im Beispiel würde die Mitte des oberen linken Pixels sein nach unten und rechts von (203732,598374). So soll es nicht die folgende sein?

203832 == left edge + 1/2 pixel size (to center on pixel instead of edge of box)
598224 == top edge - 1/2 pixel size (to center on pixel instead of edge of box)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top