GUC
Bereitstellung von Daten aus der DiversityWorkbench für die GUC
Anmelden
Beim Start des Programms müssen zunächst die Login Daten eingegeben werden.
Danach startet das Programm mit dem Hauptfenster.
Bereitstellung von Daten aus der DiversityWorkbench für die GUC
Beim Start des Programms müssen zunächst die Login Daten eingegeben werden.
Danach startet das Programm mit dem Hauptfenster.
Das Setup für das Programm liegt bereit unter:
For users that need more detailed information about the software including database design etc.
-- setting the timestamp
delete from [dbo].[Artcode_LastChange] where Tabelle = 'ArtcodeTemp'
TRUNCATE TABLE [dbo].[Artcode_ArtID];
INSERT INTO [dbo].[Artcode_ArtID](NameID)
select T.ID
FROM ArtcodeTemp AS T
where T.Art_ID IS NULL
-- Setting the Art_ID for missing names
UPDATE T SET T.Art_ID = '9P0#' + REPLICATE('0', 6 - LEN(CAST(A.ID AS varchar))) + CAST(A.ID AS varchar)
-- select T.Art_ID, '9P0#' + REPLICATE('0', 6 - LEN(CAST(A.ID AS varchar))) + CAST(A.ID AS varchar)
FROM ArtcodeTemp AS T INNER JOIN [Artcode_ArtID] A ON T.ID = A.NameId
WHERE T.Art_ID IS NULL
-- Setting the family
TRUNCATE TABLE [dbo].[Artcode_Family]
INSERT INTO [dbo].[Artcode_Family]
([NameID]
,[FamilyNameID]
,[Family])
SELECT
T_0.NameID,
CASE WHEN T_1.TaxonomicRank = 'fam.' THEN T_1.NameID
ELSE
CASE WHEN T_2.TaxonomicRank = 'fam.' AND T_2.IgnoreButKeepForReference = 0 THEN T_2.NameID
ELSE
CASE WHEN T_3.TaxonomicRank = 'fam.' AND T_3.IgnoreButKeepForReference = 0 AND H_2.IgnoreButKeepForReference = 0
THEN T_3.NameID ELSE
CASE WHEN T_4.TaxonomicRank = 'fam.' AND T_4.IgnoreButKeepForReference = 0 AND H_3.IgnoreButKeepForReference = 0
THEN T_4.NameID
ELSE NULL
END END END END AS FamilyNameID,
CASE WHEN T_1.TaxonomicRank = 'fam.' THEN T_1.GenusOrSupragenericName ELSE CASE WHEN T_2.TaxonomicRank = 'fam.' AND
T_2.IgnoreButKeepForReference = 0 THEN T_2.GenusOrSupragenericName ELSE CASE WHEN T_3.TaxonomicRank = 'fam.' AND
T_3.IgnoreButKeepForReference = 0 AND
H_2.IgnoreButKeepForReference = 0 THEN T_3.GenusOrSupragenericName ELSE CASE WHEN T_4.TaxonomicRank = 'fam.' AND
T_4.IgnoreButKeepForReference = 0 AND H_3.IgnoreButKeepForReference = 0 THEN T_4.GenusOrSupragenericName ELSE NULL
END END END END AS Family
FROM dbo.TaxonHierarchy AS H_3 INNER JOIN
dbo.TaxonName AS T_4 ON H_3.NameParentID = T_4.NameID AND H_3.ProjectID = 1128 RIGHT OUTER JOIN
dbo.TaxonName AS T_3 INNER JOIN
dbo.TaxonHierarchy AS H_2 ON T_3.NameID = H_2.NameParentID AND H_2.ProjectID = 1128 ON
H_3.NameID = T_3.NameID RIGHT OUTER JOIN
dbo.TaxonHierarchy AS H_1 INNER JOIN
dbo.TaxonName AS T_2 ON H_1.NameParentID = T_2.NameID AND H_1.ProjectID = 1128 RIGHT OUTER JOIN
dbo.TaxonHierarchy AS H_0 INNER JOIN
dbo.TaxonName AS T_0 ON H_0.NameID = T_0.NameID AND H_0.ProjectID = 1128 INNER JOIN
dbo.TaxonName AS T_1 ON H_0.NameParentID = T_1.NameID AND H_0.ProjectID = 1128 ON H_1.NameID = T_1.NameID AND H_1.ProjectID = 1128 ON
H_2.NameID = T_2.NameID AND H_2.ProjectID = 1128
-- family for synonyms
INSERT INTO [dbo].[Artcode_Family]
([NameID]
,[FamilyNameID]
,[Family])
SELECT S.NameID, F.FamilyNameID, F.Family
FROM [Artcode_Family] F
INNER JOIN dbo.TaxonSynonymy S ON S.SynNameID = F.NameID AND S.ProjectID = 1128
AND NOT EXISTS(SELECT * FROM [Artcode_Family] A WHERE A.NameID = S.NameID)
UPDATE T SET T.fam = UPPER(SUBSTRING(F.Family, 1, 3)), T.id_fam = AF.Art_ID
-- select T.fam, UPPER(SUBSTRING(F.Family, 1, 3)), T.id_fam, AF.Art_ID
FROM ArtcodeTemp AS T INNER JOIN Artcode_Family F ON T.ID = F.NameID
INNER JOIN ArtcodeTemp AS AF ON AF.ID = F.FamilyNameID
--Ausgabesperre, Statistiksperre, Eingabesperre, SAP
UPDATE T SET T.Ausgabesperre = NULL, T.Statistiksperre = NULL, T.Eingabesperre = NULL, T.saP = NULL
-- select T.Ausgabesperre, Statistiksperre, Eingabesperre, SAP
FROM ArtcodeTemp AS T WHERE T.Ausgabesperre = 0
-- setting the rank
UPDATE T SET T.rang = R.rang_id
-- select T.rang, R.rang_id
FROM ArtcodeTemp AS T INNER JOIN [dbo].[Artcode_Rang] R ON R.Code = T.TaxonomicRank
-- setting the rank for synonyms
UPDATE T SET T.rang = 'syn'
-- select T.rang, 'syn'
FROM ArtcodeTemp AS T INNER JOIN TaxonSynonymy S ON T.ID = S.NameID and S.ProjectID = 1128 --and (T.rang is null or T.rang = '')
-- setting the Art_ID_Gueltig for synonyms
UPDATE T SET T.Art_ID_Gueltig = A.Art_ID
-- select T.Art_ID, T.Art_ID_Gueltig, A.Art_ID
FROM ArtcodeTemp AS T INNER JOIN TaxonSynonymy S ON T.ID = S.NameID and S.ProjectID = 1128 AND T.Art_ID_Gueltig IS NULL
INNER JOIN ArtcodeTemp A ON S.SynNameID = A.ID
-- Eintrag Art_ID_Gueltig wo er fehlt
UPDATE A SET A.Art_ID_Gueltig = CASE WHEN E.ExternalNameURI IS NULL THEN NULL ELSE E.ExternalNameURI END
-- SELECT A.Art_ID_Gueltig, CASE WHEN E.ExternalNameURI IS NULL THEN NULL ELSE E.ExternalNameURI END AS Art_ID_Gueltig_E
FROM dbo.TaxonNameExternalID AS E INNER JOIN
dbo.TaxonName AS N ON E.NameID = N.NameID AND E.ExternalDatabaseID = 1003 AND (N.IgnoreButKeepForReference = 0)
INNER JOIN ArtcodeTemp AS A ON A.ID = N.NameID AND A.Art_ID_Gueltig IS NULL
-- setting the Autor_Pos
UPDATE T SET T.Autor_Pos = 1
-- select T.Autor_Pos, 1, T.rang, N.TaxonNameCache, N.TaxonomicRank, ar.DisplayOrder
FROM ArtcodeTemp AS T
inner join TaxonName N on T.id = N.NameID and N.SpeciesEpithet = N.InfraspecificEpithet and N.BasionymAuthors <> ''
inner join Artcode_Rang as AR on N.TaxonomicRank = ar.Code and ar.DisplayOrder < 170
-- setting the Autor_Pos
UPDATE T SET T.Autor_Pos = 2
-- select T.Autor_Pos, 2, T.rang, N.TaxonNameCache, N.TaxonomicRank, ar.DisplayOrder, T.Autor
FROM ArtcodeTemp AS T
inner join TaxonName N on T.id = N.NameID and N.SpeciesEpithet like 'x %' and N.BasionymAuthors <> ''
inner join Artcode_Rang as AR on N.TaxonomicRank = ar.Code and ar.DisplayOrder < 170
-- setting Verantwortung Bayerns
UPDATE T SET T.VeraB = A.AnalysisValue
FROM ArtcodeTemp AS T INNER JOIN [dbo].[TaxonNameListAnalysis] A ON T.ID = A.NameID AND A.AnalysisID = 5
-- setting Verantwortung Deutschlands
UPDATE T SET T.VeraD = A.AnalysisValue
FROM ArtcodeTemp AS T INNER JOIN [dbo].[TaxonNameListAnalysis] A ON T.ID = A.NameID AND A.AnalysisID = 4
-- setting Gefährdung nach Roter Liste Bayern 2003
UPDATE T SET T.RLB = A.AnalysisValue
-- select T.RLB, A.AnalysisValue
FROM ArtcodeTemp AS T INNER JOIN [dbo].[TaxonNameListAnalysis] A ON T.ID = A.NameID AND A.AnalysisID = 1
-- setting Gefährung nach Roter Liste Deutschland 2018
UPDATE T SET T.RLD = A.AnalysisValue
FROM ArtcodeTemp AS T INNER JOIN [dbo].[TaxonNameListAnalysis] A ON T.ID = A.NameID AND A.AnalysisID = 62
-- setting Schutzstatus in Bayern
UPDATE T SET T.Schutz_BNatSchG = case when A.AnalysisValue = '§§' then 's' else 'b' end
FROM ArtcodeTemp AS T INNER JOIN [dbo].[TaxonNameListAnalysis] A ON T.ID = A.NameID AND A.AnalysisID = 7
UPDATE T SET T.sensu = N.NonNomenclaturalNameSuffix
-- select T.sensu, N.NonNomenclaturalNameSuffix
FROM ArtcodeTemp AS T INNER JOIN [TaxonName] N ON T.ID = N.NameID and N.NonNomenclaturalNameSuffix <> ''
-- setting Schutzstatus in Bayern
UPDATE T SET T.Schutz_BNatSchG = case when A.AnalysisValue = '§§' then 's' else 'b' end
FROM ArtcodeTemp AS T INNER JOIN [dbo].[TaxonNameListAnalysis] A ON T.ID = A.NameID AND A.AnalysisID = 7
-- setting id_agg
UPDATE T SET T.id_agg = case when P.Art_ID_Gueltig is null then P.Art_ID else P.Art_ID_Gueltig end
-- select T.id_agg, case when P.Art_ID_Gueltig is null then P.Art_ID else P.Art_ID_Gueltig end
FROM ArtcodeTemp AS T INNER JOIN [dbo].[TaxonHierarchy] H ON T.ID = H.NameID AND H.ProjectID = 1128
inner join ArtcodeTemp P on H.NameParentID = P.ID
inner join dbo.TaxonAcceptedName A on T.id = A.NameID and A.ProjectID = 1128
-- setting id_agg for not accepted names
UPDATE T SET T.id_agg = case when P.Art_ID_Gueltig is null then P.Art_ID else P.Art_ID_Gueltig end
-- select T.id_agg, case when P.Art_ID_Gueltig is null then P.Art_ID else P.Art_ID_Gueltig end
FROM ArtcodeTemp AS T INNER JOIN [dbo].[TaxonHierarchy] H ON T.ID = H.NameID AND H.ProjectID = 1128
inner join ArtcodeTemp P on H.NameParentID = P.ID
WHERE T.id_agg IS NULL OR T.id_agg = ''
-- setting id_agg for not synynyms missing a hierarchy
UPDATE T SET T.id_agg = case when P.Art_ID_Gueltig is null then P.Art_ID else P.Art_ID_Gueltig end
-- select T.id_agg, case when P.Art_ID_Gueltig is null then P.Art_ID else P.Art_ID_Gueltig end
FROM ArtcodeTemp AS T
INNER JOIN [dbo].[TaxonSynonymy] S ON S.NameID = T.ID AND S.ProjectID = 1128
INNER JOIN [dbo].[TaxonHierarchy] H ON S.SynNameID = H.NameID AND H.ProjectID = 1128
inner join ArtcodeTemp P on H.NameParentID = P.ID
WHERE T.id_agg IS NULL OR T.id_agg = ''
-- setting BOLD_ID
UPDATE T SET T.BOLD_ID = E.ExternalNameURI
FROM ArtcodeTemp AS T INNER JOIN [dbo].[TaxonNameExternalID] E ON T.ID = E.NameID and E.ExternalDatabaseID = 1010
-- setting Bayernstatus
UPDATE T SET T.staby = B.staby
FROM ArtcodeTemp AS T INNER JOIN [dbo].[TaxonNameListAnalysis] A ON T.ID = A.NameID AND A.AnalysisID = 2
INNER JOIN [dbo].[Artcode_Bayernstatus] B ON B.[AnalysisValue] = A.AnalysisValue
INSERT INTO [dbo].[Artcode_LastChange] ([Tabelle])
VALUES ('ArtcodeTemp')
-- setting the timestamp
delete from [dbo].[Artcode_LastChange] where Tabelle = 'Artcode'
TRUNCATE TABLE [dbo].[Artcode]
INSERT INTO Artcode
(Ordnung, Art_ID, Synonym, Art_ID_Gueltig, Gattung, Art, Autor, Autor_Pos, Name_Deutsch, RLB, RLD, FFH_Anh2, FFH_Anh4, FFH_Anh5, VSR_Anh1, Status_IUCN, Schutz_BNatSchG, Ausgabesperre, Statistiksperre,
Eingabesperre, saP, saP_ABC, saP_BC, saP_ZR, rang, sensu, id_agg, staby, VeraB, VeraD, WnASA, EUBrd, BASVO, BOLD_ID, NAME_DG, fam, id_fam, pruefung, ID)
SELECT Ordnung, Art_ID, Synonym, Art_ID_Gueltig, Gattung, Art, Autor, Autor_Pos, Name_Deutsch, RLB, RLD, FFH_Anh2, FFH_Anh4, FFH_Anh5, VSR_Anh1, Status_IUCN, Schutz_BNatSchG, Ausgabesperre, Statistiksperre,
Eingabesperre, saP, saP_ABC, saP_BC, saP_ZR, rang, sensu, id_agg, staby, VeraB, VeraD, WnASA, EUBrd, BASVO, BOLD_ID, NAME_DG, fam, id_fam, pruefung, ID
FROM ArtcodeTemp
INSERT INTO [dbo].[Artcode_LastChange] ([Tabelle])
VALUES ('Artcode')Nach einem Click auf den Button Export Artcode im Hauptformular öffnet sich ein Fenster wie unten dargestellt.
Mit den Buttons kann man den Inhalt der ausgewählten Tabellen nach jedem Schritt überprüfen.
graph TD;
DTN[<i class="fa-fw fas fa-database"></i> Taxa in DiversityTaxonNames_Plants] -->GUC_TransferTaxa(<i class="fa-fw fas fa-arrow-alt-circle-down"></i> Prozedur GUC_TransferTaxa:<br>Transfer der Daten) --> GUC[<i class="fa-fw fas fa-database"></i> Taxon Tabellen in DiversityCollectionCacheGUC]
GUC -->GUC_Artcode
GUC_Artcode(<i class="fa-fw fas fa-arrow-alt-circle-down"></i> Procedur GUC_Artcode:<br>Transfer aus den Taxon Tabellen in ArtcodeTemp<br><i class="fa-fw fas fa-eye"></i> GUC_ArtcodeTemp<br><i class="fa-fw fas fa-long-arrow-alt-down"></i> <br><i class="fa-fw fas fa-table"></i> ArtcodeTemp)
GUC_Artcode--> ArtcodeTemp[<i class="fa-fw fas fa-table"></i> ArtcodeTemp]
ArtcodeTemp --> GUC_AnpassungArtcodeTemp( <i class="fa-fw fas fa-edit"></i> Prozedur GUC_AnpassungArtcodeTemp:<br>Überarbeitung der Daten in Tabelle ArtcodeTemp<br><i class="fa-fw fas fa-caret-right"></i> Eintrag Art_ID = NameID bei neuen Namen<br><i class="fa-fw fas fa-caret-right"></i> Eintrag Familie<br><i class="fa-fw fas fa-caret-right"></i> Eintrag rang<br><i class="fa-fw fas fa-caret-right"></i> ...)
GUC_AnpassungArtcodeTemp --> Artcode[<i class="fa-fw fas fa-table"></i> Artcode]
Artcode --> SQLite[<i class="fa-fw fas fa-database"></i> SQLite]
Mit einem Click auf den Button Ordner kann man das Verzeichnis in dem die SQLite Datenbank gespeichert ist öffnen. Mit einem geeigneten Tool kann man diese dann öffnen. Die Software selbst stellt hierfür keine Option bereit. Beim Versuch die Datenbank aus dem Programm heraus zu öffnen wird ein entsprechender Fehler angezeigt.
Vor dem Export für GUC müssen die Daten der hierfür relevanten Projekte in der DiversityCollectionCache_BayernFlora aktualisiert werden.
Vor dem Export für GUC müssen die Daten in der Tabelle Artcode aktualisiert werden.
Mit einem Click auf den Button wird die Prozedur TransferToGUC (s. unten) gestartet. Diese Überträgt die Daten aus der Datenbank DiversityCollectionCache_BayernFlora in Abhängigkeit der ausgewählten Optionen in die Tabellen der Datenbank DiversityCollectionCacheGUC und bereitet diese für den Export auf.
---
title: PROCEDURE TransferToGUC
---
graph TD;
1{ } -->|1| Clear[Clear the export tables]
1 -->|2| Status[Tabelle <br><u>_Status</u><br> füllen]
1 --> |3|Identification[Tabelle <br>_Identification<br> füllen]
1 --> |4|FehlendeTaxa[Daten ohne Code aus <br>_Identification<br> entfernen]
1 --> |5|NACHWEIS[Tabelle <br>NACHWEIS<br> füllen]
FehlendeTaxa --> Identification
Identification --> NACHWEIS
Status --> EintragStatus
NACHWEIS --> Jahresangaben(In NACHWEIS Entfernen der Daten ohne Jahresangaben)
Jahresangaben --> EintragStatus(In NACHWEIS Eintrag des Status)
EintragStatus --> Quellentyp(In NACHWEIS Eintrag des Quellentyp)
Quellentyp --> verbleib_nachname(In NACHWEIS verbleib_nachname eintragen)
verbleib_nachname --> Projekt(In NACHWEIS Projekt eintragen)
Projekt --> VERORTUNG_PUNKT_WKT(In NACHWEIS VERORTUNG_PUNKT_WKT eintragen)
VERORTUNG_PUNKT_WKT --> status_code_lfu(In NACHWEIS status_code_lfu eintragen)
1 --> |6|FUNDORT[Tabelle <br>FUNDORT<br> füllen]
FUNDORT --> TK(In FUNDORT TK eintragen)
TK --> TOPONYM(In FUNDORT TOPONYM eintragen)
TOPONYM --> Hoehe(In FUNDORT Hoehe eintragen)
Hoehe --> LEBENSRAUM(In FUNDORT LEBENSRAUM eintragen)
LEBENSRAUM --> WGS84(In FUNDORT WGS84 eintragen)
WGS84 --> NATURRAUM(In FUNDORT NATURRAUM eintragen)
NATURRAUM --> Landkreis(In FUNDORT Landkreis eintragen)
Landkreis --> naturraum_code_lfu(In FUNDORT naturraum_code_lfu eintragen)
naturraum_code_lfu --> landkreis_code_lfu(In FUNDORT landkreis_code_lfu eintragen)
1 --> |7|SAMMLER[Tabelle <br>SAMMLER<br> fuellen]
Der Zeitbedarf sowie die Zahl der betroffenen Datensätze wird im Log angezeigt
Um die Daten als SQLite zu exportieren einfach auf den Export nach SQLite Button clicken.
Nach einem Click auf den Button TK25 öffnet sich ein Fenster wie unten dargestellt.
Ein Click auf den Button startet die Prozedur TK25.TransferToQuadrant mit den ausgewählten Parameter für das Jahr und den tax. Rang. Diese Prozedur füllt die Tabelle TK25.Quadrant und TK25.Identification.
---
title: PROCEDURE TransferToQuadrant
---
graph TD;
Clear[Clear the export tables] --> Identification[Insert the taxa in table<br><u>Identification</u>]
Identification --> former(Remove the former identifications in table Identification)
former --> year(Remove those before the given year in table Identification)
year --> accepted(Set the synonyms to the accepted names in table Identification)
accepted --> higher(Setting the higher taxa in table Identification)
Identification --> Quadrant[Fill table <br><u>Quadrant</u>]
Um die Daten als Textdatei zu exportieren auf den Export Button clicken. Dadurch wird im Projektverzeichnis eine Datei mit dem Name TK25export.txt erstellt.