Benutzer:Pemu/Stitch-Script-Synthesizer

aus Wikipedia, der freien Enzyklopädie
Achtung: Diese Seite ist noch am enstehen.
Wenn Du meinst, etwas beitragen zu können – nur zu! Ändere, wo ich in meiner Sicht aus der Position des schon Wissenden versagt habe, jemanden Unwissenden abzuholen. Davon lebt Wikipedia – dass Menschen, die nur halb Ahnung haben und noch die Position des Unwissenden kennen, etwas von Experten Geschriebens so umformulieren, dass es der Unwissende verstehen kann, aber der Experte es nicht falsch findet. Ok, ok, im Idealfall.

Der Stitch-Script-Synthesizer ist Pemus Hilfsmittel, um Bilder (Karten) am Stück zu erhalten, die von Websitebetreibern als Kacheln herausgegeben werden. Ein Calc-Spreadsheet (für Libre-Office) setzt wget-Aufrufe mit den Urls für die Kacheln zusammen und ergänzt sie um jpegtran-Aufrufe zum Zusammensetzen der Kacheln. Die betreffenden Zellen werden per Copy und Paste in ein ausführbares Kommandozeilenskript überführt. Durch Ausführen lädt das Skript die Kacheln herunter und setzt sie zu einem Ganzen zusammen. Diese Heransgehensweise ist in gewisser Weise pragmatisch, nerdig, aber nicht idiotensicher[1]. Außerdem glaube ich, dass die Wartung somit besser auf mehrere Füße gestellt werden kann, da, so glaube ich, jeder, der etwas Excel-/Calc-Kentnisse hat, schon das ein oder andere Mal etwas in eine Kommandozeile eingetippt hat und bereit ist, die Usage-Ausgabe eines Kommadozeilentools zu lesen, das Spreadsheet warten kann.

Zu finden ist das Spreadsheet mit dem Synthesizer im Commons Archive unter https://commonsarchive.wmflabs.org/wiki/File:Create_Stitch_Script.ods

Vorbereitung

Arbeitsverzeichnis

Wer es nicht besser weiß oder aus anderen Gründen abweichen will, dem sei empfohlen, ein Unterverzeichnis anzulegen, das ausschließlich der Arbeit mit dem Skript-Synthesizer dient. Vorschlag für den Verzeichnisnamen: "Stitch-Script-Synthesizer" im Home-Ordner bzw. unter "Eigene Dateien".

Tools

Zum Testen ein Kommandozeilenfenster (Eingabeaufforderung/Terminalfenster) öffnen. Dort "wget" eintippen. Es sollte eine Meldung erscheinen wie "wget: URL fehlt […]". Erscheint dagegen sowas wie "wget: Befehl nicht gefunden", so muss wget beschafft werden. In unserem Artikel ist ein Link auf die Homepage, dort gibt es unter "Downloading GNU Wget" einen Hinweis "For more download options, see […]", wo wiederum auf "Windows Binaries" hingewiesen wird. Die .exe-Datei herunterladen und im Arbeitsverzeichnis ablegen. Linuxer werden wget wahrscheinlich schon "ab Werk" installiert haben, sonst hilft die Paketverwaltung; sollten sie ein ausführbares Programm im Arbeitsverzeichnis ablegen, so bitte daran denken, dass das Programm dann üblicherweise mit einleitendem "./" gestartet werden muss, also "./wget".

Als nächstes: "jpegtran --help". Erscheint im angezeigten Hilfetext unter "Switches for modifying the image:" eine Zeile mit "-crop WxH+X+Y […]" und eine mit "-drop +X+Y filename […]"? Wenn nicht (oder auch hier "Befehl nicht gefunden" erscheint), so muss jpegtran mit dem Droppatch besorgt werden; siehe dazu unter http://jpegclub.org/jpegtran/. Wie diese Seite mit der in der bei uns verlinkten Homepage verlinkt ist, weiß ich nicht mehr. Der Windows-Nutzer nimmt sich aus dem Archiv "droppatch9b.zip" die Datei "jpegtran.exe" und legt sie ebenfalls in das Arbeitsverzeichnis; der Linuxer macht dies mit "jpegtran" aus "droppatch.v9b.tar.gz".

Außerdem wird eine neue Textdatei angelegt und in "entkacheln.bat" umbenannt. Der Windows-Nutzer ignoriert die Warnung, dass "die Datei dadurch eventuell unbrauchbar wird", der Linuxer stellt die Eigenschaften der Datei auf "ausführbar".

Firefox mit dem Netzwerkanalyse-Fenster

Ist Stitching überhaupt notwendig?

Manche Server lassen sich auch dazu überreden, die Grafik am Stück auszuliefern.

Welche Server sind das?

  • bavarikon.de (Stand April 2020)
  • digitale-bibliothek-mv.de (Stand April 2020)
  • gallica.bnf.fr (Stand April 2020)
  • oldmapsonline.org (Stand Oktober 2017)

bavarikon.de

Update ggü. alter Version (mit cURL) und neuerer Version.

Im Folgenden wird das Vorgehen am Beispiel von www.bavarikon.de/object/bav:HVO-OBJ-0000000HVBSB1037 beschrieben. Aus dieser Url die Dokumentbezeichnung bav:HVO-OBJ-0000000HVBSB1037 isolieren. Dieser Dokumentbezeichnung die Teil-Url https://api.digitale-sammlungen.de/iiif/image/v2/ voranstellen und hinten noch /full/full/0/default.jpg ergänzen. Es entsteht also https://api.digitale-sammlungen.de/iiif/image/v2/bav:HVO-OBJ-0000000HVBSB1037/full/full/0/default.jpg. Diese Url mit dem Brauser öffnen. Et voilà.

digitale-bibliothek-mv.de

Beispiel: www.digitale-bibliothek-mv.de/viewer/image/PPN636508188/26/

Mit der Netzwerkanalyse von Firefox (Strg-Shift-E oder über das Menü Extras, Web-Entwickler; siehe auch [1]) können die Urls der Kacheln ermittelt werden. Details sind in der älteren Version unter bavarikon beschrieben, wobei hier Adresse kopieren statt cURL-Adresse kopieren benutzt wird)

Beispiel einer Kachel-Url: digitale-bibliothek-mv.de/viewer/rest/image/PPN636508188/00000026.tif/1536,1024,512,512/512,/0/default.jpg

Die Beispiel-Kachel-Url wird umgebastelt, so dass full/full statt der Koordinatenangaben vor dem /0/default.jpg steht: digitale-bibliothek-mv.de/viewer/rest/image/PPN636508188/00000026.tif/full/full/0/default.jpg
Diese Url kann mit dem Browser angefordert werden, der die Grafik auch abspeichern kann.

gallica.bnf.fr

Beispiel: gallica.bnf.fr/ark:/12148/btv1b531027359

Bei gallica.bnf.fr wird analog zu digitale-bibliothek-mv.de vorgegangen.

So erhält man am Ende die umgebastelte Url gallica.bnf.fr/iiif/ark:/12148/btv1b531027359/f1/full/full/0/native.jpg

oldmapsonline.org

Das Vorgehen wird am Beispiel www.oldmapsonline.org/map/cuni/1027163 erläutert:

  • http://www.oldmapsonline.org/map/cuni/1027163 im Firefox öffnen.
  • View this map anklicken und Copyrighthinweise lesen, Continue klicken.
  • Netzwerkanalyse starten (Strg-Shift-E oder über das Menü Extras, Web-Entwickler; siehe auch [2]), dort den Untertab Grafiken wählen.
  • Oben rechts die höchste Zoomstufe wählen (Zoom to level 4).
  • Im Thumbnail möglichst ganz nach unten rechts klicken, so dass in der Vergrößerung die untere rechte Ecke erscheint.
  • Den untersten Eintrag in der Netzwerkanalyse („imageserver?&res=1…“) mit rechts anklicken, so dass das Kontextmenü kommt; dort Kopieren und Adresse kopieren wählen.
  • Die Zwischenablage in einen Texteditor (z. B. Notepad) mit neuer Datei, also einem leeren Fenster, einfügen (meist geht das mit Strg-V).
    • (Wenn man weiß, um was es geht, kann man die Zwischenablage auch direkt in die Adresszeile des Browsers einfügen und die Änderungen dort vornehmen.)
  • Im Query-Bereich der eben eingefügten Url (siehe Uniform Resource Locator#Aufbau) nach den Parametern viewwidth=, viewheight=, x= und y= suchen
    • im Beispiel ist dies: http://digitool.is.cuni.cz:5881/ImageServer/imageserver?&res=1&viewwidth=660&viewheight=459&x=2158&y=3409&imgCli…
  • Folgendes ausrechnen:
    • breite = viewwidth + x − 1
      • im Beispiel: breite = 660 + 2158 − 1 = 2817
    • höhe = viewheight + y − 1
      • im Beispiel: höhe = 459 + 3409 − 1 = 3867
  • die Url so anpassen, dass viewwidth = breite und viewheight = höhe ist und dass x und y = 0 sind
    • im Beispiel: http://digitool.is.cuni.cz:5881/ImageServer/imageserver?&res=1&viewwidth=2817&viewheight=3867&x=0&y=0&img…
  • Die modifizierte Url im Texteditor ausschneiden (inkl. dem hier in den Beispielen hinter »…« versteckten Rest) und beim Browser in der Adresszeile eines leeren Tabs einfügen und anfordern.
  • Voilà

Schritt 1: Ermitteln der Kachel-Urls

Zunächst müssen die Urls der Kacheln und ihre Systematik (wie die Koordinaten nummeriert sind) ermittelt werden. Je nach Site muss man dazu unterschiedlich vorgehen.

e-rara.ch

Bei e-rara.ch (Stand Jan. 2016) kann man die höchste Vergrößerung wählen und (mit Firefox) mit rechts auf eine Kachel klicken und "Grafik anzeigen"/"view this image alone" aus dem Kontextmenü eine Kachel (und damit ihre Urls in der Adresszeile) anzeigen lassen. Die Kacheln werden von unten nach oben nummeriert. Eine Urls sieht so aus: http://www.e-rara.ch/image/tile/wc/nop/9411/1.0.0/6186201/7/<Spalte>/<Zeile>.jpg

Wenn man ganz nach rechts oben geht und die dortige Kachel betrachtet (beispielsweise http://www.e-rara.ch/image/tile/wc/nop/9411/1.0.0/6186201/7/18/8.jpg, sieht man an den Zahlen die Kartengröße, in Kacheln gemessen, hier also 19×9 Kacheln (Hinweis: die Zählung beginnt bei 0). Öffnet man (Firefox) das Kontextmenü und wählt "Grafik-Info anzeigen", kann man die Maße der Kachel (hier 512×512 Pixel) sehen.

In das Spreadsheet vom Skript-Synthesizer trage man den Basis-Teil der Url (hier gelb hinterlegt) und die Kartengröße, gemessen in Kacheln, jeweils minus eins, ein. Außerdem die allgemeine Kachelgröße (zweimal 512) als Größe der unteren rechten Kachel eintragen.

maps.nls.uk

Die Kachel von maps.nls.uk sind von oben nach unten nummeriert, außerdem sind die Kacheln unten bzw. rechts unter Umständen kleiner als die anderen Kacheln.

Bei maps.nls.uk vor dem Zoomen (Firefox) im Kontextmenü Element untersuchen (Q) anwählen. Es geht unten eine Ansicht auf; dort den Tab Netzwerkanalyse anwählen, darunter Grafiken anwählen. (Zur Netzwerkanalyse siehe auch [3].) Bei Hineinzoomen erscheinen in der Liste unten die Kachel-Urls. Bei Chrome/Chromium: Rechtsklick auf die Karte → Inspect… Dann oben Sources auswaehlen, und zu maps.nls.uk → imgsvr navigieren. Da stehen die Urls alle (Danke an Benutzer:Nurmalschnell).

Die Kacheln sind nicht in Einerschritten nummeriert, sondern in Pixelschritten der Kachelgröße, also hier in 256-er-Schritten.

In die untere rechte Ecke hineinzoomen, bis Urls mit "…,256,256/pct:100…" erscheinen. Diese Zoomstufe erscheint charmant, weil die Zahlen in der Url, die mutmaßlich die Pixelgröße der Kachel in den Originaldaten darstellen, mit der tatsächlichen Kachelgröße von 256×256 Pixeln übereinstimmen; außerdem steht die Zahl, die mutmaßlich für einen Vergrößerungsfaktor in Prozent steht, auf 100.

Die Kacheln am Rand sind unter Umständen kleiner als 256 Pixel. In der Liste die Eck-Kachel suchen (die, die die größten Pixel-Koordinaten hat und wahrscheinlich bei beiden Größen eine Zahl kleiner als 256). Beispiel ist http://maps.nls.uk/imgsrv/iipsrv.fcgi?iiif=/7440/74400299.jp2/13312,9728,74,226/pct:100/0/native.jpg: Die ersten beiden Zahlen scheinen die Kordinaten der oberen linken Kachelecke innerhalb der Originaldaten zu sein, mit anderen Worten der Offset der Kachel innerhalb der Originaldaten. Das Spreadsheet teilt sie jeweils durch 256 und erhält so die Kachel-Koordinaten; erst Spalte, dann Zeile.

Der Skript-Synthesizer erstellt später abweichende Urls für die Randkacheln, die auch ",256,256" statt der realen Größe enthalten. Offenbar stört sich der Server daran nicht.

In das Spreadsheet vom Skript-Synthesizer trage man den Basis-Teil der Url (hier gelb hinterlegt), die Offsetposition der unteren rechten Kachel (hier 13312 und 9728 (fast die Kartengröße)), gemessen in Pixeln, sowie die Größe der unteren rechten Eck-Kachel (hier 74 und 226) ein.

wdl.org

Due to awkward format of tiles there is a duplicated pixel column and line – pixels at coordinates 256 and 257 are duplicates (despite different jpeg-artifacts), the bottom right (almost whole) part of map (coords > 256) is shifted one pixel to the right and to the bottom.

Schritt 2: Zellen mit den Skript-Befehlen in die Zwischenablage kopieren

  • Vorher noch einige Zellen in Spalte B (gelb hinterlegt) mit den richtigen Werten für die jeweilige Quell-Site befüllen.

Schritt 3: Zwischenablage in die Skript-Datei einfügen

  • Darauf achten, ggf. den alten Inhalt zu ersetzen, sonst gibt’s Kuddelmuddel mit den Kacheln der vorherigen Karte.

Schritt 4: Skript-Datei ausführen

 

  1. „Je idiotensicherer eine Vorrichtung/Anwendung gestaltet wird, desto bessere Idioten bringt das Universum hervor.“