HOW TO

Erstellen einer Attributregel zum Referenzieren einer Feature-Class in einer anderen Datenquelle

Last Published: August 6, 2025

Zusammenfassung

In einigen Fällen kann es sinnvoll sein, auf Feature-Classes oder -Tabellen in einem anderen Datenbankmanagementsystem zuzugreifen, um sie zum Erstellen von Attributregeln zu verwenden. Sie können z. B. eine Berechnungsregel schreiben, um ein Adressenfeld in einer Point-Feature-Class auszufüllen, in der der Standort von Apotheken angezeigt wird. Die Adresseninformationen werden aus einer anderen Feature-Class abgerufen, die sich in einer anderen Datenbank befindet. Eine Möglichkeit, dieses Ziel zu erreichen, besteht darin, Datenbankverknüpfungen zwischen den beiden Data Stores herzustellen, die eine Möglichkeit für den Zugriff auf und die Abfrage von Feature-Classes bieten. Beachten Sie, dass das Einrichten von Datenbankverknüpfungen in den verschiedenen Datenbankmanagementsystemen unterschiedlich ist.

In diesem Artikel erstellen wir eine Datenbankverknüpfung zwischen Microsoft SQL Server und PostgreSQL, um eine Feature-Class (Pharmacies_Tamale) in einer Attributregel zu verwenden. Diese Feature-Class spielt eine entscheidende Rolle bei der Bereitstellung der für die Regel benötigten Informationen. In diesem Beispiel wird eine Enterprise-Geodatabase in der SQL Server-Datenbank als Arbeitsumgebung und eine Geodatabase in PostgreSQL verwendet, die eine ST_Geometry-Feature-Class (Pharmacies_Tamale) enthält, auf die zugegriffen und die in der Regel verwendet werden soll.

Vorgehensweise

Erstellen einer Datenbankverknüpfung

  1. Laden Sie bei Bedarf den PostgreSQL-ODBC-Treiber, der der auf Ihrem Computer installierten PostgreSQL-Version entspricht, herunter, und installieren Sie ihn.
  2. Befolgen Sie die Anweisungen in diesem Artikel, um einen System-DSN anhand der ODBC-Datenquelle für die PostgreSQL-Datenbank zu erstellen.
    • Hinweis: Wählen Sie als Treiber den PostgreSQL ODBS Driver Unicode aus.
  1. Geben Sie im angezeigten Dialogfeld den Namen und die Beschreibung der Datenquelle an, und geben Sie Datenbankname, Port, Benutzername und Kennwort als Verbindungsparameter an. Wenn Sie fertig sind, testen Sie die Verbindung, indem Sie auf die Schaltfläche Test klicken.
    • In diesem Beispiel lautet der Name der Datenquelle PostgreSQL35W, und die Datenbank in PostgreSQL mit der Feature-Class pharmacies_tamale ist pg_database, wie in der nächsten Abbildung gezeigt.

Dialogfeld zur Einrichtung des PostgreSQL-Treibers

  1. Befolgen Sie die Anweisungen im Artikel, um in SQL Server Management Studio (SSMS) eine Datenbankverknüpfung zwischen SQL Server und der eingerichteten PostgreSQL-Datenquellenverbindung zu erstellen. Füllen Sie im Dialogfeld Neuer Verbindungsserver, das in der nächsten Abbildung dargestellt ist, die folgenden Felder aus:
    • Geben Sie auf der Registerkarte Allgemein den Namen für Verbindungsserver ein, und legen Sie den Servertyp auf Andere Datenquelle fest.
    • Legen Sie auf der Registerkarte Sicherheit die Option zu Anmeldung an der Verbindung auf Erfolgt unter Verwendung dieses Sicherheitskontexts fest, und geben Sie den Benutzernamen und das Kennwort des Postgres-Benutzers an
    • Legen Sie auf der Registerkarte Serveroptionen RPC und RPC-Ausgang auf True fest.
    • Testen Sie die Verbindung, indem Sie mit der rechten Maustaste auf Verbindungsserver klicken und Verbindung testen auswählen.

Angeben des Verbindungsservers

Erstellen einer Ansicht für den Zugriff auf die Feature-Class über den Verbindungsserver

  1. Klicken Sie in SSMS auf Neue Abfrage.
  2. Überprüfen Sie die folgende Abfrage, und geben Sie sie ein, um eine Sicht zu erstellen:
-- Setting work environment
Use sqlDatabase
Go
-- Creating a view
Create view DataAdmin.vw_pharmacies_tamale
as
select
	objectid,
	name,
	location,
	type,
	class,
	address,
	globalid,
	geometry::STGeomFromText(st_astext, 32630) AS Shape -- rebuilding geometry
From
	OPENQUERY(
		[LINK_TO_POSTGRESQL],
		'Select
			objectid,
			name,
			location,
			type,
			class,
			address,
			globalid,
			ST_AsText(shape)::text as st_astext -- converting from st_geometry to WKT
			from pg_database.editor.pharmacies_tamale')

SQL-Abfrage in SSMS

Note: 
PostgreSQL and SQL Server store geometry data using different spatial types. Hence, to access a geometric object from PostgreSQL in SQL Server, we first converted it to the Well-Known Text (WKT) format.

Die folgende Syntax stellt die Umwandlung von ST_Geometry in WKT dar:

ST_AsText(shape)::text as st_astext

Nach dem Konvertieren der Geometrie in WKT wurde sie in SQL Server mit der folgenden Syntax rekonstruiert:

Geometry::STGeomFromText(st_astext, 32630) AS Shape

Außerdem ermöglicht uns die OPENQUERY-Methode in der SQL-Definition, eine Passthrough-Abfrage auf einem angegebenen Verbindungsserver auszuführen.

  1. Führen Sie die Abfrage aus, um die Datenbanksicht zu erstellen.
    • Die Sicht DataAdmin.vw_pharmacies_tamale wird erstellt und der Datenbank hinzugefügt. Greifen Sie als Nächstes auf die Sicht in ArcGIS Pro zu, und registrieren Sie sie bei der Geodatabase:
  2. Öffnen Sie das ArcGIS Pro-Projekt.
  3. Klicken Sie bei Bedarf im Bereich "Katalog" mit der rechten Maustaste auf Datenbanken, und stellen Sie eine Verbindung mit der Datenbank her, in der Sie arbeiten, indem Sie mithilfe der Option Neue Datenbankverbindung eine neue Verbindung herstellen.
  4. Erweitern Sie die Datenbank, und überprüfen Sie, ob die von Ihnen erstellte Sicht verfügbar ist.
  5. Klicken Sie im "Bereich" Katalog in der Datenbank mit der rechten Maustaste auf die Sicht, und wählen Sie In Geodatabase registrieren aus.
  6. Legen Sie im Bereich des Geoverarbeitungswerkzeugs In Geodatabase registrieren die erforderlichen Parameter fest, und klicken Sie dann auf Ausführen, um das Werkzeug auszuführen.
    • Die Sicht ist in der Geodatabase registriert und kann nun über Arcade mit der $datastore-Funktion beim Einrichten der Attributregeln aufgerufen werden. Siehe folgendes Beispiel:
var pharma = FeatureSetByName($datastore,"DataAdmin.vw_pharmacies_tamale", ["Address"])
var closestpharma = Intersects(pharma, BufferGeodetic($feature, "1000", "feet"))
var Fpharma = First(closestpharma)
//var Npharma = NearestCoordinate(Fpharma, $feature)
if (Fpharma == null) return {"errormessage": "no pharmacies are closeby"}
return Fpharma.Address 

Arcade-Ausdruck in Expression Builder

In diesem Artikel haben wir uns mit dem Erstellen einer Sicht in einer SQL Server-Datenbank befasst, die eine Feature-Class aus einer Datenbank in einer anderen Datenquelle (PostgreSQL) referenziert. Nach dem Registrieren der Sicht in der Datenbank konnten wir beim Einrichten einer Attributregel zur Generierung von Informationen auf der Grundlage der Attribute in der Feature-Class in PostgreSQL über einen Arcade-Ausdruck auf die Sicht verweisen.

Artikel-ID: 000032325

Holen Sie sich Unterstützung mit KI

Lösen Sie Ihr Problem schnell mit dem Esri Support AI Chatbot.

Beginnen Sie jetzt mit dem Chatten

Zugehörige Informationen

Weitere Informationen zu diesem Thema erkunden

Unterstützung durch ArcGIS-Experten anfordern

An den technischen Support wenden

Beginnen Sie jetzt mit dem Chatten

Zu Download-Optionen wechseln