操作方法
在上一篇文章创建属性规则以访问不同数据库中的要素类中,我们探讨了如何创建和注册一个视图,该视图用于访问同一 SQL Server 实例上不同企业级地理数据库中的要素类。 随后使用了该视图来创建属性规则。 本文采取了一种略有不同的方法,即在单独的 SQL 服务器实例上创建视图。 当您没有所需权限,无法查询要在创建属性规则时使用的要素类时,此方法尤其有用。
在本示例中,我们使用 Microsoft SQL Server 尝试访问存储在同一网络上不同实例的 DataLab 地理数据库中的 DataLabOwner 拥有的 FAVORITEFOODANDLOCALE 要素类。 为此,我们必须创建一个数据库链接以访问单独实例上的数据。
Use sqlDatabase
Go
Create view DataAdmin.vw_FavoriteFoodandLocale_LS1
as
Select *
from
OPENQUERY([10.150.51.50],
'Select
OBJECTID,
Place,
Item,
IsBeverage,
State,
Shape,
GlobalID,
GDB_GEOMATTR_DATA
From DataLab.DataLabOwner.FAVORITEFOODANDLOCALE')
在本示例中,sqlDatabase 为实例上的活动数据库,视图的名称为 vw_FavoriteFoodandLocale_LS1,方案所有者为 DataAdmin。 将传递 OPENQUERY 方法来执行直通查询以访问链接服务器 [10.150.51.50] 中的表。
随即将该视图注册到地理数据库,现在可以在设置属性规则时使用 Arcade 和 $datastore 函数进行访问,如以下示例和图像所示。
var fnl = FeatureSetByName
($datastore,"DATAADMIN.vw_FavoriteFoodandLocale_LS1, ["Place"])
var ffnl = Intersects(fnl, $feature)
var F = First(ffnl)
//var NPharma = NearestCoordinate(Fpharma, $feature)
if (F == null) return {"errorMessage: "Outside the county"}
return F.Place

此属性规则将使用相交视图图层 (DATAADMIN.vw_FavoriteFoodandLocale_LS1) 的地名填充面要素类 (DATAADMIN.Counties) 中的字段 (FnL),如下图所示。

在本文中,我们探讨了在 SQL Server 数据库中创建一个视图,该视图将引用来自不同 SQL Server 实例中另一个数据库的要素类。 我们在以数据所有者身份进行连接时,创建了与目标实例的链接服务器,由此赋予我们访问和查询活动实例中图层的权限。
将视图注册到数据库后,我们就能够在设置属性规则时通过 Arcade 表达式引用该视图,以根据另一个实例中要素类的属性生成信息。
文章 ID: 000032575
获取来自 ArcGIS 专家的帮助
立即开始聊天