Instrução

criar uma regra de atributo para referenciar uma classe de feição em uma fonte de dados diferente.

Last Published: August 6, 2025

Resumo

Em alguns casos, pode-se desejar acessar classes de feição ou tabelas em um sistema de gerenciamento de banco de dados diferente para uso na criação de regras de atributo. Por exemplo, pode-se desejar escrever uma regra de cálculo para preencher um campo de endereço em uma classe de feição de ponto mostrando a localização das farmácias. As informações de endereço serão obtidas de outra classe de feição que reside em um banco de dados diferente. Uma maneira de atingir esse objetivo é estabelecer links de banco de dados entre os dois armazenamentos de dados, o que fornece uma maneira de acessar e consultar classes de feição. Observe que o estabelecimento de links de banco de dados varia entre os vários sistemas de gerenciamento de banco de dados.

Neste artigo, criamos um link de banco de dados entre o Microsoft SQL Server e o PostgreSQL para usar uma classe de feição (Pharmacies_Tamale) em uma regra de atributo. Essa classe de feição desempenha um papel crucial de trazer as informações necessárias para a regra. Este exemplo usa um geodatabase enterprise no banco de dados SQL Server como o ambiente de trabalho e um geodatabase no PostgreSQL contendo uma classe de feição ST_Geometry (Pharmacies_Tamale) para acessar e usar na regra.

Procedimento

Criar um link de banco de dados

  1. Se necessário, baixe e instale o driver ODBC do PostgreSQL para corresponder à versão do PostgreSQL instalada em sua máquina.
  2. Siga as instruções neste artigo para criar uma fonte de dados ODBC DSN do sistema para o banco de dados PostgreSQL.
    • Nota: para o driver, escolha o PostgreSQL ODBS Driver Unicode.
  1. Na caixa de diálogo exibida, forneça um nome e uma descrição da Fonte de dados , especifique o nome do banco de dados, a porta, o nome de usuário e a senha como parâmetros de conexão. Após concluir esse processo, teste a conexão clicando no botão Testar .
    • Neste exemplo, o nome da fonte de dados é PostgreSQL35W e o banco de dados no PostgreSQL que tem a classe de feição pharmacies_tamale é pg_database, conforme mostrado na próxima imagem.

Caixa de diálogo de configuração do driver PostgreSQL

  1. Siga as instruções no artigo para criar um link de banco de dados no SQL Server Management Studio (SSMS) entre o SQL Server e a conexão da fonte de dados PostgreSQL estabelecida. Na caixa de diálogo Novo servidor vinculado , exibida na imagem a seguir, preencha os seguintes campos:
    • Na guia Geral , digite o nome do Servidor vinculado e defina o Tipo de servidor para Outra fonte de dados.
    • Na guia Segurança , defina a opção de login de conexão para Ser feita usando este contexto de segurança e especifique o nome de usuário e a senha do usuário do Postgres
    • Na guia Opções do servidor , defina RPC e RPC Out para True.
    • Teste a conectividade clicando com o botão direito do mouse em Servidor vinculado e selecionando Testar conexão.

Especificando o servidor vinculado

Criar uma visualização para acessar a classe de feição a partir do servidor vinculado

  1. No SSMS, clique em Nova consulta
  2. Revise e digite a seguinte consulta para criar uma visualização:
-- 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 no 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.

A sintaxe a seguir representa a conversão de ST_Geometry para WKT:

ST_AsText(shape)::text as st_astext

Após converter a geometria em WKT, ela foi reconstruída no SQL Server usando a seguinte sintaxe:

Geometry::STGeomFromText(st_astext, 32630) AS Shape

Além disso, o método OPENQUERY na definição SQL nos permite executar uma consulta de passagem em um servidor vinculado especificado.

  1. Execute a consulta para criar a exibição do banco de dados.
    • A visualização DataAdmin.vw_pharmacies_tamale é criada e adicionada ao banco de dados. Em seguida, acesse a visualização no ArcGIS Pro e registre-a no geodatabase:
  2. Abra o projeto do ArcGIS Pro.
  3. No Painel de catálogo, se necessário, clique com o botão direito do mouse em Bancos de dados e conecte-se ao banco de dados em que você está trabalhando, estabelecendo uma Nova conexão de banco de dados.
  4. Expanda o banco de dados e confirme se a exibição que você criou está disponível.
  5. No painel Catálogo, no banco de dados, clique com o botão direito do mouse na visualização e escolha Registrar com geodatabase.
  6. No painel da ferramenta de geoprocessamento Registrar com geodatabase, configure os parâmetros necessários e, em seguida, Executar a ferramenta.
    • A visualização é registrada no geodatabase e agora pode ser acessada utilizando o Arcade com a função $datastore ao configurar uma regra de atributo, conforme o exemplo a seguir:
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 

Expressão Arcade no construtor de expressões

Neste artigo, exploramos a criação de uma exibição em um banco de dados do SQL Server que faz referência a uma classe de feição de um banco de dados em outra fonte de dados (PostgreSQL). Após registrar a visualização no banco de dados, pudemos consultar a visualização por meio de uma expressão Arcade ao configurar uma regra de atributo para gerar informações com base nos atributos da classe de feição no PostgreSQL.

ID do Artigo: 000032325

Obtenha suporte com IA

Resolva seu problema rapidamente com o chatbot de IA de suporte da Esri.

Comece a conversar agora

Informações Relacionadas

Descubra mais sobre este tema

Obtenha ajuda de especialistas do ArcGIS

Entre em contato com Suporte Técnico

Comece a conversar agora

Ir para as opções de download