ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Hilfe
  • Sign Out
ArcGIS Desktop

ArcGIS Online

Die Mapping-Plattform für Ihre Organisation

ArcGIS Desktop

Ein vollständiges professionelles GIS

ArcGIS Enterprise

GIS in Ihrem Unternehmen

ArcGIS Developers

Werkzeuge zum Erstellen standortbezogener Apps

ArcGIS Solutions

Kostenlose Karten- und App-Vorlagen für Ihre Branche

ArcGIS Marketplace

Rufen Sie Apps und Daten für Ihre Organisation ab.

  • Dokumentation
  • Support
Esri
  • Anmelden
user
  • Eigenes Profil
  • Abmelden

ArcMap

  • Startseite
  • Erste Schritte
  • Karte
  • Analysieren
  • Daten verwalten
  • Werkzeuge
  • Erweiterungen

Beziehungsabfragen

Ein häufiger Grund für die Abfrage von Geodatabase-Systemtabellen ist die Suche nach Geodatabase-Elementen, die mit einem Dataset in Verbindung stehen. Dies umfasst beispielsweise das Suchen nach den Inhalten eines Feature-Datasets, das Ermitteln der an einer Topologie oder einem geometrischen Netzwerk beteiligten Feature-Classes sowie das Suchen nach Datasets, die in einem Geodatabase-Replikat enthalten sind. Da alle Elemente und Beziehungen in den gleichen Systemtabellen gespeichert werden, können Sie für alle genannten Fälle eine einzige Abfrage verwenden. Bestimmen Sie dazu das jeweilige Element mit Zeichenfolgenliteralen. Diese Abfrage kann mit folgenden Schritten ausgeführt werden:

  • Suchen Sie die UUID des Ursprungselements (z. B. ein Feature-Dataset).
  • Suchen Sie alle Beziehungen mit der UUID als Ursprungs-UUID.
  • Suchen Sie für jede Ziel-UUID das entsprechende Element, und lösen Sie den Typ mithilfe der Tabelle "GDB_ItemTypes" auf.

Nachfolgend finden Sie eine SQL-Abfrage, die diese Schritte in eine Geodatabase in Microsoft SQL Server einfügt. Um das abgefragte Element zu ändern, ändern Sie die beiden Zeichenfolgenvariablen, die am Anfang deklariert wurden.

--Queries a dbo-schema geodatabase in SQL Server
DECLARE @ORIGIN nvarchar(max);
DECLARE @ORIGIN_TYPE nvarchar(max);
SET @ORIGIN = 'Montgomery.Sasha.Landbase';
SET @ORIGIN_TYPE = 'Feature Dataset';
SELECT
 DEST_ITEMS.Name AS "Name"
 DEST_TYPES.Name AS "Type"
FROM
 -- Get the unique ID of the origin item.
 ((((SELECT UUID, Type FROM dbo.GDB_ITEMS WHERE Name = @ORIGIN) AS src_items
 INNER JOIN
 (SELECT UUID FROM dbo.GDB_ITEMTYPES WHERE Name = @ORIGIN_TYPE) AS src_types
 ON src_items.Type = src_types.UUID)
 --Get the UUIDs of related items.
 INNER JOIN
 dbo.GDB_ITEMRELATIONSHIPS AS relationships
 ON src_items.UUID = relationships.OriginID) 
 -- Resolve the names of the destination items.
 INNER JOIN
 dbo.GDB_ITEMS AS dest_items
 ON relationships.DestID = dest_items.UUID)
 -- Get the types as human-readable strings.
 INNER JOIN
 dbo.GDB_ITEMTYPES AS dest_types
 ON dest_items.Type = dest_types.UUID

Im Falle eines Feature-Datasets wird eine Liste mit einem ähnlichen Ergebnis wie beim Durchsuchen eines Feature-Datasets in ArcCatalog zurückgegeben. Diese kann Feature-Classes, Beziehungsklassen und Controller-Datasets wie Topologien, Netzwerk-Datasets und Parcel-Fabrics enthalten. Darüber hinaus enthält das Feature-Dataset möglicherweise einige Elemente, die nicht in ArcCatalog aufgeführt werden, z. B. die von Topologien verwendeten Feature-Classes nicht überprüfter Bereiche.

Dies funktioniert zwar für Beziehungen wie Datasets in Feature-Dataset und Feature-Classes in Topologie, allerdings ist eine geringfügige Änderung erforderlich, wenn Sie die Ursprungselemente von Beziehungen auf Grundlage eines bestimmten Zielelements suchen möchten. Beispiele für diese Art von Beziehungsnavigation: Herausfinden, welche Datasets eine bestimmte Domäne verwenden, zu welchem Replikat ein Replikat-Dataset gehört oder an welchen Controller-Datasets eine Feature-Class beteiligt ist. Nachfolgend finden Sie eine angepasste Version der vorherigen Abfrage, die so geändert wurde, dass in Beziehung stehende Elemente nach Zielelement statt nach Ursprungselement gesucht werden:

--Queries a dbo-schema geodatabase in SQL Server
DECLARE @DEST nvarchar(max);
DECLARE @DEST_TYPE nvarchar(max);
SET @DEST = 'Angle';
SET @DEST_TYPE = 'Range Domain';
SELECT
 SRC_ITEMS.Name AS "Name",
 SRC_TYPES.Name AS "Type"
FROM
 -- Get the unique ID of the destination item.
 ((((SELECT UUID, Type FROM dbo.GDB_ITEMS WHERE Name = @DEST) AS dest_items
 INNER JOIN
 (SELECT UUID FROM dbo.GDB_ITEMTYPES WHERE Name = @DEST_TYPE) AS dest_types
 ON dest_items.Type = dest_types.UUID)
 -- Get the UUIDs of related items.
 INNER JOIN
 dbo.GDB_ITEMRELATIONSHIPS AS relationships
 ON dest_items.UUID = relationships.DestID)
 -- Resolve the names of the origin items.
 INNER JOIN
 dbo.GDB_ITEMS AS src_items
 ON relationships.OriginID = src_items.UUID)
 -- Get the types as human-readable strings.
 INNER JOIN
 dbo.GDB_ITEMTYPES AS src_types
 ON src_items.Type = src_types.UUID

ArcGIS Desktop

  • Startseite
  • Dokumentation
  • Support

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

Über Esri

  • Über uns
  • Karriere
  • Esri Blog
  • User Conference
  • Developer Summit
Esri
Wir sind an Ihrer Meinung interessiert.
Copyright © 2021 Esri. | Datenschutz | Rechtliches