Hi,
woran ich gerade ganz massiv scheitere:
eigentlich doch eine ganz einfache Aktion.
Ich probiere nun schon seit Tagen erfolglos rum, um auch nur den grundlegenden Zugriff hinzubekommen:
- Pixelwerte eines RasterFiles lesen
- Ein neues Rasterbild erzeugen, welche die selben Eigenschaften wie die ursprüngliche Rastedatei hat.
- Die ausgelesenen Werte in die neue Datei schreiben.
Gibt es irgendwo ein ganz primitives Beispiel für so etwas, damit auch ich mal begreife, wie das funktioniert?
Bitte Bitte Bitte ...
woran ich gerade ganz massiv scheitere:
eigentlich doch eine ganz einfache Aktion.
Ich probiere nun schon seit Tagen erfolglos rum, um auch nur den grundlegenden Zugriff hinzubekommen:
- Pixelwerte eines RasterFiles lesen
- Ein neues Rasterbild erzeugen, welche die selben Eigenschaften wie die ursprüngliche Rastedatei hat.
- Die ausgelesenen Werte in die neue Datei schreiben.
Gibt es irgendwo ein ganz primitives Beispiel für so etwas, damit auch ich mal begreife, wie das funktioniert?
Bitte Bitte Bitte ...
- Anmelden oder Registieren, um Kommentare verfassen zu können
Gespeichert von Andreas am Di., 11.08.2009 - 12:50
PermalinkWenn nicht, umschreib doch dein Problem noch einmal etwas genauer.
Andreas
Gespeichert von Andreas Haug am Mi., 12.08.2009 - 16:49
Permalinkgenau beschrieben lautet die Frage wie folgt:
Ich möchte ein VBA-Script schreiben
- unter ArcMap 9.3, mit ArcObjects und im integrierten VBA-Editor.
Es soll es mir erlauben:
- UiButtonControl (klick) (das kriege ich hin ;) )
- Pixelwerte aus einem Rasterfile (nur 1 Band Graustufen) auszulesen
- auf diesen Pixelwerten was zu rechnen (genauer gesagt ich will drei nebeneinanderliegende Pixelwerte vergleichen und wenn die drei Werte gleich sind...)
- und dann einen der Pixelwerte in ein neues Raster zu schreiben (oder bei abschlägigem Berechnungsergebnis NoData), und zwar an die selbe XY-Koordinate, wie er sie auch schon im Original-Rasterfile hatte.
- das soll für alle Pixelwerte im Raster geschehen.
- Alle nicht mit einem Ausgabewert des "Filters" belegten Pixel im neuen Raster sollen den Wert "NoData" erhalten.
Das neue Rasterfile soll die gleichen Eigenschaften wie haben wie das Originalfile (Rasterzellengröße, Gesamtgröße des Rasters /Anzahl Zellen/Zeilen/Spalten, Grauwert-Skala usw.)
Aufbauend auf einem Beispiel von der ESRI-Helpdesk
http://resources.esri.com/help/9.3/ArcGISEngine/co m_cpp/COM/VB6/working/work_rasters/sptl_analyst_ob js.htm
-> zu findem im Abschnitt "Using the PixelBlock for custom analysis" ganz weit unten auf der Seite
habe ich rumprobiert, doch das funzt irgendwie nicht so, wie gedacht.
Es macht mir zwar am Ende ein Bild auf, das die gleiche Form hat wie das Ursprungsbild.
Doch es ist immer einfarbig, Farbbereich von -2147483647 bis +2147483647, mit einheitlichen Pixelwerten von 0. Und die Zellengröße ist "1x1", während das Ausgangsbild eine Zellengröße von 25x25 m hat und schön viele Graustufen beinhaltet ;)
Irgendwas dusseliges mache ich falsch...
Ach ja, ich verwende das Beispiel nicht als eigenständige Funktion/Subroutine, sondern direkt als Teil des Hauptprogramms
(Private Sub UIButtonControl1_Click() -Programm- EndSub
Hier ein Link zu einer html-Seite, falls sich das jemand mal anschauen möchte.... Leider verwürfelt es mir etwas das Layout.
URL
Kann man hier eigentlich eine mxd-Datei hochladen?
Ciao
Andi
Gespeichert von Andreas Haug am Mi., 12.08.2009 - 16:58
PermalinkGespeichert von Andreas Haug am Mi., 12.08.2009 - 17:02
PermalinkGespeichert von Andreas Haug am Mi., 12.08.2009 - 17:04
PermalinkGespeichert von Andreas Haug am Fr., 14.08.2009 - 07:49
PermalinkDas Problem war ein Codefehler im Beispielcode von ESRI.
Leider ist von den Werten im Layer nicht viel zu erkennen, da meine Werte (0-256) in einem Wertebereich von -32000nochwas bis + 32000nochwas dargestellt werden... das ergibt einen schön einheitlich dunkelgrauen Layer.
Die Werte "sehe" ich nur über den "Identify-Mauszeiger".
Aber dafür habe ich einen anderen Thread aufgemacht, in dem ich Fragen zu diesem Beispielcode stelle:
"Problem mit ESRI-Beispielcode"
http://www.anuva.de/service_arcforum.php?action=vt hread&forum=2&topic=4581
Und diesen Thread hier kann ich schließen.