长期以来,我一直需要使用相关表中的值来可视化、查询和筛选功能,并提出了以下解决方案,它非常适合我的用例。
用例涉及管理雨水集水池的检查和清洁(为了这篇文章的目的,我简化了工作流程)。客户希望现场工作人员能够打开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" datechecked >= DATE '{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(美元的特性.状态)){返回“记录缺失或不完整”}
我希望这对某些人有所帮助。请随时提出建议或问题。大家坚持住!
您必须是注册用户才能添加评论。如果您已经注册了,请登录。否则,请注册并登录。