长期以来,我一直需要使用相关表中的值来可视化、查询和过滤功能,并提出了以下解决方案,它非常适合我的用例。
用例涉及管理雨水集水盆的检查和清洁(我简化了这篇文章的工作流程)。客户希望现场工作人员能够打开Collector,快速查看需要注意或超过一年未检查/清洁的盆地,并在仪表板上提供相同的信息。
这很容易设置:
以上每一步的详情:
从arcgis进口地理信息系统从arcgis。特性进口FeatureLayer进口熊猫作为pd从arcgis。特性进口SpatialDataFrame从datetime进口datetime,timedelta进口时间地理信息系统=地理信息系统(f“https://someorg.maps.arcgis.com”,“someuser”,“somepass”)defupdate_basins():一天=datetime。今天()-timedelta(天=1)string_day=一天。strftime(' % Y - % - % d % H: % m: % S的)where_query=f"日期检查过的>=日期'{string_day}'"catch_basins=地理信息系统。内容。得到(“21343 f6579b74cf212576e5614db8866”)catch_basins_lyr=catch_basins。层[0]catch_basins_sdf=SpatialDataFrame。from_layer(catch_basins_lyr)catch_basins_fset=catch_basins_lyr。查询()catch_basins_features=catch_basins_fset。功能cleanings_url=“https://services9.arcgis.com/iERASXD4kaw1L6en/arcgis/rest/services/this_is_an_example/FeatureServer/1”cleanings_lyr=FeatureLayer(cleanings_url)cleanings_sdf=SpatialDataFrame。from_layer(cleanings_lyr)cleanings_fset=cleanings_lyr。查询(在哪里=where_query,out_fields=“检查日期,设施id,状态”)cleanings_features=cleanings_fset。df特性=cleanings_sdf。sort_values(“DateInspected”,提升=假)df=df。drop_duplicates(子集=“FacilityID”)overlap_rows=pd。合并(左=catch_basins_sdf,正确的=df,如何=“内心”,在=“FacilityID”)catch_basin_features=catch_basins_fset。功能cleaning_updates=cleanings_fset。功能cleaning_updates。反向()def更新(盆地,做一):为FacilityID在overlap_rows[“FacilityID”]:试一试:basin_feature=[f为f在catch_basin_features如果f。属性[“FacilityID”]==FacilityID][0]cleaning_feature=[f为f在cleanings_features如果f。属性[“FacilityID”]==FacilityID][0]basin_feature。属性[“LastCleaning”]=cleaning_feature。属性[“DateInspected”]basin_feature。属性[“状态”]=cleaning_feature。属性[“状态”]catch_basins_lyr。edit_features(更新=[basin_feature])打印(f”{basin_feature更新。属性[“FacilityID”]}status to {basin_feature.attributes['Status']}",冲洗=真正的)除了:继续更新(catch_basins_features,cleaning_updates)而真正的:update_basins()时间。睡眠(60)
var现在=现在()varlast_cleaning=美元的特性。LastCleaningvarcleaning_age=DateDiff(现在,last_cleaning,“年”);如果(cleaning_age<1& &美元的特性。状态==“CleaningComplete”){返回“当前”}其他的如果(美元的特性。状态==“NeedsAttention”){返回“需要关注”}其他的如果(cleaning_age>1){返回“过期”}其他的如果(IsEmpty(美元的特性。状态)){返回“记录缺失或不完整”}
我希望这对某人有帮助。请随时提供建议或提出问题。大家坚持住!
您必须是注册用户才能添加评论。如果您已经注册,请登录。否则,请注册并登录。