Instrução
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.


-- 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')

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.
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

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 ajuda de especialistas do ArcGIS
Comece a conversar agora