GOV/Qualitätskontrolle: Unterschied zwischen den Versionen

aus wiki, dem genealogischen Lexikon zum Mitmachen.
Zur Navigation springen Zur Suche springen
 
(71 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
== Fehlersuche mit Taxo 2 Map==
[[GOV|GOV-Hauptseite]] > [[GOV/Projekt]] > '''Qualitätskontrolle'''
[[Bild:t2m_Logo.jpg]]


Das Programm Taxo 2 Map erlaubt eine sehr schnelle und effiziente grafische Kontrolle aller Orte, bei denen geografische Koordinaten angegeben wurden. Das Programm zeigt alle Orte auf Karten an. Dabei können aus einer Liste verschiedene Landkreise oder Regierungsbezirke aktiviert werden.
{{Projektbox GOV}}


Eine Erläuterung der Vorgehensweise ist im [[Media:Kurzbeschreibung_Taxo2Map.pdf|PDF-Dokument]] zu finden.
== Fehlersuche in Datenbank ==


Taxo 2 Map ist keine kostenlose Software, eine Lizenz kann aber über den Verein für Computergenealogie für GOV-Mitarbeiter erworben werden.
=== Objekte ohne Namen ===
Vielfach werden in GOV Kindobjekte aufgelistet, die keinen Namen haben und die damit auch nicht als Objekt editierbar oder löschbar sind. Diese Objekte sollten über einen Suchmechanismus gefunden werden können und dann gelöscht werden.
<source lang="sql">SELECT o.textual_id FROM gov_item o
  LEFT JOIN property n ON n.gov_object=o.id AND n.type=1
  WHERE o.deleted=0 AND o.item_class='o' AND n.id IS NULL;</source>


* 2018-03-14 kein Eintrag
* 2019-09-15 12 Einträge


===Installation Taxo 2 Map-Viewer===
=== Objekte ohne Typ ===
<source lang="sql">SELECT o.textual_id FROM gov_item o
  LEFT JOIN property t ON t.gov_object=o.id AND t.type=2
  WHERE o.deleted=0 AND o.item_class='o' AND t.id IS NULL;</source>


* 2018-03-14 keine Einträge
* 2019-09-15 6 Einträge


Bitte laden Sie erst die folgende Installations- und Bedienungsanleitung für GOV-Bearbeiter herunter und folgen Sie für die Installation und den ersten Schritten in Taxo 2 Map-Viewer dieser Anleitung.
=== Kirchen ohne Standort ===
<source lang="sql">SELECT o.textual_id FROM gov_item o, property t
LEFT JOIN relation r ON r.child=t.gov_object AND r.type=2
WHERE t.type=2 AND t.type_object=26
  AND o.id=t.gov_object AND r.parent IS NULL;</source>


[http://www.genealogy.net/privat/taxo2map/Installations_und_Bedienungsanleitung_GOV_Bearbeiter.pdf Installations- und Bedienungsanleitung für GOV-Bearbeiter]
* 2012-05-13  13.876 Einträge
* 2019-09-15  9.961 Einträge


Fragen bitte an den [mailto:t2m_support@taxo2map.com Support] richten.
Eingeschränkt auf eine Landeskirche oder einen Kirchenkreis (hier 172369=Oppeln):
<source lang="sql">SELECT church.textual_id
FROM relation_index, gov_item church, property t
LEFT JOIN relation r ON r.child=t.gov_object AND r.type=2
WHERE relation_index.parent =172369
  AND church.id=relation_index.child
  AND t.gov_object=relation_index.child
  AND t.type=2 AND type_object=26
  AND r.parent IS NULL;</source>


====Taxo 2 Map-Viewer====
=== Kirchspiele ohne Kirche ===
Relevante Objekt-Typen:
* 29 (Kirchspiel)
* 42 (Pfarrei)
* 81 (Kloster)
* 92 (Kirchengemeinde)


* [http://www.genealogy.net/privat/taxo2map/taxo2map_viewer.exe Installationssatz]
<source lang="sql">SELECT o.textual_id FROM gov_item o, property t
  LEFT JOIN relation r ON r.parent=t.gov_object AND r.type=3
  WHERE t.type=2 and t.type_object IN (29,92,42,81)
    AND o.id=t.gov_object and r.child IS NULL;</source>


----
* 2019-09-15  5.413 Einträge


====Kartenmaterial====
=== Religiöse Objekte ohne Konfession ===
Relevante Objekt-Typen:
* 26 (Kirche)
* 29 (Kirchspiel)
* 42 (Pfarrei)
* 81 (Kloster)
* 92 (Kirchengemeinde)


''Bitte beachten, das die Karten beim Herunterladen als Dateityp "guf-Dokument" oder "alle Dateien" und nicht etwa als "Textdateien" gespeichert werden!''
<source lang="sql">SELECT o.textual_id FROM gov_item o, property t
    LEFT JOIN property k ON k.gov_object=t.gov_object AND k.type=7
    WHERE t.type=2 and t.type_object IN (26,29,92,42,81)
      AND o.id=t.gov_object AND k.id IS NULL;</source>


* [http://www.genealogy.net/privat/taxo2map/maps_user/100003103_Europe_small.guf Europa]
* 2012-05-13  1.133 Einträge
* [http://www.genealogy.net/privat/taxo2map/maps_user/100021142_Germany.guf Deutschland]
* 2019-09-15  1.306 Einträge
* [http://www.genealogy.net/privat/taxo2map/maps_user/100021159_Austria.guf Österreich]
* [http://www.genealogy.net/privat/taxo2map/maps_user/100021160_Czech_Republic.guf Tschechische Republik]
* [http://www.genealogy.net/privat/taxo2map/maps_user/100021161_Benelux.guf Benelux]
* [http://www.genealogy.net/privat/taxo2map/maps_user/100021162_Denmark.guf Dänemark]
* [http://www.genealogy.net/privat/taxo2map/maps_user/100021163_France.guf Frankreich]
* [http://www.genealogy.net/privat/taxo2map/maps_user/100021164_Italian_Republic.guf Italien]
* [http://www.genealogy.net/privat/taxo2map/maps_user/100021165_Republic_of_Poland.guf Polen]
* [http://www.genealogy.net/privat/taxo2map/maps_user/100021166_Romania.guf Rumänien]


----
=== Orte und Ortsteile mit falscher PLZ  ===


====GOV-Daten (Stand 18.05.2006)====
* Länge der PLZ = 1 (z.B. nur "O" oder "W")
* kein Jahr bis bei PLZ die mit "O" oder "W" beginnt
* in DE: Länge PLZ = 4


Die Daten sind komplett oder gruppiert nach Land und erster administrativer Einheit. "OHNE" bedeutet, es ist kein Land bzw. keine erste administrative Einheit zugeordnet. Erste administrative Einheit steht dabei Bundesland, Kanton, Bundesstaat usw..
=== Orte und Koordinaten im übergeordneten Objekt ===
* Orte in einem Bundesland/Regierungsbezirk, die keine Koordinaten haben
<source lang="sql">SELECT c.textual_id, p.textual_id
  FROM property, type, gov_item p, gov_item c, relation_index
  WHERE parent = p.id AND child=c.id
  AND p.textual_id='adm_369130'    # Kennung des übergeordneten Objekts
  AND property.gov_object=c.id
  AND property.type=2
  AND type.id=type_object
  AND type.has_position=1        # Typ muß eine Position erlauben
  AND c.deleted=0                # nicht gelöscht
  AND type_object<>18            # keine Gemeinde
  AND (c.latitude is null OR c.latitude=0);  # keine Position angegeben</source>


''(eventuell funktionieren noch nicht alle der folgenden Links, dann wird die Datei gerade bereitgestellt, bitte später nochmals probieren)''
* Orte die identische Koordinaten in einem Bundesland/Regierungsbezirk haben


''Bitte beachten, das die GOV-Daten beim Herunterladen als Dateityp "t2m-Dokument" oder "alle Dateien" und nicht etwa als "Textdateien" gespeichert werden!''
=== Orte ohne Koordinate ===
Gelöschte Objekte und solche mit einem Typ, der keine Position zulässt, dürfen nicht mitgezählt werden.
<source lang="sql">SELECT count(distinct textual_id) FROM gov_item i
    JOIN property p ON  i.id=p.gov_object AND p.type=2
    JOIN Type t ON t.id=type_object
    WHERE item_class='o' AND deleted=0 and (latitude is null or latitude=0) and has_position=1 AND type_object<>18;</source>


* 2012-05-13    38.355 Einträge
* 2019-09-15  36.506 Einträge


'''Länder komplett'''
=== Gelöschte Objekte mit Kindern ===
Ein gelöschtes Objekt darf nie als Elternobjekt eingetragen sein.
<source lang="sql">SELECT DISTINCT textual_id
  FROM gov_item p, relation r
  WHERE p.deleted =1 AND parent =p.id;</source>


* [http://www.genealogy.net/privat/taxo2map/lists/Belgien_komplett_Taxo2Map.t2m Belgien (3255)]
* 2012-05-13 keine Einträge
* [http://www.genealogy.net/privat/taxo2map/lists/Daenemark_komplett_Taxo2Map.t2m Dänemark (864)]
* 2019-09-05 keine Einträge
* [http://www.genealogy.net/privat/taxo2map/lists/Deutsche_Demokratische_Republik_komplett_Taxo2Map.t2m Deutsche Demokratische Republik (28)]
* [http://www.genealogy.net/privat/taxo2map/lists/Deutsches_Reich_komplett_Taxo2Map.t2m Deutsches Reich (2)]
* [http://www.genealogy.net/privat/taxo2map/lists/Deutschland_komplett_Taxo2Map.t2m Deutschland (107601)]
* [http://www.genealogy.net/privat/taxo2map/lists/Italien_komplett_Taxo2Map.t2m Italien (2)]
* [http://www.genealogy.net/privat/taxo2map/lists/Litauen_komplett_Taxo2Map.t2m Litauen (691)]
* [http://www.genealogy.net/privat/taxo2map/lists/Niederlande_komplett_Taxo2Map.t2m Niederlande (10641)]
* [http://www.genealogy.net/privat/taxo2map/lists/Oesterreich_komplett_Taxo2Map.t2m Österreich (26551)]
* [http://www.genealogy.net/privat/taxo2map/lists/Rumaenien_komplett_Taxo2Map.t2m Rumänien (1197)]
* [http://www.genealogy.net/privat/taxo2map/lists/Russische_Foederation_komplett_Taxo2Map.t2m Russische Föderation (48)]
* [http://www.genealogy.net/privat/taxo2map/lists/Schweiz_komplett_Taxo2Map.t2m Schweiz (1586)]
* [http://www.genealogy.net/privat/taxo2map/lists/Ukraine_komplett_Taxo2Map.t2m Ukraine (11)]


auch nicht im relationenindex:
<source lang="sql">SELECT DISTINCT textual_id
  FROM gov_item, relation_index
  WHERE deleted = 1 AND parent=gov_item.id;</source>


'''Länder, gruppiert nach erster administrativer Einheit'''
* 2012-05-13  keine Einträge
* 2019-09-05  85 Einträge


=== Gelöschte Objekte als Kind ===
Ein gelöschtes Objekt darf nicht als Kindobjekt eingetragen sein.
<source lang="sql">SELECT DISTINCT textual_id
  FROM gov_item p, relation r
  WHERE p.deleted =1 AND child =p.id;</source>


'''''OHNE (keine Zuordnung eines Landes)'''''
* 2019-09-15 24 Einträge


* [http://www.genealogy.net/privat/taxo2map/lists/OHNE_Bischheim_Taxo2Map.t2m Bischheim (2)]
auch nicht im relationenindex:
* [http://www.genealogy.net/privat/taxo2map/lists/OHNE_Clervaux_Taxo2Map.t2m Clervaux (1)]
<source lang="sql">SELECT DISTINCT textual_id
* [http://www.genealogy.net/privat/taxo2map/lists/OHNE_Diekirch_Taxo2Map.t2m Diekirch (3)]
  FROM gov_item, relation_index
* [http://www.genealogy.net/privat/taxo2map/lists/OHNE_Echternach_Taxo2Map.t2m Echternach (1)]
  WHERE deleted = 1 AND child=gov_item.id;</source>
* [http://www.genealogy.net/privat/taxo2map/lists/OHNE_Esch_Taxo2Map.t2m Esch (8)]
* [http://www.genealogy.net/privat/taxo2map/lists/OHNE_Grevenmacher_Taxo2Map.t2m Grevenmacher (1)]
* [http://www.genealogy.net/privat/taxo2map/lists/OHNE_Niederschlesien_Taxo2Map.t2m Niederschlesien (2)]
* [http://www.genealogy.net/privat/taxo2map/lists/OHNE_Ostpreussen_Taxo2Map.t2m Ostpreußen (5717)]
* [http://www.genealogy.net/privat/taxo2map/lists/OHNE_Pommern_Taxo2Map.t2m Pommern (5281)]
* [http://www.genealogy.net/privat/taxo2map/lists/OHNE_Posen_Taxo2Map.t2m Posen (2)]
* [http://www.genealogy.net/privat/taxo2map/lists/OHNE_Sachsen_Taxo2Map.t2m Sachsen (1)]
* [http://www.genealogy.net/privat/taxo2map/lists/OHNE_Schlesien_Taxo2Map.t2m Schlesien (6)]
* [http://www.genealogy.net/privat/taxo2map/lists/OHNE_Wiltz_Taxo2Map.t2m Wiltz (2)]


'''''Belgien'''''
* 2019-09-15  72 Einträge


* [http://www.genealogy.net/privat/taxo2map/lists/Belgien_OHNE_Taxo2Map.t2m OHNE (21)]
=== Orte an den Rändern von Einheiten ===
* [http://www.genealogy.net/privat/taxo2map/lists/Belgien_Antwerpen_Taxo2Map.t2m Antwerpen (192)]
im Norden:
* [http://www.genealogy.net/privat/taxo2map/lists/Belgien_Brabant_Wallon_Taxo2Map.t2m Brabant Wallon (137)]
<source lang="sql"> SELECT c.* FROM gov_item i JOIN relation_index ON relation_index.parent=i.id JOIN gov_item c ON relation_index.child=c.id
* [http://www.genealogy.net/privat/taxo2map/lists/Belgien_Hainaut_Taxo2Map.t2m Hainaut (429)]
  WHERE c.latitude IS NOT NULL
* [http://www.genealogy.net/privat/taxo2map/lists/Belgien_Liege_Taxo2Map.t2m Liège (559)]
    AND i.textual_id='OBJEKTKENNUNG' ORDER BY c.latitude DESC LIMIT 1;</source>
* [http://www.genealogy.net/privat/taxo2map/lists/Belgien_Limburg_Taxo2Map.t2m Limburg (253)]
im Süden:
* [http://www.genealogy.net/privat/taxo2map/lists/Belgien_Luxembourg_Taxo2Map.t2m Luxembourg (284)]
<source lang="sql"> SELECT c.* FROM gov_item i JOIN relation_index ON relation_index.parent=i.id JOIN gov_item c ON relation_index.child=c.id
* [http://www.genealogy.net/privat/taxo2map/lists/Belgien_Namur_Taxo2Map.t2m Namur (413)]
  WHERE c.latitude IS NOT NULL
* [http://www.genealogy.net/privat/taxo2map/lists/Belgien_Oost_Vlaanderen_Taxo2Map.t2m Oost-Vlaanderen (366)]
    AND i.textual_id='OBJEKTKENNUNG' ORDER BY c.latitude ASC LIMIT 1;</source>
* [http://www.genealogy.net/privat/taxo2map/lists/Belgien_Vlaams_Brabant_Taxo2Map.t2m Vlaams Brabant (297)]
im Westen:
* [http://www.genealogy.net/privat/taxo2map/lists/Belgien_West_Vlaanderen_Taxo2Map.t2m West-Vlaanderen (304)]
<source lang="sql"> SELECT c.* FROM gov_item i JOIN relation_index ON relation_index.parent=i.id JOIN gov_item c ON relation_index.child=c.id
 
  WHERE c.latitude IS NOT NULL
'''''Dänemark'''''
    AND i.textual_id='OBJEKTKENNUNG' ORDER BY c.longitude ASC LIMIT 1;</source>
 
im Osten:
* [http://www.genealogy.net/privat/taxo2map/lists/Daenemark_OHNE_Taxo2Map.t2m OHNE (864)]
<source lang="sql"> SELECT c.* FROM gov_item i JOIN relation_index ON relation_index.parent=i.id JOIN gov_item c ON relation_index.child=c.id
 
  WHERE c.latitude IS NOT NULL
'''''Deutsche Demokratische Republik'''''
    AND i.textual_id='OBJEKTKENNUNG' ORDER BY c.longitude DESC LIMIT 1;</source>
 
* [http://www.genealogy.net/privat/taxo2map/lists/Deutsche_Demokratische_Republik_OHNE_Taxo2Map.t2m OHNE (21)]
* [http://www.genealogy.net/privat/taxo2map/lists/Deutsche_Demokratische_Republik_Brandenburg_Taxo2Map.t2m Brandenburg (1)]
* [http://www.genealogy.net/privat/taxo2map/lists/Deutsche_Demokratische_Republik_Mecklenburg_Vorpommern_Taxo2Map.t2m Mecklenburg-Vorpommern (6)]
 
'''''Deutsches Reich'''''
 
* [http://www.genealogy.net/privat/taxo2map/lists/Deutsches_Reich_OHNE_Taxo2Map.t2m OHNE (2)]
 
'''''Deutschland'''''
 
* [http://www.genealogy.net/privat/taxo2map/lists/Deutschland_Baden_Wuerttemberg_Taxo2Map.t2m Baden-Württemberg (10171)]
* [http://www.genealogy.net/privat/taxo2map/lists/Deutschland_Bayern_Taxo2Map.t2m Bayern (35002)]
* [http://www.genealogy.net/privat/taxo2map/lists/Deutschland_Berlin_Taxo2Map.t2m Berlin (144)]
* [http://www.genealogy.net/privat/taxo2map/lists/Deutschland_Brandenburg_Taxo2Map.t2m Brandenburg (3090)]
* [http://www.genealogy.net/privat/taxo2map/lists/Deutschland_Bremen_Taxo2Map.t2m Bremen (100)]
* [http://www.genealogy.net/privat/taxo2map/lists/Deutschland_Hamburg_Taxo2Map.t2m Hamburg (16)]
* [http://www.genealogy.net/privat/taxo2map/lists/Deutschland_Hessen_Taxo2Map.t2m Hessen (2258)]
* [http://www.genealogy.net/privat/taxo2map/lists/Deutschland_Mecklenburg_Vorpommern_Taxo2Map.t2m Mecklenburg-Vorpommern (3017)]
* [http://www.genealogy.net/privat/taxo2map/lists/Deutschland_Niedersachsen_Taxo2Map.t2m Niedersachsen (11370)]
* [http://www.genealogy.net/privat/taxo2map/lists/Deutschland_Nordrhein_Westfalen_Taxo2Map.t2m Nordrhein-Westfalen (25002)]
* [http://www.genealogy.net/privat/taxo2map/lists/Deutschland_Rheinland_Pfalz_Taxo2Map.t2m Rheinland-Pfalz (4853)]
* [http://www.genealogy.net/privat/taxo2map/lists/Deutschland_Saarland_Taxo2Map.t2m Saarland (70)]
* [http://www.genealogy.net/privat/taxo2map/lists/Deutschland_Sachsen_Taxo2Map.t2m Sachsen (3594)]
* [http://www.genealogy.net/privat/taxo2map/lists/Deutschland_Schleswig_Holstein_Taxo2Map.t2m Schleswig-Holstein (7015)]
* [http://www.genealogy.net/privat/taxo2map/lists/Deutschland_Thueringen_Taxo2Map.t2m Thüringen (1899)]
 
'''''Italien'''''
 
* [http://www.genealogy.net/privat/taxo2map/lists/Italien_OHNE_Taxo2Map.t2m OHNE (1)]
* [http://www.genealogy.net/privat/taxo2map/lists/Italien_Bozen_Taxo2Map.t2m Bozen (1)]
 
'''''Litauen'''''
 
* [http://www.genealogy.net/privat/taxo2map/lists/Litauen_OHNE_Taxo2Map.t2m OHNE (335)]
* [http://www.genealogy.net/privat/taxo2map/lists/Litauen_Ostpreussen_Taxo2Map.t2m Ostpreußen (356)]
 
'''''Niederlande'''''
 
* [http://www.genealogy.net/privat/taxo2map/lists/Niederlande_OHNE_Taxo2Map.t2m OHNE (8)]
* [http://www.genealogy.net/privat/taxo2map/lists/Niederlande_Brabant_Taxo2Map.t2m Brabant (2139)]
* [http://www.genealogy.net/privat/taxo2map/lists/Niederlande_Drent_Taxo2Map.t2m Drent (826)]
* [http://www.genealogy.net/privat/taxo2map/lists/Niederlande_Flevoland_Taxo2Map.t2m Flevoland (59)]
* [http://www.genealogy.net/privat/taxo2map/lists/Niederlande_Friesland_Taxo2Map.t2m Friesland (1106)]
* [http://www.genealogy.net/privat/taxo2map/lists/Niederlande_Gelderland_Taxo2Map.t2m Gelderland (1378)]
* [http://www.genealogy.net/privat/taxo2map/lists/Niederlande_Groningen_Taxo2Map.t2m Groningen (804)]
* [http://www.genealogy.net/privat/taxo2map/lists/Niederlande_Limburg_Taxo2Map.t2m Limburg (1036)]
* [http://www.genealogy.net/privat/taxo2map/lists/Niederlande_Nord_Holland_Taxo2Map.t2m Nord-Holland (751)]
* [http://www.genealogy.net/privat/taxo2map/lists/Niederlande_Overijssel_Taxo2Map.t2m Overijssel (825)]
* [http://www.genealogy.net/privat/taxo2map/lists/Niederlande_Seeland_Taxo2Map.t2m Seeland (483)]
* [http://www.genealogy.net/privat/taxo2map/lists/Niederlande_Suedholland_Taxo2Map.t2m Südholland (828)]
* [http://www.genealogy.net/privat/taxo2map/lists/Niederlande_Utrecht_Taxo2Map.t2m Utrecht (398)]
 
'''''Österreich'''''
 
* [http://www.genealogy.net/privat/taxo2map/lists/Oesterreich_Burgenland_Taxo2Map.t2m Burgenland (506)]
* [http://www.genealogy.net/privat/taxo2map/lists/Oesterreich_Kaernten_Taxo2Map.t2m Kärnten (2789)]
* [http://www.genealogy.net/privat/taxo2map/lists/Oesterreich_Niederoesterreich_Taxo2Map.t2m Niederösterreich (6468)]
* [http://www.genealogy.net/privat/taxo2map/lists/Oesterreich_Oberoesterreich_Taxo2Map.t2m Oberösterreich (7290)]
* [http://www.genealogy.net/privat/taxo2map/lists/Oesterreich_Salzburg_Taxo2Map.t2m Salzburg (1625)]
* [http://www.genealogy.net/privat/taxo2map/lists/Oesterreich_Steiermark_Taxo2Map.t2m Steiermark (4855)]
* [http://www.genealogy.net/privat/taxo2map/lists/Oesterreich_Tirol_Taxo2Map.t2m Tirol (2838)]
* [http://www.genealogy.net/privat/taxo2map/lists/Oesterreich_Vorarlberg_Taxo2Map.t2m Vorarlberg (162)]
* [http://www.genealogy.net/privat/taxo2map/lists/Oesterreich_Wien_Taxo2Map.t2m Wien (18)]
 
'''''Rumänien'''''
 
* [http://www.genealogy.net/privat/taxo2map/lists/Rumaenien_OHNE_Taxo2Map.t2m OHNE (1197)]
 
'''''Russische Föderation'''''
 
* [http://www.genealogy.net/privat/taxo2map/lists/Russische_Foederation_OHNE_Taxo2Map.t2m OHNE (1)]
* [http://www.genealogy.net/privat/taxo2map/lists/Russische_Foederation_Ostpreussen_Taxo2Map.t2m Ostpreußen (47)]
 
'''''Schweiz'''''
 
* [http://www.genealogy.net/privat/taxo2map/lists/Schweiz_Aargau_Taxo2Map.t2m Aargau (131)]
* [http://www.genealogy.net/privat/taxo2map/lists/Schweiz_Appenzell_Ausserrhoden_Taxo2Map.t2m Appenzell Ausserrhoden (12)]
* [http://www.genealogy.net/privat/taxo2map/lists/Schweiz_Appenzell_Innerrhoden_Taxo2Map.t2m Appenzell Innerrhoden (3)]
* [http://www.genealogy.net/privat/taxo2map/lists/Schweiz_Basel_Landschaft_Taxo2Map.t2m Basel-Landschaft (47)]
* [http://www.genealogy.net/privat/taxo2map/lists/Schweiz_Basel_Stadt_Taxo2Map.t2m Basel-Stadt (2)]
* [http://www.genealogy.net/privat/taxo2map/lists/Schweiz_Bern_Taxo2Map.t2m Bern (226)]
* [http://www.genealogy.net/privat/taxo2map/lists/Schweiz_Canton_de_Vaud_Taxo2Map.t2m Canton de Vaud (52)]
* [http://www.genealogy.net/privat/taxo2map/lists/Schweiz_Canton_du_Valais_Taxo2Map.t2m Canton du Valais (122)]
* [http://www.genealogy.net/privat/taxo2map/lists/Schweiz_Fribourg_Taxo2Map.t2m Fribourg (102)]
* [http://www.genealogy.net/privat/taxo2map/lists/Schweiz_Geneve_Taxo2Map.t2m Genève (34)]
* [http://www.genealogy.net/privat/taxo2map/lists/Schweiz_Glarus_Taxo2Map.t2m Glarus (24)]
* [http://www.genealogy.net/privat/taxo2map/lists/Schweiz_Graubuenden_Taxo2Map.t2m Graubünden (137)]
* [http://www.genealogy.net/privat/taxo2map/lists/Schweiz_Jura_Taxo2Map.t2m Jura (51)]
* [http://www.genealogy.net/privat/taxo2map/lists/Schweiz_Luzern_Taxo2Map.t2m Luzern (73)]
* [http://www.genealogy.net/privat/taxo2map/lists/Schweiz_Neuchatel_Taxo2Map.t2m Neuchâtel (40)]
* [http://www.genealogy.net/privat/taxo2map/lists/Schweiz_Nidwalden_Taxo2Map.t2m Nidwalden (8)]
* [http://www.genealogy.net/privat/taxo2map/lists/Schweiz_Obwalden_Taxo2Map.t2m Obwalden (6)]
* [http://www.genealogy.net/privat/taxo2map/lists/Schweiz_Schaffhausen_Taxo2Map.t2m Schaffhausen (30)]
* [http://www.genealogy.net/privat/taxo2map/lists/Schweiz_Schwyz_Taxo2Map.t2m Schwyz (28)]
* [http://www.genealogy.net/privat/taxo2map/lists/Schweiz_Solothurn_Taxo2Map.t2m Solothurn (63)]
* [http://www.genealogy.net/privat/taxo2map/lists/Schweiz_St._Gallen_Taxo2Map.t2m St. Gallen (66)]
* [http://www.genealogy.net/privat/taxo2map/lists/Schweiz_Thurgau_Taxo2Map.t2m Thurgau (46)]
* [http://www.genealogy.net/privat/taxo2map/lists/Schweiz_Ticino_Taxo2Map.t2m Ticino (131)]
* [http://www.genealogy.net/privat/taxo2map/lists/Schweiz_Uri_Taxo2Map.t2m Uri (17)]
* [http://www.genealogy.net/privat/taxo2map/lists/Schweiz_Zug_Taxo2Map.t2m Zug (10)]
* [http://www.genealogy.net/privat/taxo2map/lists/Schweiz_Zuerich_Taxo2Map.t2m Zürich (125)]
 
'''''Ukraine'''''
 
* [http://www.genealogy.net/privat/taxo2map/lists/Ukraine_OHNE_Taxo2Map.t2m OHNE (11)]
 
Das Kartenmaterial und die GOV-Daten werden kurzfristig erweitert. Bitte die ersten Erfahrungen mit den hier angebotenen Karten/Daten sammeln.
 
Die Ortslisten für die Ortsuche werden direkt aus dem Programm heruntergeladen (siehe Handbuch).
 
===Anwendungsbeispiel für Taxo 2 Map===
 
Exemplarisch wurde eine Auswertung für den Regierungsbezirk Tübingen erstellt.
Links ist die Verteilung der Daten auf die administrativen Bereiche zu sehen, rechts die Visualisierung aller Orte.
 
Über den Link '''Datenanzeige''' wird eine separate htm-Seite geöffnet, welche die Grafik erneut anzeigt, jedoch wird dort beim Überfahren eines Punktes mit der Maus der entsprechende Ort als Quickinfo angezeigt.
 
{|
|[[Bild:T2M_Tuebingen_Eintraege.jpg]]
|[[Bild:T2M_Regierungsbezirk_Tuebingen.jpg]][http://www.taxo2map.com/Examples/MiniGOV/Regierungsbezirk_Tuebingen.htm Datenanzeige]
|}
 
Für die einzelnen Landkreise ergeben sich folgende Auswertungen:
 
{|
|[[Bild:T2M_Alb-Donau-Kreis.jpg]]
|[[Bild:T2M_Biberach.jpg]]
|[[Bild:T2M_Bodenseekreis.jpg]]
|-
|[http://www.taxo2map.com/Examples/MiniGOV/Alb-Donau-Kreis.htm Datenanzeige Alb-Donau-Kreis]
|[http://www.taxo2map.com/Examples/MiniGOV/Biberach.htm Datenanzeige Biberach]
|[http://www.taxo2map.com/Examples/MiniGOV/Bodenseekreis.htm Datenanzeige Bodenseekreis]
|-
|-
|[[Bild:T2M_Ravensburg.jpg]]
|[[Bild:T2M_Reutlingen.jpg]]
|[[Bild:T2M_Sigmaringen.jpg]]
|-
|[http://www.taxo2map.com/Examples/MiniGOV/Ravensburg.htm Datenanzeige Ravensburg]
|[http://www.taxo2map.com/Examples/MiniGOV/Reutlingen.htm Datenanzeige Reutlingen]
|[http://www.taxo2map.com/Examples/MiniGOV/Sigmaringen.htm Datenanzeige Sigmaringen]
|-
|
|
|
|-
|[[Bild:T2M_Tuebingen.jpg]]
|[[Bild:T2M_Ulm.jpg]]
|[[Bild:T2M_Zollernalbkreis.jpg]]
|-
|[http://www.taxo2map.com/Examples/MiniGOV/Tuebingen.htm Datenanzeige Tübingen]
|[http://www.taxo2map.com/Examples/MiniGOV/Ulm.htm Datenanzeige Ulm]
|[http://www.taxo2map.com/Examples/MiniGOV/Zollernalbkreis.htm Datenanzeige Zollernalbkreis]
|}
 
Es sind ca. 23-25 Orte erkennbar, die nicht direkt der üblichen "Haufenbildung" einer administrativen Einheit folgen. Diese Orte bedürfen eventuell einer Korrektur der geographischen Koordinaten oder der administrativen Zuordnung.


== Ortsuche mit Taxo 2 Map ==
=== Gemeinden ohne OpenGeoDB-Zuordnung ===
Da OpenGeoDB alle deutschen Gemeinden enthält, müßte auch jede aktuelle Gemeinde im GOV eine externe Kennung opengeodb:... haben.
<source lang="sql">SELECT textual_id FROM property t, relation_index, gov_item
  LEFT JOIN property o ON o.gov_object = gov_item.id AND o.type=6 AND o.content like 'opengeodb:%'
  WHERE t.type=2 and t.type_object=18 AND o.id is null AND t.gov_object = gov_item.id
    AND (t.time_end IS NULL OR t.time_end > 30000000)                        # aktuelle Gemeinde
    AND relation_index.parent=149273 AND relation_index.child=gov_item.id;    # in Deutschland</source>


In Taxo 2 Map ist eine klassifizierte Ortsuche in nationalen Ortslisten möglich. Die Ortslisten stammen vom „GEO-NET Name Server“ und beinhalten ca. 5.7 Millionen Ortsangaben weltweit. Die Daten umfassen nicht nur „Wohnorte“, sondern auch Flüsse, Vegetation, Straßen oder Einzelplätze, wie z.B. Farmen bzw. Güter. Für uns Genealogen ist interessant, dass auch historische Ortsangaben vorhanden sind, so z.B. Gemeinden oder Güter, die an der innerdeutschen Grenze gelegen waren und geschliffen worden sind.
* 2012-05-13  3.084 Einträge
* 2019-09-15  2.471 Einträge


Beispielhaft wurde nach Altenburg gesucht. Die folgenden Suchergebnisse wurden erzielt:
=== Gemeinden ohne übergeordnetes Objekt ===
Für Gemeinden lassen sich einfach Zugehörigkeiten feststellen. Diese Gemeinden haben überhaupt keine Zugehörigkeit:
<source lang="sql">SELECT textual_id FROM property, gov_item
  LEFT JOIN relation_index p ON p.child=gov_item.id
  WHERE gov_item.deleted =0 and gov_item.id=property.gov_object
  AND property.type=2 and property.type_object =18 AND p.id is null;</source>


[[Bild:t2m_Suchergebnisse.jpg]]
* 2012-05-13  763 Einträge
* 2019-09-15  77 Einträge


EIn Ausschnitt der Kartendarstellung und die Klassifikationen im Einzelnen sind unten aufgeführt. Die Suchergebnisse werden in der Farbe der Klassifikation ausgegeben. Über eine Filterfunktion können nur bestimmte Klassifikationen angezeigt werden.
=== vermischte Gemeinden und Dörfer ===
Um Ein- und Umgemeindungen korrekt modellieren zu können, ist es notwendig, eigene Gemeindeobjekt zu haben. Leider gibt es bereits viele Einträge, bei denen Gemeinde und Dorf vermischt wurden.
<source lang="sql">SELECT textual_id FROM property p1, property p2, gov_item
WHERE  gov_item.id=p1.gov_object AND p1.type=2 AND p2.type=2
  AND p1.type_object <> p2.type_object AND p1.gov_object = p2.gov_object
  AND p1.type_object=18 AND p2.type_object<>247;</source>


{|
* 2012-05-13  17.661 Einträge
|[[Bild:t2m_Suchergebnisse_Altenburg_Outline.jpg]]
|[[Bild:t2m_Klassifikationen.jpg]]
|}


Wurde ein Ort gefunden, kann über die rechte Maustaste eine Datenaustauschdatei erstellt werden mit allen relevanten Daten zum Suchergebnis (Koordinaten, in verschiedenen Schreibweisen, administrative Zuordnung, GOV-String). Weiterhin wird der GOV-String mit den Koordinaten („liegt bei …“) automatisch in die Zwischenablage gelegt und kann bei der Objektbearbeitung im GOV eingefügt werden, wie dies auch beim GOV-Rechner realisiert wurde.
'''Diese Abfrage ist nicht korrekt, da sie auch erlaubte Wechsel (z.B. von Gemeinde zu Stadt) findet.'''


Da bei der Ortsuche auch nach Bestandteilen von Ortsnamen gesucht werden kann, eignet sich diese auch für analytische Zwecke. Ein Heimatforscher war z.B. interessiert an einer Darstellung aller Orte, die auf „weier“ enden. Tatsächlich bestätigte die Auswertung die Annahme, dass „weier“-Orte fast ausschließlich in Baden-Württemberg auftreten, und dort sehr beschränkt auf ein Gebiet.
Speziell die Wechsel von Gemeinde zu Ortsteil (Wohnplatz) finden:
<source lang="sql">
SELECT textual_id FROM property p1, property p2, gov_item  WHERE  gov_item.id=p1.gov_object AND p1.type=2 AND p2.type=2    AND p1.type_object <> p2.type_object AND p1.gov_object = p2.gov_object    AND p1.type_object=18 AND p2.type_object=40;
</source>


Ebenso aussagekräftig ist eine Auswertung über alle Orte, die auf „rode“ enden. Von den ca. 500 Suchergebnissen liegen ca. 400 in Mitteldeutschland, hauptsächlich im Gebiet des Harzes.
Eingeschränkt auf Kreis/Land etc:
<source lang="sql">SELECT DISTINCT c.textual_id
  FROM property p1, property p2, gov_item c, gov_item p, relation_index 
  WHERE  c.id=p1.gov_object AND p1.type=2 AND p2.type=2
  AND p1.type_object <> p2.type_object AND p1.gov_object = p2.gov_object
  AND p1.type_object=18  AND p1.gov_object=relation_index.child AND relation_index.parent=p.id
  AND p.textual_id='adm_369097';</source>


== Ortsuche für Orte ohne Koordinaten ==
=== kirchliche Abhängigkeiten ===
Die komplette Zugehörigkeit sieht so aus:
[[Image:GOV_kirchliche_abhaengigkeiten.svg|300px]]


So findet man Objekte bei denen eine der Abhängigkeiten fehlt:
==== Verbindung B-C ====
<source lang="sql">SELECT a.textual_id, b.textual_id, c.textual_id
FROM gov_item a, relation ac, relation ab, property at, (gov_item c, gov_item b)
LEFT JOIN relation bc ON bc.type=1 AND bc.child=b.id AND bc.parent=c.id
WHERE  at.gov_object=a.id AND at.type=2 AND at.type_object in (124,13,26,30)
AND ac.type=3 AND ab.type=2
AND ab.child=a.id AND ab.parent=b.id
AND ac.child=a.id AND ac.parent=c.id
AND bc.parent IS NULL;</source>
Hier sind viele "falsche" Treffer enthalten, wenn das Pfarrdorf noch nicht der Kirchengemeinde zugeordnet ist. Reparieren kann man aber in jedem Fall etwas.<br>2012-05-13  [[Bild:Nuvola_apps_important.svg|32px]]  5292 Einträge


Wie Koordinaten zu Orten ohne Koordinaten zugeordnet werden können, wird [http://www.genealogy.net/privat/taxo2map/wink/t2m_Ortsuche_Koordinaten_zuordnen.htm hier] gezeigt.
==== Verbindung A-B ====
<source lang="sql">SELECT a.textual_id, b.textual_id, c.textual_id
FROM gov_item c, relation ac, property at, relation bc, (gov_item b, gov_item a)
LEFT JOIN relation ab ON ab.type=2 AND ab.child=a.id AND ab.parent=b.id
WHERE  at.gov_object=a.id AND at.type=2 AND at.type_object in (124,13,26,30)
AND ac.type=3 AND bc.type=1
AND bc.child=b.id AND bc.parent=c.id
AND ac.child=a.id AND ac.parent=c.id
AND ab.parent IS NULL;</source>
Hier sind viele "falsche" Treffer enthalten, wenn die Kirche (im GOV) noch nicht im Pfarrdorf steht. Reparieren kann man aber in jedem Fall etwas.<br>
2012-05-13  [[Bild:Nuvola_apps_important.svg|32px]]  8793 Einträge


== Fehlersuche in Datenbank ==
==== Verbindung A-C ====
<source lang="sql">SELECT a.textual_id, b.textual_id, c.textual_id
FROM gov_item b, relation ab, property at, relation bc, (gov_item c, gov_item a)
LEFT JOIN relation ac ON ac.type=2 AND ac.child=a.id AND ac.parent=c.id
WHERE  at.gov_object=a.id AND at.type=2 AND at.type_object in (124,13,26,30)
AND ab.type=3 AND bc.type=1
AND bc.child=b.id AND bc.parent=c.id
AND ab.child=a.id AND ab.parent=c.id
AND ac.parent IS NULL;</source>
Hier sind viele "falsche" Treffer enthalten, wenn die Kirche noch nicht die Kirchengemeinde repräsentiert. Reparieren kann man aber in jedem Fall etwas.<br>
2012-05-13  [[Bild:Nuvola_apps_important.svg|32px]]  10.360 Einträge


=== Objekte ohne Namen ===
=== Ersatzkennungen für existierende Objekte ===
Vielfach werden in GOV Kindobjekte aufgelistet, die keinen Namen haben und die damit auch nicht als Objekt editierbar oder löschbar sind. Diese Objekte sollten über einen Suchmechanismus gefunden werden können und dann gelöscht werden.
Sie entstehen, wenn man das Verschmelzen von zwei Objekten zurückgängig macht.
SELECT o.textualId FROM GovItem o
<source lang="sql">SELECT * FROM updated_ids, gov_item WHERE updated_ids.old_id=textual_id AND deleted=0 ;</source>
  LEFT JOIN Property n ON n.gov_object=o.id AND n.type=1
  WHERE o.deleted=0 AND o.itemClass='o' AND n.id IS NULL;


=== Objekte ohne Typ ===
SELECT o.textualId FROM GovItem o
  LEFT JOIN Property t ON tt.gov_object=o.id AND t.type=2
  WHERE o.deleted=0 AND o.itemClass='o' AND tt.id IS NULL;
=== Kirchen ohne Standort ===
SELECT o.textualId FROM Property t, GovItem o
  LEFT JOIN Relation r ON r.child=t.gov_object AND r.type=2
  WHERE t.type=2 AND t.typeObject=26
    AND o.id=t.gov_object AND r.parent IS NULL;
=== Kirchspiele ohne Kirche ===
Relevante Objekt-Typen:
* 29 (Kirchspiel)
* 42 (Pfarrei)
* 81 (Kloster)
* 92 (Kirchengemeinde)


SELECT o.textualId from Property t, GovItem o
* 2012-05-13 keine Einträge
  LEFT JOIN Relation r ON r.parent=t.gov_object AND r.type=3
* 2019-09-15 keine Einträge
  WHERE t.type=2 and t.typeObject IN (29,92,42,81)
    AND o.id=t.gov_object and r.child IS NULL;


=== Religiöse Objekte ohne Konfession ===
=== Gemeinden, die zu Gemeinden gehören ===
Relevante Objekt-Typen:
Eine Gemeinde sollte nicht Teil einer anderen Gemeinde sein. Es liegt dann vermutlich in mindestens einem der beiden Objekte eine Vermischung von Dorf und Gemeinde vor.
* 26 (Kirche)
<source lang="sql">SELECT DISTINCT c.textual_id AS child, p.textual_id AS parent
* 29 (Kirchspiel)
FROM property p1, property p2, gov_item c, gov_item p, relation_index
* 42 (Pfarrei)
WHERE c.id=p1.gov_object AND p.id=p2.gov_object AND p1.type=2 AND p2.type=2
* 81 (Kloster)
AND p1.type_object=18 AND p2.type_object=18 AND child=c.id AND parent=p.id;
* 92 (Kirchengemeinde)
</source>


  SELECT o.textualId from Property t, GovItem o
* 2012-05-13  10.754 Einträge
    LEFT JOIN Property k ON k.gov_object=t.gov_object AND k.type=7
* 2019-09-15  11.580 Einträge
    WHERE t.type=2 and t.typeObject IN (26,29,92,42,81)
      AND o.id=t.gov_object AND k.id IS NULL;


=== Orte und Ortsteile mit falscher PLZ  ===
Eingeschränkt auf ein Bundesland:


* Länge der PLZ = 1 (z.B. nur "O" oder "W")
<source lang="sql">
* kein Jahr bis bei PLZ die mit "O" oder "W" beginnt
SELECT DISTINCT c.textual_id AS child, p.textual_id AS parent
* in DE: Länge PLZ = 4
  FROM property p1, property p2, gov_item c, gov_item p, relation_index r1, relation_index r2
  WHERE c.id=p1.gov_object AND p.id=p2.gov_object AND p1.type=2 AND p2.type=2
  AND p1.type_object=18 AND p2.type_object=18 AND r1.child=c.id AND r1.parent=p.id
  AND r2.child=p.id AND r2.parent=(SELECT id FROM gov_item WHERE textual_id='adm_369010');
</source>


=== Orte und Koordinaten im übergeordneten Objekt ===
=== Kreise 1871 ===
* Orte in einem Bundesland/Regierungsbezirk, die keine Koordinaten haben
alle Objekte, die im GOV zum Landkreis Plön gehören:
SELECT distinct ri.ende, textualId
<source lang="sql">
  FROM GovItem i
select count(*) from dr1871, gov_item p, relation_index
  JOIN Property p ON i.id=p.gov_object AND p.type=2
WHERE dr1871.gov_id=p.textual_id AND relation_index.parent=p.id and dr1871.id=380
  JOIN Type t ON t.id=typeObject
group by dr1871.gov_id;
  JOIN p ri ON ri.anfang=i.id AND ri.ende in (1312, 1315, 1322, 1324, 1325, 1326, 1331, 1332, 1338, 1342, 1346, 1351, 1359, 1360, 1363, 1364, 1365, 1369, 1373, 191050, 211667, 213750)
</source>
  WHERE itemClass='o' AND deleted=0 AND (latitude is null or latitude=0) AND position=1


* Orte die identische Koordinaten in einem Bundesland/Regierungsbezirk haben
Objekte, die im GOV zum Landkreis Plön gehören und in der bounding box des Kreises 1871 liegen:
<source lang="sql">
select dr1871.gov_id, count(distinct c.textual_id) as count
from dr1871, gov_item p, gov_item c, relation_index
WHERE dr1871.gov_id=p.textual_id AND relation_index.parent=p.id AND relation_index.child=c.id
  AND MBRContains(geom, Point( c.latitude, c.longitude)) and dr1871.id=380
group by dr1871.gov_id;
</source>
Objekte, die im GOV zum Landkreis Plön gehören aber nicht der bounding box des Kreises 1871 liegen:
<source lang="sql">
select dr1871.gov_id, count(distinct c.textual_id) as count
from dr1871, gov_item p, gov_item c, relation_index
WHERE dr1871.gov_id=p.textual_id AND relation_index.parent=p.id AND relation_index.child=c.id
  AND not MBRContains(geom, Point( c.latitude, c.longitude)) and dr1871.id=380
group by dr1871.gov_id;
</source>


=== Orte ohne Koordinate ===
=== Amtlicher Gemeindeschlüssel ===
Gelöschte Objekte und solche mit einem Typ, der keine Position zuläßt, dürfen nicht mitgezählt werden.
So kann man zählen, wie vielen Gemeinden ein Amtlicher Gemeindeschlüssel zugeordnet ist.
  SELECT count(distinct textualId) FROM GovItem i
<source lang="sql">
    JOIN Property p ON  i.id=p.gov_object AND p.type=2
create temporary table ags ( ags char(8));
    JOIN Type t ON t.id=typeObject
insert into ags select distinct content FROM gov_item, property, relation_index WHERE relation_index.parent=149273 AND gov_item.id=relation_index.child AND gov_item.id = property.gov_object and property.type=16 and length(content)=8;
    WHERE itemClass='o' deleted=0 and latitude is null or latitude=0 and position=1;
select substring(ags,1,2) as bl , count(*) from ags group by bl;
</source>


=== Gelöschte Objekte mit Kindern ===
Diese Zahlen kann man dann mit den bekannten AGS von 1993 und 2014 vergleichen und nach Bundesländern auswerten:
Ein gelöschtes Objekt darf nie als Elternobjekt eingetragen sein.
<source lang="bash">
  SELECT DISTINCT textualId
diff -u AGS-in-GOV.csv AGS-1993.txt  |grep ^+ | cut -c 2-3 | uniq -c
    FROM GovItem p, Relation r
</source>
    WHERE p.deleted =1 AND parent =p.id;


=== Orte an den Rändern von Einheiten ===
im Norden:
SELECT c.* FROM GovItem i JOIN p ON p.ende=i.id JOIN GovItem c ON p.anfang=c.id
  WHERE i.textualId='OBJEKTKENNUNG' ORDER BY c.latitude DESC LIMIT 1;
im Süden:
SELECT c.* FROM GovItem i JOIN p ON p.ende=i.id JOIN GovItem c ON p.anfang=c.id
  WHERE i.textualId='OBJEKTKENNUNG' ORDER BY c.latitude ASC LIMIT 1;
im Westen:
SELECT c.* FROM GovItem i JOIN p ON p.ende=i.id JOIN GovItem c ON p.anfang=c.id
  WHERE i.textualId='OBJEKTKENNUNG' ORDER BY c.longitude ASC LIMIT 1;
im Osten:
SELECT c.* FROM GovItem i JOIN p ON p.ende=i.id JOIN GovItem c ON p.anfang=c.id
  WHERE i.textualId='OBJEKTKENNUNG' ORDER BY c.longitude DESC LIMIT 1;


=== Objekte, die einem gleichnamigen Objekt zugeordnet sind ===
Die Abfrage beschränkt auf heute noch existierende Gemeinden:
Das müssen nicht unbedingt Fehler sein, aber an einigen Stellen kann man so Probleme finden.
<source lang="sql">
SELECT p1.content, i1.textualId, tn1.value, i2.textualId, tn2.value
create temporary table ags ( ags char(8));
  FROM GovItem i1, GovItem i2, Property p1, Property p2,
insert into ags select distinct content FROM gov_item, property, relation_index WHERE relation_index.parent=149273 AND gov_item.id=relation_index.child AND gov_item.id = property.gov_object  and property.type=16 AND relation_index.time_end=2147483647;
        Property t1, Property t2, p, type_names tn1, type_names tn2
select substring(ags,1,2) as bl , count(*) from ags group by bl;
  WHERE p.anfang=i1.id and p.ende=i2.id AND i2.id=p2.gov_object  
</source>
    AND p2.type=1 AND i1.id= p1.gov_object AND p1.type=1 AND p1.content=p2.content
    AND t1.gov_object=i1.id and t2.gov_object=i2.id AND t1.type=2 and t2.type=2
    AND t1.typeObject=tn1.type_id and tn1.language='deu'
    and t2.typeObject=tn2.type_id and tn2.language='deu'
    AND t2.typeObject NOT IN (1,5,9,25,29,32,36,42,46,53,94,99,100,103) limit 10;


== Kennzahlen ==
== Kennzahlen ==
Zeile 397: Zeile 317:


=== Anzahl Orte mit Position  ===
=== Anzahl Orte mit Position  ===
  SELECT count(*) FROM GovItem WHERE itemClass ='o' AND latitude >0;
<source lang="sql">  SELECT count(*) FROM gov_item WHERE item_class ='o' AND latitude >0;</source>


=== Anzahl Orte ohne Position  ===
=== Anzahl Orte ohne Position  ===
  SELECT count( distinct textualId)  
<source lang="sql">  SELECT count( distinct textual_id)  
   FROM GovItem i , Property p, Type t   
   FROM gov_item i , property p, Type t   
   WHERE (latitude =0 or latitude is null)  
   WHERE (latitude =0 or latitude is null)  
     and itemClass='o' AND gov_object=i.id  
     and item_class='o' AND gov_object=i.id  
     AND propertyClass='t' and typeObject=t.id  
     AND property_class='t' and type_object=t.id  
     and t.locatedIn=1 ;
     and t.locatedIn=1 ;</source>


* Anzahl Orte ohne Elternobjekt
* Anzahl Orte ohne Elternobjekt
Zeile 413: Zeile 333:
* Verteilung Anzahl Kindobjekte
* Verteilung Anzahl Kindobjekte
* Objekte mit vielen Kindobjekte
* Objekte mit vielen Kindobjekte
== Sonstiges ==
* [[GOV/Qualitätskontrolle/Kreise 1871| Kreise 1871]]
* [[GOV/Qualitätskontrolle mit Taxo2Map|Qualitätskontrolle mit Taxo2Map]]


[[Kategorie:GOV-Intern]]
[[Kategorie:GOV-Intern]]

Aktuelle Version vom 15. September 2019, 06:46 Uhr

GOV-Hauptseite > GOV/Projekt > Qualitätskontrolle

Projekt GOV
hier: GOV/Qualitätskontrolle

GOV-Datenbankabfrage:

Infoseiten zum Projekt:

Datenerfassung:

Kontakt:

Kategorien:


Fehlersuche in Datenbank[Bearbeiten]

Objekte ohne Namen[Bearbeiten]

Vielfach werden in GOV Kindobjekte aufgelistet, die keinen Namen haben und die damit auch nicht als Objekt editierbar oder löschbar sind. Diese Objekte sollten über einen Suchmechanismus gefunden werden können und dann gelöscht werden.

SELECT o.textual_id FROM gov_item o 
   LEFT JOIN property n ON n.gov_object=o.id AND n.type=1
   WHERE o.deleted=0 AND o.item_class='o' AND n.id IS NULL;
  • 2018-03-14 kein Eintrag
  • 2019-09-15 12 Einträge

Objekte ohne Typ[Bearbeiten]

SELECT o.textual_id FROM gov_item o 
   LEFT JOIN property t ON t.gov_object=o.id AND t.type=2
   WHERE o.deleted=0 AND o.item_class='o' AND t.id IS NULL;
  • 2018-03-14 keine Einträge
  • 2019-09-15 6 Einträge

Kirchen ohne Standort[Bearbeiten]

SELECT o.textual_id FROM gov_item o, property t
 LEFT JOIN relation r ON r.child=t.gov_object AND r.type=2
 WHERE t.type=2 AND t.type_object=26 
   AND o.id=t.gov_object AND r.parent IS NULL;
  • 2012-05-13 13.876 Einträge
  • 2019-09-15 9.961 Einträge

Eingeschränkt auf eine Landeskirche oder einen Kirchenkreis (hier 172369=Oppeln):

SELECT church.textual_id 
 FROM relation_index, gov_item church, property t 
 LEFT JOIN relation r ON r.child=t.gov_object AND r.type=2 
 WHERE relation_index.parent =172369 
  AND church.id=relation_index.child 
  AND t.gov_object=relation_index.child 
  AND t.type=2 AND type_object=26 
  AND r.parent IS NULL;

Kirchspiele ohne Kirche[Bearbeiten]

Relevante Objekt-Typen:

  • 29 (Kirchspiel)
  • 42 (Pfarrei)
  • 81 (Kloster)
  • 92 (Kirchengemeinde)
SELECT o.textual_id FROM gov_item o, property t
   LEFT JOIN relation r ON r.parent=t.gov_object AND r.type=3
   WHERE t.type=2 and t.type_object IN (29,92,42,81) 
     AND o.id=t.gov_object and r.child IS NULL;
  • 2019-09-15 5.413 Einträge

Religiöse Objekte ohne Konfession[Bearbeiten]

Relevante Objekt-Typen:

  • 26 (Kirche)
  • 29 (Kirchspiel)
  • 42 (Pfarrei)
  • 81 (Kloster)
  • 92 (Kirchengemeinde)
SELECT o.textual_id FROM gov_item o, property t
    LEFT JOIN property k ON k.gov_object=t.gov_object AND k.type=7
    WHERE t.type=2 and t.type_object IN (26,29,92,42,81)
      AND o.id=t.gov_object AND k.id IS NULL;
  • 2012-05-13 1.133 Einträge
  • 2019-09-15 1.306 Einträge

Orte und Ortsteile mit falscher PLZ[Bearbeiten]

  • Länge der PLZ = 1 (z.B. nur "O" oder "W")
  • kein Jahr bis bei PLZ die mit "O" oder "W" beginnt
  • in DE: Länge PLZ = 4

Orte und Koordinaten im übergeordneten Objekt[Bearbeiten]

  • Orte in einem Bundesland/Regierungsbezirk, die keine Koordinaten haben
SELECT c.textual_id, p.textual_id 
  FROM property, type, gov_item p, gov_item c, relation_index 
  WHERE parent = p.id AND child=c.id 
   AND p.textual_id='adm_369130'    # Kennung des übergeordneten Objekts
   AND property.gov_object=c.id 
   AND property.type=2 
   AND type.id=type_object 
   AND type.has_position=1         # Typ muß eine Position erlauben
   AND c.deleted=0                 # nicht gelöscht
   AND type_object<>18             # keine Gemeinde
   AND (c.latitude is null OR c.latitude=0);   # keine Position angegeben
  • Orte die identische Koordinaten in einem Bundesland/Regierungsbezirk haben

Orte ohne Koordinate[Bearbeiten]

Gelöschte Objekte und solche mit einem Typ, der keine Position zulässt, dürfen nicht mitgezählt werden.

SELECT count(distinct textual_id) FROM gov_item i 
    JOIN property p ON  i.id=p.gov_object AND p.type=2 
    JOIN Type t ON t.id=type_object 
    WHERE item_class='o' AND deleted=0 and (latitude is null or latitude=0) and has_position=1 AND type_object<>18;
  • 2012-05-13 38.355 Einträge
  • 2019-09-15 36.506 Einträge

Gelöschte Objekte mit Kindern[Bearbeiten]

Ein gelöschtes Objekt darf nie als Elternobjekt eingetragen sein.

SELECT DISTINCT textual_id
  FROM gov_item p, relation r 
  WHERE p.deleted =1 AND parent =p.id;
  • 2012-05-13 keine Einträge
  • 2019-09-05 keine Einträge

auch nicht im relationenindex:

SELECT DISTINCT textual_id
  FROM gov_item, relation_index
  WHERE deleted = 1 AND parent=gov_item.id;
  • 2012-05-13 keine Einträge
  • 2019-09-05 85 Einträge

Gelöschte Objekte als Kind[Bearbeiten]

Ein gelöschtes Objekt darf nicht als Kindobjekt eingetragen sein.

SELECT DISTINCT textual_id
  FROM gov_item p, relation r 
  WHERE p.deleted =1 AND child =p.id;
  • 2019-09-15 24 Einträge

auch nicht im relationenindex:

SELECT DISTINCT textual_id
  FROM gov_item, relation_index
  WHERE deleted = 1 AND child=gov_item.id;
  • 2019-09-15 72 Einträge

Orte an den Rändern von Einheiten[Bearbeiten]

im Norden:

 SELECT c.* FROM gov_item i JOIN relation_index ON relation_index.parent=i.id JOIN gov_item c ON relation_index.child=c.id
   WHERE c.latitude IS NOT NULL 
    AND i.textual_id='OBJEKTKENNUNG' ORDER BY c.latitude DESC LIMIT 1;

im Süden:

 SELECT c.* FROM gov_item i JOIN relation_index ON relation_index.parent=i.id JOIN gov_item c ON relation_index.child=c.id
   WHERE c.latitude IS NOT NULL 
    AND i.textual_id='OBJEKTKENNUNG' ORDER BY c.latitude ASC LIMIT 1;

im Westen:

 SELECT c.* FROM gov_item i JOIN relation_index ON relation_index.parent=i.id JOIN gov_item c ON relation_index.child=c.id
   WHERE c.latitude IS NOT NULL 
    AND i.textual_id='OBJEKTKENNUNG' ORDER BY c.longitude ASC LIMIT 1;

im Osten:

 SELECT c.* FROM gov_item i JOIN relation_index ON relation_index.parent=i.id JOIN gov_item c ON relation_index.child=c.id
   WHERE c.latitude IS NOT NULL 
    AND i.textual_id='OBJEKTKENNUNG' ORDER BY c.longitude DESC LIMIT 1;

Gemeinden ohne OpenGeoDB-Zuordnung[Bearbeiten]

Da OpenGeoDB alle deutschen Gemeinden enthält, müßte auch jede aktuelle Gemeinde im GOV eine externe Kennung opengeodb:... haben.

SELECT textual_id FROM property t, relation_index, gov_item 
  LEFT JOIN property o ON o.gov_object = gov_item.id AND o.type=6 AND o.content like 'opengeodb:%'
  WHERE t.type=2 and t.type_object=18 AND o.id is null AND t.gov_object = gov_item.id 
    AND (t.time_end IS NULL OR t.time_end > 30000000)                        # aktuelle Gemeinde
    AND relation_index.parent=149273 AND relation_index.child=gov_item.id;    # in Deutschland
  • 2012-05-13 3.084 Einträge
  • 2019-09-15 2.471 Einträge

Gemeinden ohne übergeordnetes Objekt[Bearbeiten]

Für Gemeinden lassen sich einfach Zugehörigkeiten feststellen. Diese Gemeinden haben überhaupt keine Zugehörigkeit:

SELECT textual_id FROM property, gov_item 
  LEFT JOIN relation_index p ON p.child=gov_item.id 
  WHERE gov_item.deleted =0 and gov_item.id=property.gov_object
  AND property.type=2 and property.type_object =18 AND p.id is null;
  • 2012-05-13 763 Einträge
  • 2019-09-15 77 Einträge

vermischte Gemeinden und Dörfer[Bearbeiten]

Um Ein- und Umgemeindungen korrekt modellieren zu können, ist es notwendig, eigene Gemeindeobjekt zu haben. Leider gibt es bereits viele Einträge, bei denen Gemeinde und Dorf vermischt wurden.

SELECT textual_id FROM property p1, property p2, gov_item
 WHERE  gov_item.id=p1.gov_object AND p1.type=2 AND p2.type=2
   AND p1.type_object <> p2.type_object AND p1.gov_object = p2.gov_object
   AND p1.type_object=18 AND p2.type_object<>247;
  • 2012-05-13 17.661 Einträge

Diese Abfrage ist nicht korrekt, da sie auch erlaubte Wechsel (z.B. von Gemeinde zu Stadt) findet.

Speziell die Wechsel von Gemeinde zu Ortsteil (Wohnplatz) finden:

SELECT textual_id FROM property p1, property p2, gov_item  WHERE  gov_item.id=p1.gov_object AND p1.type=2 AND p2.type=2    AND p1.type_object <> p2.type_object AND p1.gov_object = p2.gov_object    AND p1.type_object=18 AND p2.type_object=40;

Eingeschränkt auf Kreis/Land etc:

SELECT DISTINCT c.textual_id 
  FROM property p1, property p2, gov_item c, gov_item p, relation_index  
  WHERE  c.id=p1.gov_object AND p1.type=2 AND p2.type=2
   AND p1.type_object <> p2.type_object AND p1.gov_object = p2.gov_object
   AND p1.type_object=18  AND p1.gov_object=relation_index.child AND relation_index.parent=p.id 
   AND p.textual_id='adm_369097';

kirchliche Abhängigkeiten[Bearbeiten]

Die komplette Zugehörigkeit sieht so aus: GOV kirchliche abhaengigkeiten.svg

So findet man Objekte bei denen eine der Abhängigkeiten fehlt:

Verbindung B-C[Bearbeiten]

SELECT a.textual_id, b.textual_id, c.textual_id 
FROM gov_item a, relation ac, relation ab, property at, (gov_item c, gov_item b)
LEFT JOIN relation bc ON bc.type=1 AND bc.child=b.id AND bc.parent=c.id
WHERE  at.gov_object=a.id AND at.type=2 AND at.type_object in (124,13,26,30)
AND ac.type=3 AND ab.type=2
AND ab.child=a.id AND ab.parent=b.id 
AND ac.child=a.id AND ac.parent=c.id
AND bc.parent IS NULL;

Hier sind viele "falsche" Treffer enthalten, wenn das Pfarrdorf noch nicht der Kirchengemeinde zugeordnet ist. Reparieren kann man aber in jedem Fall etwas.
2012-05-13 Nuvola apps important.svg 5292 Einträge

Verbindung A-B[Bearbeiten]

SELECT a.textual_id, b.textual_id, c.textual_id 
FROM gov_item c, relation ac, property at, relation bc, (gov_item b, gov_item a)
LEFT JOIN relation ab ON ab.type=2 AND ab.child=a.id AND ab.parent=b.id
WHERE  at.gov_object=a.id AND at.type=2 AND at.type_object in (124,13,26,30)
AND ac.type=3 AND bc.type=1
AND bc.child=b.id AND bc.parent=c.id 
AND ac.child=a.id AND ac.parent=c.id
AND ab.parent IS NULL;

Hier sind viele "falsche" Treffer enthalten, wenn die Kirche (im GOV) noch nicht im Pfarrdorf steht. Reparieren kann man aber in jedem Fall etwas.
2012-05-13 Nuvola apps important.svg 8793 Einträge

Verbindung A-C[Bearbeiten]

SELECT a.textual_id, b.textual_id, c.textual_id 
FROM gov_item b, relation ab, property at, relation bc, (gov_item c, gov_item a)
LEFT JOIN relation ac ON ac.type=2 AND ac.child=a.id AND ac.parent=c.id
WHERE  at.gov_object=a.id AND at.type=2 AND at.type_object in (124,13,26,30)
AND ab.type=3 AND bc.type=1
AND bc.child=b.id AND bc.parent=c.id 
AND ab.child=a.id AND ab.parent=c.id
AND ac.parent IS NULL;

Hier sind viele "falsche" Treffer enthalten, wenn die Kirche noch nicht die Kirchengemeinde repräsentiert. Reparieren kann man aber in jedem Fall etwas.
2012-05-13 Nuvola apps important.svg 10.360 Einträge

Ersatzkennungen für existierende Objekte[Bearbeiten]

Sie entstehen, wenn man das Verschmelzen von zwei Objekten zurückgängig macht.

SELECT * FROM updated_ids, gov_item WHERE updated_ids.old_id=textual_id AND deleted=0 ;


  • 2012-05-13 keine Einträge
  • 2019-09-15 keine Einträge

Gemeinden, die zu Gemeinden gehören[Bearbeiten]

Eine Gemeinde sollte nicht Teil einer anderen Gemeinde sein. Es liegt dann vermutlich in mindestens einem der beiden Objekte eine Vermischung von Dorf und Gemeinde vor.

SELECT DISTINCT c.textual_id AS child, p.textual_id AS parent 
 FROM property p1, property p2, gov_item c, gov_item p, relation_index 
 WHERE c.id=p1.gov_object AND p.id=p2.gov_object AND p1.type=2 AND p2.type=2 
 AND p1.type_object=18 AND p2.type_object=18 AND child=c.id AND parent=p.id;
  • 2012-05-13 10.754 Einträge
  • 2019-09-15 11.580 Einträge

Eingeschränkt auf ein Bundesland:

SELECT DISTINCT c.textual_id AS child, p.textual_id AS parent 
  FROM property p1, property p2, gov_item c, gov_item p, relation_index r1, relation_index r2
  WHERE c.id=p1.gov_object AND p.id=p2.gov_object AND p1.type=2 AND p2.type=2 
  AND p1.type_object=18 AND p2.type_object=18 AND r1.child=c.id AND r1.parent=p.id
  AND r2.child=p.id AND r2.parent=(SELECT id FROM gov_item WHERE textual_id='adm_369010');

Kreise 1871[Bearbeiten]

alle Objekte, die im GOV zum Landkreis Plön gehören:

select count(*) from dr1871, gov_item p, relation_index
 WHERE dr1871.gov_id=p.textual_id AND relation_index.parent=p.id and dr1871.id=380
 group by dr1871.gov_id;

Objekte, die im GOV zum Landkreis Plön gehören und in der bounding box des Kreises 1871 liegen:

select dr1871.gov_id, count(distinct c.textual_id) as count
 from dr1871, gov_item p, gov_item c, relation_index
 WHERE dr1871.gov_id=p.textual_id AND relation_index.parent=p.id AND relation_index.child=c.id
   AND MBRContains(geom, Point( c.latitude, c.longitude)) and dr1871.id=380
 group by dr1871.gov_id;

Objekte, die im GOV zum Landkreis Plön gehören aber nicht der bounding box des Kreises 1871 liegen:

select dr1871.gov_id, count(distinct c.textual_id) as count
 from dr1871, gov_item p, gov_item c, relation_index
 WHERE dr1871.gov_id=p.textual_id AND relation_index.parent=p.id AND relation_index.child=c.id
   AND not MBRContains(geom, Point( c.latitude, c.longitude)) and dr1871.id=380
 group by dr1871.gov_id;

Amtlicher Gemeindeschlüssel[Bearbeiten]

So kann man zählen, wie vielen Gemeinden ein Amtlicher Gemeindeschlüssel zugeordnet ist.

create temporary table ags ( ags char(8));
insert into ags select distinct content FROM gov_item, property, relation_index WHERE relation_index.parent=149273 AND gov_item.id=relation_index.child AND gov_item.id = property.gov_object and property.type=16 and length(content)=8;
select substring(ags,1,2) as bl , count(*) from ags group by bl;

Diese Zahlen kann man dann mit den bekannten AGS von 1993 und 2014 vergleichen und nach Bundesländern auswerten:

diff -u AGS-in-GOV.csv AGS-1993.txt  |grep ^+ | cut -c 2-3 | uniq -c


Die Abfrage beschränkt auf heute noch existierende Gemeinden:

create temporary table ags ( ags char(8));
insert into ags select distinct content FROM gov_item, property, relation_index WHERE relation_index.parent=149273 AND gov_item.id=relation_index.child AND gov_item.id = property.gov_object  and property.type=16 AND relation_index.time_end=2147483647;
select substring(ags,1,2) as bl , count(*) from ags group by bl;

Kennzahlen[Bearbeiten]

Manche Kennzahlen geben Auskunft über die Entwicklung der Qualität der im GOV enthaltenen Daten.

Anzahl Orte mit Position[Bearbeiten]

  SELECT count(*) FROM gov_item WHERE item_class ='o' AND latitude >0;

Anzahl Orte ohne Position[Bearbeiten]

  SELECT count( distinct textual_id) 
   FROM gov_item i , property p, Type t  
   WHERE (latitude =0 or latitude is null) 
    and item_class='o' AND gov_object=i.id 
    AND property_class='t' and type_object=t.id 
    and t.locatedIn=1 ;
  • Anzahl Orte ohne Elternobjekt
  • Anzahl Werte mit Quellenangaben
  • Verteilung Anzahl Elternobjekte
  • Verteilung Verschachtelungstiefe
  • Verteilung Anzahl Kindobjekte
  • Objekte mit vielen Kindobjekte

Sonstiges[Bearbeiten]