ich benutze die Aerowestbilder schon seit einiger Zeit. Nachdem ich das Problem mit den Auflösungspyramiden gelößt habe (gdaladdo hat unter Win7 Probleme mit jpeg) hat sich ein neues Problem aufgetan.
Bisher habe ich die Bilder immer in 1:1000 runtergeladen und sie waren auch alle gut zu sehen. Jetzt kam ich auf die Idee, dass 1:2000 vielleicht auch reichen könnte und weniger Aufwand zum Runterladen ist. Also habe ich da mal angefangen. Jetzt habe ich nur das Problem, dass die neuen 1:2000-Bilder über den 1:1000 Bildern liegen. Man sieht gut dass erst das hochauflösende Bild geladen wird und danach das andere Bild drüber gelegt wird. Gibt es da irgendeine Möglichkeit das zu steuern?
Ich habe mal Testweise angefangen eine “Auflösungspyraminde” runter zu laden. Funktioniert auch soweit, ich würde nur gerne meine alten Bilder da mit einbauen, was leider aus dem beschriebenen Problem nicht geht.
Vielen Dank für die zügige Antwort. Wenn ich den folgenden Befehl
gdaltindex -write_absolute_path bilder.shp *.jpg
richtig verstehe müsste es demnach reichen, wenn ich die Bilder so umbenenne, dass große Bilder am Anfang von Alphabet stehen und kleinen am Ende und ich danach das Shapefile beim Hinzufügen von Bildern immer lösche und anschließend neu erstelle.
Oder fällt sonst noch jemandem eine gute Möglichkeit ein das Problem zu lösen? Wenn es klappt ergänze ich dann noch die entsprechende Wiki-Seite.
Du hast natürlich auch noch eine andere Möglichkeit. holgermappt hatte bereits ein kleines Perlskript geschrieben, welches die Auflösung berücksichtigt und so erst die groben und dann die feineren Bilder einliest. Ob du allerdings Perl einfach so unter Windows ausführen kannst ist die Frage.
Na klar kann man die Layer verschieben. Wenn man jedoch nicht nur 20 oder 30 Bilder haben möchte, nimmt man sich einen Mapserver, welcher ähnlich wie die anderen WMS Server nur noch einen Layer haben. Da kann man in Josm nichts mehr verschieben weil die Anzeige von einem externen Programm gerechnet wird.
Da ich von Perl keine Ahnung habe werde ich das Rad mal neu erfinden und probieren das ganze mit Lazarus zu Programmieren (Da kommt dann auch das Batch skript rein und noch mehr). Mit Lazarus sollte ich das ganze dann auch Linux-Kompatibel kompilieren können.
Das ist ein schönes Projekt. Du solltest mit deinem Programm die jgw Dateien wie textdateien öffnen und dann nach Auflösung sortieren. Außerdem empfehle ich dir wenn du schon dabei bist immer Nordwest zu erst einzufügen und dann nach Osten arbeiten und später die nächste “Reihe”
Da kannst du ihn nur selber danach fragen. Er hatte es mir angeboten, wegen mangelnder Perlkenntnisse habe ich mich nur über deren technische Umsetzung erkundigt und es dann dabei belassen.
Warum nicht einfach die Bilder unterschiedlicher Auflösung in jeweils eigene Ordner ablegen?
Dann gibst du die Dateien als Ordner_2000/* und Ordner_1000/* an und schon hast du die richtige Reihenfolge.
Alternativ kannst du natürlich vor den Dateinamen jeweils ein “eins_” respektive “zwei_” hängen, wenn es einfacher ist alle Bilder in einem Ordner zu haben.
Na dann. Ist nur für EPSG31469, da ich bisher nichts anderes gebraucht habe.
#! /usr/bin/perl
### This script reads the images from directory $imgDir, sorts them, and
### creates a new shape file in that directory.
use strict;
use warnings;
### The extracted images are expected in this directory.
my $imgDir = "epsg31469";
opendir(my $dh, $imgDir) or die "Can't opendir $imgDir: $!";
my %images;
while (my $file = readdir($dh)) {
if ($file =~ m/\.jgw$/) {
my $filePath = $imgDir."/".$file;
open(my $fd, $filePath) or die "Cannot read file $filePath: $!";
my $meterPerPixel = <$fd>;
$filePath =~ s/jgw$/jpg/;
$images{$filePath} = $meterPerPixel;
close($fd);
}
}
closedir $dh;
my $scriptName = "./run.sh";
open(my $fd, ">", $scriptName) or die "Cannot open run script: $!";
### Delete the old shape file and create a new one.
print $fd "#! /bin/sh\n\nrm $imgDir.sh* $imgDir.dbf\n\ngdaltindex $imgDir.shp \\\n";
foreach my $image (sort {$images{$b} <=> $images{$a}} keys(%images)) {
print $fd " $image \\\n";
}
print $fd " 2>&1 | grep -v \"is already in tileindex. Skipping it.\"\n";
close($fd);
chmod(0755, $scriptName);
### Run the script that we just created.
system($scriptName);
Edit: Ach so, funktioniert erstmal nur unter Unix/Linux wegen /bin/sh, rm und grep. Aber mal ehrlich, wer nimmt denn noch was anderes