ArcGIS Pro Questions中相关表的主题定义查询 //www.gobook3.com/t5/arcgis-pro-questions/definition-queries-on-related-tables/m-p/1072452#M42496

我有一个包含水监测位置信息的点特征层。这包括一个唯一的位置ID、记录值的上限和下限以及(我想要的)该位置的当前值。(表1)< / P > < P > < >强表1:< /强> < / P > <表边界= " 1 "宽=“100%”> < TBODY > < TR > < TD宽度=“20%”高度=“24 px”> Gid < / TD > < TD宽度=“20%”高度=“24 px”> Location_ID < / TD > < TD宽度=“20%”高度=“24 px”> Upper_Limit_m < / TD > < TD宽度=“20%”高度=“24 px”> Lower_Limit_m < / TD > < TD宽度=“20%”高度=“24 px”> Current_Value_m < / TD > < / TR > < TR > < TD宽度=“20%”高度=“39 px”> 1 < / TD > < TD宽度=“20%”高度=“39 px”> < P > 1 GW < / P > < / TD > < TD宽度=“20%”高度=“39 px”> 880 < P > < / P > < / TD > < TD宽度=“20%”高度=“39 px”> 850 < / TD > < TD宽度=“20%”高度= " 39 px”>,< / TD > < / TR > < TR > < TD宽度= =“39 px”>“20%”高度2 < / TD > < TD宽度=“20%”高度=“39 px”> < P > 2 GW < / P > < / TD > < TD宽度=“20%”高度=“39 px”> 886 < / TD > < TD宽度=“20%”高度=“39 px”> 856 < / TD > < TD宽度=“20%”高度=“39 px”>,< / TD > < / TR > < TR > < TD宽度=“20%”高度=“39 px”> 3 < / TD > < TD宽度=“20%”高度=“39 px”> < P > GW 3 < / P > < / TD > < TD宽度=“20%”高度=“39 px”> 884 < / TD > < TD宽度=“20%”高度=“39 px”> 854 < / TD > < TD宽度=“20%”高度=“39 px”>,< / TD > < / TR > < / TBODY > < /表> < P >, < / P > < P >我也有一个表,其中包含在上面列出的那些位置记录值的历史记录。(表2)< / P > < P > < >强表2:< /强> < / P > <表边界= " 1 "宽=“100%”> < TBODY > < TR > < TD宽度=“33.333333333333336%”高度=“24 px”> Location_ID < / TD > < TD宽度=“33.333333333333336%”高度=“24 px”>日期< / TD > < TD宽度=“33.333333333333336%”高度=“24 px”> Recorded_Value < / TD > < / TR > < TR > < TD宽度=“33.333333333333336%”高度=“39 px”> < P > 1 GW < / P > < / TD > < TD宽度=“33.333333333333336%”高度=“39 px”> < P > 01/06/2021 < / P > < / TD > < TD宽度=“33.333333333333336%”高度=“39 px”> < P > 867.3 < / P > < / TD > < / TR > < TR > < TD高度="39px">

GW 2

< TD height="39px">894.1

GW 3

01/06/2021843.9

GW 1

< /TD>862.4

我能够在这两个表之间创建一个使用Location_ID作为主键的关系,使用一对多的基数。 

我想要实现的是“连接”表2的Recorded_Value列中的最新值到表1中的每个唯一监控位置(Location_ID)的Current_Value列中。此外,我需要确保Recorded_Value(来自表2)在上限和下限(来自表1)之内。

我认为我可能能够使用定义查询(特别是使用SQL)来实现这一点。
这可能吗?如果是这样,在定义查询中使用相关表中的值的语法是什么? Or is there an alternative way that I can achieve this?

2021年6月25日星期五06:13:39 GMT Nic_Pickering 2021 - 06 - 25 - t06:13:39z 在相关表上定义查询 //www.gobook3.com/t5/arcgis-pro-questions/definition-queries-on-related-tables/m-p/1072452#M42496

我有一个包含水监测位置信息的点特征层。这包括一个唯一的位置ID、记录值的上限和下限以及(我想要的)该位置的当前值。(表1)< / P > < P > < >强表1:< /强> < / P > <表边界= " 1 "宽=“100%”> < TBODY > < TR > < TD宽度=“20%”高度=“24 px”> Gid < / TD > < TD宽度=“20%”高度=“24 px”> Location_ID < / TD > < TD宽度=“20%”高度=“24 px”> Upper_Limit_m < / TD > < TD宽度=“20%”高度=“24 px”> Lower_Limit_m < / TD > < TD宽度=“20%”高度=“24 px”> Current_Value_m < / TD > < / TR > < TR > < TD宽度=“20%”高度=“39 px”> 1 < / TD > < TD宽度=“20%”高度=“39 px”> < P > 1 GW < / P > < / TD > < TD宽度=“20%”高度=“39 px”> 880 < P > < / P > < / TD > < TD宽度=“20%”高度=“39 px”> 850 < / TD > < TD宽度=“20%”高度= " 39 px”>,< / TD > < / TR > < TR > < TD宽度= =“39 px”>“20%”高度2 < / TD > < TD宽度=“20%”高度=“39 px”> < P > 2 GW < / P > < / TD > < TD宽度=“20%”高度=“39 px”> 886 < / TD > < TD宽度=“20%”高度=“39 px”> 856 < / TD > < TD宽度=“20%”高度=“39 px”>,< / TD > < / TR > < TR > < TD宽度=“20%”高度=“39 px”> 3 < / TD > < TD宽度=“20%”高度=“39 px”> < P > GW 3 < / P > < / TD > < TD宽度=“20%”高度=“39 px”> 884 < / TD > < TD宽度=“20%”高度=“39 px”> 854 < / TD > < TD宽度=“20%”高度=“39 px”>,< / TD > < / TR > < / TBODY > < /表> < P >, < / P > < P >我也有一个表,其中包含在上面列出的那些位置记录值的历史记录。(表2)< / P > < P > < >强表2:< /强> < / P > <表边界= " 1 "宽=“100%”> < TBODY > < TR > < TD宽度=“33.333333333333336%”高度=“24 px”> Location_ID < / TD > < TD宽度=“33.333333333333336%”高度=“24 px”>日期< / TD > < TD宽度=“33.333333333333336%”高度=“24 px”> Recorded_Value < / TD > < / TR > < TR > < TD宽度=“33.333333333333336%”高度=“39 px”> < P > 1 GW < / P > < / TD > < TD宽度=“33.333333333333336%”高度=“39 px”> < P > 01/06/2021 < / P > < / TD > < TD宽度=“33.333333333333336%”高度=“39 px”> < P > 867.3 < / P > < / TD > < / TR > < TR > < TD高度="39px">

GW 2

< TD height="39px">894.1

GW 3

01/06/2021843.9

GW 1

< /TD>862.4

我能够在这两个表之间创建一个使用Location_ID作为主键的关系,使用一对多的基数。 

我想要实现的是“连接”表2的Recorded_Value列中的最新值到表1中的每个唯一监控位置(Location_ID)的Current_Value列中。此外,我需要确保Recorded_Value(来自表2)在上限和下限(来自表1)之内。

我认为我可能能够使用定义查询(特别是使用SQL)来实现这一点。
这可能吗?如果是这样,在定义查询中使用相关表中的值的语法是什么? Or is there an alternative way that I can achieve this?

2021年6月25日星期五06:13:39 GMT //www.gobook3.com/t5/arcgis-pro-questions/definition-queries-on-related-tables/m-p/1072452#M42496 Nic_Pickering 2021 - 06 - 25 - t06:13:39z
Re:在相关表上定义查询 //www.gobook3.com/t5/arcgis-pro-questions/definition-queries-on-related-tables/m-p/1073103#M42572

有几种可能性,这取决于你正在使用什么

 

如果你有一个企业地理数据库,显示最新的记录是非常容易的:创建一个查询层(存储在地图文档中)或一个数据库视图(存储在数据库中)使用以下SQL:

SELECT t1。*, t2。*从表1 t1中查询表2 GROUP BY Location_ID的MaxDate值。Location_ID = MaxDates。Location_ID INNER JOIN表2 t2 ON MaxDates。Location_ID = t2。Location_ID和MaxDates。

 这两个工具都可以在数据管理工具箱的工具集“图层和表视图”中找到。

 

如果你在ArcGIS Pro中工作,你可以使用属性规则。
https://pro.arcgis.com/en/pro-app/2.7/help/data/geodatabases/overview/an-overview-of-attribute-rules.htm

//约束规则//表2 //触发器:插入,更新//如果Recorded_Value不在表1中定义的上限和下限内,则拒绝编辑//加载表1 var tbl_1 = FeatureSetByName($datastore, "Table1", "*", false) //通过Location_ID var loc_id = $feature过滤表1Location_ID var loc = First(Filter(tbl_1, "Location_ID = @loc_id")) //测试如果值落在边界内,返回true或false var val = $feature。Recorded_Value if(val >= loc。Lower_Limit_m,,val <= loc.Upper_Limit_m) {return true} return false//计算规则//表2 //字段:Recorded_Value //触发器:Insert //如果你在表2中添加一条新记录,Recorded_Value将被写入表1。CurrentValue_m //这假设您添加的记录实际上是最新的记录!//加载表1并获取位置var loc_id = $feature的globalID。LocationID var g_id = First(Filter(FeatureSetByName($datastore, "Table1", ["Location_ID", "GlobalID"], false), "Location_ID = @loc_id")).GlobalID // write the Rcorded_Value into Table1.Current_Value_m return { "result": $feature.Recorded_Value, "edit": [ { "className": "Table1", "updates": [ {"globalID": g_id, "attributes": {"Current_Value_m": $feature.Recorded_Value}}, ] } ] }

 

If none of that works for you, you can use a Python script, but you'd have to manually run it every time you insert new records.

2021年6月28日星期一07:42:47 GMT //www.gobook3.com/t5/arcgis-pro-questions/definition-queries-on-related-tables/m-p/1073103#M42572 JohannesLindner 2021 - 06 - 28 - t07:42:47z