JOSM: Cache

Hallo!
Ich hab 2 Fragen zu dem Cache von JOSM, also den Daten, die in dem Ordner “JMapViewerTiles_User” liegen:
1.: Kann man die Größe begrenzen? Ich staune, wie schnelle sich da mehrere GB ansammeln.
2.: Wenn ich das Fenster “Daten herunterladen” öffne und da die “Interaktive Karte” betrachte, werden da (Ich hab Mapnik ausgewählt.) oft nur die Tiles, die auf meiner Festplatte sind, angezeigt, also nicht die neu gerenderten. Wie kann ich das ändern?
Hab in den Einstellungen nix gefunden.

Im Zweifelsfall die Holzhammermethode:

Link dorthin auf dem Desktop ablegen, und von Zeit zu Zeit alles da drin löschen.
Oder ne kleine batch schreiben, die das ohne Rückfrage macht.

Gruß,
ajoessen

Tja, batch schreiben kann ich nicht.
Und die Holzhammermethode mache ich ca. alle 4 Wochen und dann müht sich mein Rechner schon gewaltig, dort zu putzen.
Desktop wäre ne Idee, dann denkt man häufiger dran.
Bin ich der einzige mit dem Problem?

Windows7:


@echo off
echo Clearing Tile Cache ...
del /s /q C:\Users\chris\AppData\Local\Temp\JMapViewerTiles_chris\ >NUL
echo done
pause

Als Textdatei abspeichern, umbennenen in “ClearTileCache.bat”.
Aufruf wahlweise durch Anklicken, Einbau in Deinen JOSM-Start oder im Autostart-Ordner verlinken.

… und für die altmodischen mit Windows XP:


@echo off
echo Clearing Tile Cache ...
del /s /q "C:\Dokumente und Einstellungen\<name>\Lokale Einstellungen\Temp\JMapViewerTiles_<name>\" >NUL
echo done
pause

wobei durch den aktuellen Benutzernamen zu ersetzen ist. Ohne die " gehts aber auf keine Fall.

Gruß,
ajoessen

Jaja, die Windows-Vorliebe für Ordnernamen mit Leerzeichen drin… :wink:

Mensch, es klappt! Man lernt ja nie aus.
Besten Dank an beide!

Meine Version:


@echo off
rem Setze ein paar Variablen
set path=%path%;C:\Program Files\GnuWin32\bin;d:\Program Files\josm
set java_param=-jar -Xmx1024m
set tiles=%localappdata%\Temp\JMapViewerTiles_User

rem Wechsle ins JOSM-Verzeichnis
d:
cd "\Program Files\JOSM"

:run_josm
rem Prüfe auf neue JOSM-Version und starte JOSM
wget.exe -N http://josm.openstreetmap.de/josm-%1.jar
java.exe %java_param% josm-%1.jar

rem Berechne Anzahl der Dateien
dir /a-d "%tiles%\Bing Aerial Maps" | find /c ":" > NUMfiles.###
set /p count=<NUMfiles.###
del /q NUMfiles.###
rem Wenn es nicht mehr als 30000 sind beenden
if %count% lss 30000 goto end

:delete_tiles
del /f /q "%tiles%\Bing Aerial Maps"
goto end

:end
rem pause

Gestartet wird das ganze mit

C:\Users\User\Documents\josm.bat tested

Kennt einer einen bessere Funktion zum Ermitteln und Vergleichen der Dateienanzahl, oder hat gar einen Cachecontroler, der alle “alten” Tiles löscht und nur die neuesten x Stück behält?

Gibt es unter Windows keine Funktion wie find unter Unix, um gezielt Dateien mit bestimmten Eigenschaften (z.B. Alter) zu suchen?

Als zweites erstaunt mich das ungehemmte Wachstum an Dateien.
Bei mir auf einem Mac, ist die Zahl der Dateien auf ca. 16000 (davon je die Hälfte Bilder und Koordinaten) begrenzt. JOSM kümmert sich darum, dass es nicht mehr werden.

Es gibt eine Variable “slippy_map_chooser.max_tiles” bei mir ohne gesetzten Wert. Ich vermute, dass der Standardwert dieser Variable dafür verantwortlich ist.
Möglicherweise gibt es noch andere Variablen unter “slippy_map_chooser.*”, die man nur setzen müsste, um das gewünschte Verhalten zu errreichen. Wie man die findet ohne im Quelltext zu suchen ist mir jedoch unklar.

Edbert (EvanE)

Das sind (AFAIK) die Tiles, die im Downloadfenster verwendet werden.

Seit Ende Februar diesen Jahres (in einer JOSM-Version zwischen etwa 8000 und 8100) ist ja der Cache von JOSM (unter Win7) von …\Temp\JMapViewerTiles_ nach …\AppData\Local\JOSM\cache\tms und …\wms umgezogen, wobei es jetzt für jeden wms-Anbieter, den man aufgerufen hat ein numerisch durchgezähltes Verzeichnis gibt und im tms-Verzeichnis je Anbieter (Bing, Mapnik, …) für jede Zoom-Stufe ein Verzeichnis mit vielen verschachtelten Unterverzeichnissen (z.B. x2y5) angelegt wird - vermutlich aus einer Koordinate (Kachelnummer) (x, y) = (123, 456) die Verzeichnisse x1y4, darin x2y5 und darin das Bild mit dem Dateinamen x3y6.png. Benachbarte Bilder liegen dann oft im gleichen Verzeichnis, da sich nur die Einer-Ziffer geändert hat.

Inzwischen ist dieser Cache bei mir auf 6,6 GB Festplattennutzung angewachsen. Wenn ich in JOSM auf dem Hintergrund mit der rechten Maustaste Kachel-Zwischenspeicher leeren aufrufe, erscheint ganz kurz (vielleicht 100 ms) ein Fenster, das zum lesen viel zu kurz sichtbar ist und dessen Zeit sicher nicht ausgereicht hat, mehrere GB im Cache zu löschen (Beim Löschen aus dem alten Temp-Verzeichnis blieb der Dialog stehen, bis er mit dem Löschen fertig war).

Wo befindet sich denn in JOSM ein ähnlicher Aufruf (Kachel-Zwischenspeicher leeren), um den Mapnik-Cache zu löschen?

Hat schon jemand eine Batch-Datei für Win7 geschrieben, um die Verzeichnisse von hinten aufzurollen und zu löschen? Wenn ich in der DOS-Box mit del . ein Verzeichnis mit weiteren Verzeichnissen darin zu löschen versuche, sollten vermutlich erst die Dateien der untersten Ebene gelöscht werden, denn so geht das nicht.

Edit: Wenn ich mich in einem Verzeichnis (z.B. Bing) befinde, kann ich mit “rmdir /s /q .” alle Unterverzeichnisse und deren Inhalte löschen.

Grüße
Franz

Ich habe bei mir einfach mal das ganze cache Verzeichnis gelöscht, das dauert etwas.

Bing-Kacheln werden soweit ich das gesehen habe jetzt einfach unter dem Unterverzeichnis TMS in den Dateien tms.data und tms.key gespeichert…
das löschen des caches geht dann mit dieser einen Datei wesentlich schneller, als wenn viele viele kleine png dateien gelöscht werden müssen.

//edit:
auch bei Aufruf von Mapnik - Kacheln wächst die .data Datei an, wohl eine Art Image Datei, keine einzelnen Kacheln (.png) mehr zu sehen…

In …AppData\Local\Temp ist da noch ein geotools-verzeichnis und noch ein Verzeichnis, in dem, während Josm aktiv ist, Temporärdaten gespeichert werden.

Im Info-Fenster der Dos-Box beim Start von JOSM gibts dann noch viele Info zeilen mit “IndexedDiskCache” und CacheEventQueue