Hi all,
I'm hoping this would be an easy Yes or No answer. Is there a way to rewrite this expression so performance speed could be improved? Currently it does run correctly, but takes 7-10min to finish. End result will be a count of failing inspections within high priority features in an Indicator widget in ArcGIS Dashboard.
Thanks!
Caitlin
// set portal variable and feature set of failing ramp inspections
var portals = portal('Some org url');
var mRamp = FeatureSetByPortalItem(portals, 'some item id',8,['PassFail','CalibrationDate','latitude','longitude','GlobalID'], true);
var sql = `PassFail = 'Fail'`;
Var FailRamps = Filter(mRamp,sql);
//set feature sets of prox priorities
var Parks = FeatureSetByPortalItem(portals, 'some item id',4,['name','approx_acres','GlobalID','latitude','longitude'],true);
var GovFacility = FeatureSetByPortalItem(portals, 'some item id',8,['GlobalID','MAPTAXLOT','STATCLDES','AscendAcres'],true);
var PublicFacility = FeatureSetByPortalItem(portals, 'some item id',7,['GlobalID','MAPTAXLOT','STATCLDES','AscendAcres'],true);
var CareFacility = FeatureSetByPortalItem(portals, 'some item id',9,['GlobalID','MAPTAXLOT','STATCLDES','AscendAcres'],true);
var SchoolFacility = FeatureSetByPortalItem(portals, 'some item id',6,['GlobalID','MAPTAXLOT','STATCLDES','AscendAcres'],true);
var ZoningLayer = FeatureSetByPortalItem(portals, 'some item id',20,['ZONE_NAME','GlobalID'],true);
//add FailRamp feature to captured ramps counter when it is within 0.125 miles of a priority facility
var capturedRamps = 0;
for(var f in GovFacility){
var govbuff = BufferGeodetic(f, 0.125, 'miles');
If(Count(Intersects(FailRamps,govbuff))>0) {
capturedRamps ++;
}
}
for(var f in CareFacility){
var carebuff = BufferGeodetic(f, 0.125, 'miles');
If(Count(Intersects(FailRamps,carebuff))>0) {
capturedRamps ++;
}
}
for(var f in PublicFacility){
var pubbuff = BufferGeodetic(f, 0.125, 'miles');
If(Count(Intersects(FailRamps,pubbuff))>0) {
capturedRamps++;
}
}
for(var f in SchoolFacility){
var schlbuff = BufferGeodetic(f, 0.125, 'miles');
If(Count(Intersects(FailRamps,schlbuff))>0) {
capturedRamps ++;
}
}
for(var f in Parks){
var parkbuff = BufferGeodetic(f, 0.125, 'miles');
If(Count(Intersects(FailRamps,parkbuff))>0) {
capturedRamps ++;
}
}
for(var f in Zoninglayer){
If(Count(Intersects(FailRamps,f))>0) {
capturedRamps ++;
}
}
return capturedRamps