CÓMO

Crear una regla de atributos para hacer referencia a una clase de entidad en una fuente de datos diferente

Last Published: August 6, 2025

Resumen

En algunos casos, es posible que desee acceder a clases de entidad o tablas en un sistema de administración de base de datos diferente para utilizarlas al crear reglas de atributos. Por ejemplo, es posible que desee escribir una regla de cálculo para rellenar un campo de dirección en una clase de entidad de punto que muestre la ubicación de las farmacias. La información de dirección se obtendrá de otra clase de entidad que resida en una base de datos diferente. Una forma de lograr este objetivo es establecer vínculos de base de datos entre los dos data stores, lo que proporciona una forma de acceder y consultar clases de entidad. Tenga en cuenta que el establecimiento de vínculos de base de datos varía entre los distintos sistemas de administración de base de datos.

En este artículo, creamos un vínculo de base de datos entre Microsoft SQL Server y PostgreSQL para usar una clase de entidad (Pharmacies_Tamale) en una regla de atributos. Esta clase de entidad desempeña un papel crucial a la hora de aportar la información necesaria para la regla. En este ejemplo se utiliza una geodatabase corporativa en la base de datos de SQL Server como entorno de trabajo y una geodatabase en PostgreSQL que contiene una clase de entidad ST_Geometry (Pharmacies_Tamale) a la que se puede acceder y que se puede utilizar en la regla.

Procedimiento

Crear un vínculo de base de datos

  1. Si es necesario, descargue e instale el controlador ODBC de PostgreSQL para que coincida con la versión de PostgreSQL instalada en su equipo.
  2. Siga las instrucciones de este artículo para crear un origen de datos ODBC de sistema (DSN) en la base de datos PostgreSQL.
    • Nota: Para el controlador, elija el controlador ODBC de PostgreSQL Unicode.
  1. En el cuadro de diálogo que aparece, proporcione un nombre y una descripción de la fuente de datos, especifique el nombre de la base de datos, el puerto, el nombre de usuario y la contraseña como parámetros de conexión. Una vez hecho esto, pruebe la conexión haciendo clic en el botón Probar.
    • En este ejemplo, el nombre de la fuente de datos es PostgreSQL35W y la base de datos de PostgreSQL que tiene la clase de entidad pharmacies_tamale es pg_database, como se muestra en la siguiente imagen.

Cuadro de diálogo de configuración del controlador PostgreSQL

  1. Siga las instrucciones del artículo para crear un vínculo de base de datos en SQL Server Management Studio (SSMS) entre SQL Server y la conexión de fuente de datos PostgreSQL establecida. En el cuadro de diálogo Nuevo servidor vinculado, que se muestra en la siguiente imagen, complete los siguientes campos:
    • En la pestaña General, escriba el nombre del servidor vinculado y establezca el tipo de servidor en Otra fuente de datos.
    • En la pestaña Seguridad, establezca la opción de inicio de sesión de conexión en Realizar con este contexto de seguridad y especifique el nombre de usuario y la contraseña del usuario de Postgres
    • En la pestaña Opciones del servidor, establezca RPC y RPC Out en True.
    • Pruebe la conectividad haciendo clic con el botón derecho en Servidor vinculado y seleccionando Probar conexión.

Especificar el servidor vinculado

Crear una vista para acceder a la clase de entidad desde el servidor vinculado

  1. En SSMS, haga clic en Nueva consulta
  2. Revise y escriba la siguiente consulta para crear una vista:
-- 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')

Consulta SQL en 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.

La siguiente sintaxis representa la conversión de ST_Geometry a WKT:

ST_AsText(shape)::text as st_astext

Después de convertir la geometría a WKT, se reconstruyó en SQL Server con la siguiente sintaxis:

Geometry::STGeomFromText(st_astext, 32630) AS Shape

Además, el método OPENQUERY en la definición de SQL nos permite ejecutar una consulta de paso a través en un servidor vinculado específico.

  1. Ejecute la consulta para crear la vista de base de datos.
    • La vista DataAdmin.vw_pharmacies_tamale se crea y se agrega a la base de datos. A continuación, acceda a la vista en ArcGIS Pro y regístrela en la geodatabase:
  2. Abra el proyecto de ArcGIS Pro.
  3. En el panel Catálogo, si es necesario, haga clic con el botón derecho en Bases de datos y conéctese a la base de datos en la que está trabajando estableciendo una nueva conexión de base de datos.
  4. Expanda la base de datos y confirme que la vista que creó está disponible.
  5. En el panel Catálogo, en la base de datos, haga clic con el botón derecho en la vista y elija Registrar con geodatabase.
  6. En el panel de la herramienta de geoprocesamiento Registrar con geodatabase, establezca los parámetros necesarios y, a continuación, ejecute la herramienta.
    • La vista se registra en la geodatabase y ahora se puede acceder a ella mediante Arcade con la función $datastore al configurar una regla de atributos, como se muestra en el siguiente ejemplo:
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 

Expresión de Arcade en el Constructor de expresiones

En este artículo hemos analizado cómo crear una vista en una base de datos de SQL Server que haga referencia a una clase de entidad de una base de datos en otra fuente de datos (PostgreSQL). Después de registrar la vista en la base de datos, pudimos hacer referencia a la vista a través de una expresión de Arcade al configurar una regla de atributos para generar información basada en los atributos de la clase de entidad en PostgreSQL.

Id. de artículo: 000032325

Obtenga soporte con IA

Resuelva su problema rápidamente con el chatbot de inteligencia artificial de soporte de Esri.

Empieza a chatear ahora

Información relacionada

Descubrir más sobre este tema

Obtener ayuda de expertos en ArcGIS

Contactar con el soporte técnico

Empieza a chatear ahora

Ir a opciones de descarga