Workflows

Drawer digitization

Involved Modules:

Import

Im folgenden Beispiel wird der Import von Daten aus einer csv Datei expemplarisch anhand von Insektenkästen dargestellt.

  • Import der Grundlegenden Hierarchie der Sammlung
  • Import der Insektenkästen und deren Abbildungen
  • Import der den Arten zugeordneten Bereiche
  • Import der Arten

Sammlungs-hierarchie

Sofern noch nicht vorhanden sollte als erster Schritt die grundlegende Hierarchie der Sammlung importiert oder angelegt werden. Details dazu finden sich in den Kapiteln Collection und Import wizard.

Insektenkästen

Als nächster Schritt werden die Daten zu den Insektenkästen einschliesslich der zugehörigen Bilder importiert. Die Bilder werden dabei als Plan wie in Kapitel Plan verwendet. Dabei ist die Größe des Bilds in Pixeln bekannt. Es kann immer nur ein Bild pro Kasten als Plan dienen.

Beispieldaten

Die Schritte dieses und der folgenden Kapitel können anhand der folgenden Beispieldaten nachvollzogen werden.
Damit das Beispiel funktioniert müssen bestimmte Anpassungen vorgenommen werden:

  • Sofern der Pfad für das Bild (D:\Projekte\Maringen\ZSM-CD-0000130.jpg) nicht realisierbar ist, muss er im Textfile Cicindelidae_130.txt angepasst werden.
  • Sofern die Sammlung mit dem Namen Rack 3/4 nicht existiert muss diese vorher angelegt werden.

(Bitte rechte Maustaste - Ziel speichern unter verwenden um die Dateien lokal zu speichern):

Text file containing the data for the import.

Image file of the insect box.

Schema drawer for the import of the insect box.

Schema areas for the imort of the areas within the insect box.

Schema specimen for the import of the specimen.

Zuordnung der Daten zu den Feldern in der Tabelle Collection

  • Kennung des Insektenkastens → CollectionName
    • dieser muss innerhalb der Datenbank eindeutig sein, es bietet sich an eine Kastennummer oder ähnliches zusammen mit einem weiteren Merkmal wie Regal, Raum oder Sammlungsbezeichnung zu verwenden.
  • ID der übergeordneten Sammlung → LocationParentID und / oder CollectionParentID
    • damit wird der Kasten dem übergeordneten Ort wie z.B. dem Regal sowie gegebenenfalls der administrativen Sammlung (e.g. Coleoptera) zugeordnet. Letzteres ist in der Regel nicht notwendig wenn innerhalb der Kästen die einzelnen Arten der administrativen Sammlung zugeordnet werden.
  • Pfad des Bilds → LocationPlan
    • dies sollte eine URL sein. Falls der Plan nur lokal vorliegt verwendet man den vollständigen Dateipfad.
  • Breite des Bilds → LocationPlanWidth
    • sofern bekannt - damit lassen sich die Größen der im Bild dargestellten Objekte ermitteln
  • Typ der Sammlung → Type (= drawer)
    • der Typ bestimmt z.B. das Symbol das dafür in DiversityColletion dargestellt wird.

Video anhand der Beispieldaten: Video starten (Ausgangslage mit Aufbau der Sammlung, Bild des Insektenkastens, Daten als Textdatei, 2 Hierarchien: administrativ und örtlich, für Pläne örtliche Hierarchie, Import: File, Schema, Transfer der Daten aus Textdatei in Datenbank, nur Location Hierarchie: Übersetzung von Text in Datei in ID der Sammlung, Import, Darstellung der Daten nach Import mit Bild und Einordnung in Hierarchie)

Zugeordneten Bereiche

Sofern wie in diesem Beispiel die notwendigen Informationen vorhanden sind, kann als nächster Schritt der Import der den Arten zugeordneten Bereiche erfolgen. Hierzu müssen die in den Daten angegebenen Punkte in eine Geometrie konvertiert werden wie sie in der Datenbank verwendet wird.

Der Nullpunkt (X = 0, Y = 0) befindet sich dabei in der oberen linken Ecke des Bilds. Die Y-Koordinaten verweisen dabei anders als gewohnt nach unten. In einem normalen Koordinatensystem wären diese also negativ.

Ein typisches Format ist ein Rechteck das in der Datenbank als Polygon definiert wird. Die Eckpunkte des Polygons werden durch die X- und Y-Koordinaten des Bildes repräsentiert. Die Eckpunkte werden in der angegebenen Reihenfolge durch Linen verbunden. Ein Beispiel wären folgende Werte:

  • X1 = 20
  • Y1 = 80
  • X2 = 20
  • Y2 = 50
  • X3 = 100
  • Y3 = 50
  • X4 = 100
  • Y4 = 80

Für ein Polygon muss der erste Punkt (X1/Y1) als letzter Punkt am Ende eingefügt werden um das Polygon zu schliessen. Das ergibt folgenden Wert:

POLYGON ((20 80, 20 50, 100 50, 100 80, 20 80))

Der im Import muss dies mit einem Vor- (= geometry::STGeomFromText(') und Nachspann (= ', 0)) in eine in der Datenbank verwendete Syntax konvertiert werden:

geometry::STGeomFromText('POLYGON ((20 80, 20 50, 100 50, 100 80, 20 80))', 0)

Die Reihenfolge der Punkte sind für eine Geometrie nicht von Bedeutung. Für eine Geographie ist die Reihenfolge immer gegen den Uhrzeigersinn.

In Angaben in den Daten müssen in dieses Format konvertiert werden um den Bereich im Bild korrekt darzustellen. Das Vorgehen hierzu ist u.a. im Kapitel Transformation beschrieben.

Zuordnung der Daten zu den Feldern in der Tabelle Collection

Ein Bereich im Kasten wird als “area” ausgewiesen. Dabei handelt es sich wiederum um eine “Collection” bzw. Sammlung die in der Hierarchie den Kasten als übergeordnete Sammlung hat. Es wird für diesen Bereich kein extra Bild bzw. Plan verwendet. Die Koordinaten beziehen sich auf den Plan der übergeordneten Sammlung.

  • Kennung des Bereichs im Insektenkasten → CollectionName
    • dieser muss innerhalb der Datenbank eindeutig sein, e.g. die Kennung des Kasten + die Art (+ Bereich falls die Art im Kasten mehrfach vorhanden ist)
  • ID des Insektenkastens → LocationParentID für die räumliche Zuordnung. Dies ist zwingend notwendig wenn Koordinaten für die Bereiche angegeben werden die sich auf das Bild (bzw. den Plan) des Insektenkastens beziehen.
  • ID der administrativen Sammlung → CollectionParentID (in diesem Beispiel “Coleoptera”)
  • Typ des Bilds → Type (= area)
  • Bereich im Bild → LocationGeometry
    • Diese muss wie oben beschrieben aus den Koordinaten zusammengesetzt und in das in der Datenbank verwendete Format gebracht werden:
    • geometry::STGeomFromText('POLYGON (( → Prefix
    • 20 80, 20 50, 100 50, 100 80, 20 80 ← Extrahiert aus Koordinaten
      • 20 + ' ' + 80 + ', ' + … ← Koordinaten
        • X-Koordinate + ’ ’ + Y-Koordinate von Punkt 1
        • ‘, '
        • X-Koordinate + ’ ’ + Y-Koordinate von Punkt 2
        • X-Koordinate + ’ ’ + Y-Koordinate von Punkt 1
    • ))', 0) → Postfix

Diagramm zu Bereichen

---
title: Diagram for dataflow from file to database
---
graph LR;
    CSV{<i class="fa-fw fas fa-file"></i><br>File}
    CollectionName[<i class="fa-fw fas fa-columns"></i> Column<br>*CollectionName*]
    LocationGeometry[<i class="fa-fw fas fa-columns"></i> Column<br>*LocationGeometry*]
    Type[<i class="fa-fw fas fa-columns"></i> Column<br>*Type*]
    Bereich(Naming of area)
    Typ(Typ of image <br> = area) --> Type
    Top(<i class="fa-fw fas fa-arrow-up"></i><br>Top)
    Bottom(<i class="fa-fw fas fa-arrow-down"></i><br>Bottom)
    Left(<i class="fa-fw fas fa-arrow-left"></i><br>Left)
    Right(<i class="fa-fw fas fa-arrow-right"></i><br>Right)
    Prefix(Prefix <br>= geometry::...)
    Postfix(Postfix<br>= #41;#41;', 0#41;)
    Collection[<i class="fa-fw fas fa-table"></i> Table<br>***Collection***]
    Punkt1(<i class="fa-fw fas fa-map-marker-alt"></i><br>Point 1<br><i class="fa-fw fas fa-arrow-right"></i>+<i class="fa-fw fas fa-arrow-up"></i><br>= **&urtri;**)
    Punkt2(<i class="fa-fw fas fa-map-marker-alt"></i><br>Point 2<br><i class="fa-fw fas fa-arrow-left"></i>+<i class="fa-fw fas fa-arrow-up"></i><br>= **&ultri;**)
    Punkt3(<i class="fa-fw fas fa-map-marker-alt"></i><br>Point 3<br><i class="fa-fw fas fa-arrow-left"></i>+<i class="fa-fw fas fa-arrow-down"></i><br>= **&lltri;**)
    Punkt4(<i class="fa-fw fas fa-map-marker-alt"></i><br>Point 4<br><i class="fa-fw fas fa-arrow-right"></i>+<i class="fa-fw fas fa-arrow-down"></i><br>= **#9727;**)
    Punkt5(<i class="fa-fw fas fa-map-marker-alt"></i><br>Point 5<br><i class="fa-fw fas fa-arrow-right"></i>+<i class="fa-fw fas fa-arrow-up"></i><br>= **&urtri;<br>&rarr;** Point 1)

    CSV --> Bereich
    Bereich --> CollectionName
    CSV --> Top
    CSV -->Bottom
    CSV --> Left
    CSV --> Right
    
    Top --> Punkt1
    Right --> Punkt1
    Top  --> Punkt2
    Left  --> Punkt2
    Bottom  --> Punkt3
    Left  --> Punkt3
    Right  --> Punkt4
    Bottom  --> Punkt4
    Top --> Punkt5
    Right --> Punkt5
    Punkt1 --> LocationGeometry
    Punkt2  --> LocationGeometry
    Punkt3  --> LocationGeometry
    Punkt4  --> LocationGeometry
    Punkt5 --> LocationGeometry

    Prefix --> Punkt1
    Postfix   --> Punkt5
    
    LocationGeometry --> Collection
    CollectionName --> Collection
    Type --> Collection

Video anhand der Beispieldaten: Areas import Video starten (Ausgangslage mit Sammlungshierarchie, Textdatei mit Koordinaten, Import von Daten in Collection, Schema, Verknüpfung mit administrativer Hierarchie, Übersetzung von Text in der Datei in ID, Konstruktion des Rechtecks für die Bereiche mit den Punktdaten aus der Datei, Pre- und Postfix, Test des Imports, Import der Daten, Darstellung in der Sammlungsverwaltung, Bezeichner der Bereiche in der Übersicht)

Arten

Als letzter Schritt werden die Informationen zu den Arten importiert und mit den zugeordneten Bereichen in der Sammlung verknüpft. Die Arten werden als CollectionSpecimen verwaltet und bestehen aus einem oder mehreren Teilen, den “Parts”. Jeder Teil kann einer Sammlung zugeodnet werden. Die “Sammlung” ist der oben definierte Bereich im Kasten. Wenn in einem Bereich mehrere Individuen sind, sollte man deren Anzahl als “Stock” mit eintragen. Die Zuordnung des taxonomischen Namens erfolgt in der Tabelle Identification, in der die Bestimmung des Taxon, d.h. der taxonomische Name mit dem Teil/Part des Specimens verknüpft wird.

Zuordnung der Daten zu den Tabellen und Feldern

  • CollectionSpecimen
    • Kennung des Bereichs im Insektenkasten → AccessionNumber
      • sollte innerhalb der Datenbank eindeutig sein.
  • CollectionSpecimenPart
    • ID des Bereichs im Insektenkasten → CollectionID
    • Typ des Materials → MaterialCategory (= pinned specimen)
    • Anzahl der Individuen → Stock
  • IdentificationUnit
    • Taxonomische Gruppe → TaxonomicGroup (e.g. = Coleptera)
  • Identification
    • Name des Taxons → TaxonomicName
  • IdentificationUnitInPart
    • SpecimenPartID aus CollectionSpecimenPart
    • IdentificationUnitID aus IdentificationUnit

Video anhand der Beispieldaten: Video starten (Ausgangslage in der Datenbank, Import der Specimen: Textdatei und Schema, Erläuterung des Schemas, Übersetzung des Namens des Bereichs in ID, Zusammensetzung der Belegnummer, Daten für Hierarchie, Bestimmung, Datawithholding, Stock; Test des Imports mit Erläuterung; Import; Darstellung der Specimendaten; Beispieldaten im Manual)

Erfassung von einzelnen Individuen

Nach dem Import können einzelne Individuen als separate Specimen wie oben dargestellt erfasst werden. Dazu kann man das Original kopieren und dann die neuen Informationen wie e.g. Fundort, Sammler etc. eintragen die in der Regel nur für einzelne Individuen verfügbar sind.

Verwaltung von Teilbereichen

Als weiteres Beispiel die Verwaltung einer Libellensammlung mit Ausweisung von Gesamtkästen und Bereichen innerhalb der Kästen.

Jeder Kasten entspricht einer Teilsammlung. Ebenso werden Bereiche innerhalb eines Kastens als Teilsammlung erfasst. Dies kann beispielsweise der Bereich einer bestimmten Art innerhalb des Kastens sein. Für die Kästen werden hierzu Bilder hinterlegt die als Pläne gespeichert werden. Dabei gibt es für jeden Kasten immer nur einen aktuell gültigen Plan. Die einzelnen Objekte innerhalb des Kastens werden oft nur in Ausnahmefällen, beispielsweise wenn ein Typ erfasst wird, als einzelnes Specimen erfasst. Ansonsten werden nur Angaben über die Anzahl der enthaltenen Objekte eingetragen.

Kastendigitalisierung - Einführung

Video: Video starten

  • Inhalt der Anleitung im Video:
    • Hierarchie für Verwaltung und Räumlichkeiten
    • Import der Kästen mit Wizard
    • Darstellung nach Import
    • Import des Inhalts mit Wizard
    • 2 Hierarchien
    • Bereiche innerhalb eines Kastens

Kastendigitalisierung - Bereich

Video: Video starten

  • Inhalt der Anleitung im Video:
    • Vorstellung der Beispieldaten
    • Einblenden des Sammlungsinhalts
    • Anlegung eines Breichs in Kasten
    • Verschieben des Inhalts
    • Markierung des Bereichs
    • Anlegung von Unterbereichen
    • Verschieben des Inhalts
    • Markierung der Unterbereiche
    • Ansicht im Hauptformular