Select to view content in your preferred language

Arcade Script Working in some area and not working in some area

351
2
01-09-2024 11:08 PM
Labels (3)
HarishKV
Occasional Contributor

@HusseinNasser2 

I am using ArcGIS Pro Version 3.2, Enterprise 11.2 and Enterprise DB Postgres 15. I had ported all my data to enterprise db and added all the attribute rules and checked the output, which was working good in all the places. But when enabled branch versioning and published the feature layer these attribute rules working abnormally. At some geography its working good and some places not. Very different from enterprise db. Can you help me solve the issue.

 

Attribute rules used for the project also been added below for your reference. Appreciate your quick response, Since the issue faced in prod data.

 

1.PLOT ID:

var intersectLayer = FeatureSetByName($datastore, "test_training.sde.Village", ['taluk'], false);
var attributeName = 'taluk';

var intersectingFeatures = Intersects(intersectLayer, $feature);
var intersectedFeature = First(intersectingFeatures);
if (intersectedFeature == null) return 'NA';

var attributeValue = intersectedFeature[attributeName];


// Concatenate LBCode and the unique sequence number
var projectID = attributeValue;

return projectID;


2.PLOT AREA

var editingFeature = $feature;
var editingGeometry = Geometry(editingFeature);
var area = Area(editingGeometry);
var formattedArea = Round(area, 2);
return formattedArea


3.DISTRICT

var intersectLayer = FeatureSetByName($datastore, "test_training.sde.Localbody_Boundary", ['DISTRICT'], false);
var attributeName = 'DISTRICT';

var intersectingFeatures = Intersects(intersectLayer, $feature);
var intersectedFeature = First(intersectingFeatures);
if (intersectedFeature == null) return 'NA';

var attributeValue = intersectedFeature[attributeName];


// Concatenate LBCode and the unique sequence number
var projectID = attributeValue;

return projectID;

4.TALUK

var intersectLayer = FeatureSetByName($datastore, "test_training.sde.Village", ['taluk'], false);
var attributeName = 'taluk';

var intersectingFeatures = Intersects(intersectLayer, $feature);
var intersectedFeature = First(intersectingFeatures);
if (intersectedFeature == null) return 'NA';

var attributeValue = intersectedFeature[attributeName];


// Concatenate LBCode and the unique sequence number
var projectID = attributeValue;

return projectID;

5.VILLAGE

var intersectLayer = FeatureSetByName($datastore, "test_training.sde.Village", ['village'], false);
var attributeName = 'village';

var intersectingFeatures = Intersects(intersectLayer, $feature);
var intersectedFeature = First(intersectingFeatures);
if (intersectedFeature == null) return 'NA';

var attributeValue = intersectedFeature[attributeName];


// Concatenate LBCode and the unique sequence number
var projectID = attributeValue;

return projectID;

6.LOCALBODY

var intersectLayer = FeatureSetByName($datastore, "test_training.sde.Localbody_Boundary", ['LB_NAME_EN'], false);
var attributeName = 'LB_NAME_EN';

var intersectingFeatures = Intersects(intersectLayer, $feature);
var intersectedFeature = First(intersectingFeatures);
if (intersectedFeature == null) return 'NA';

var attributeValue = intersectedFeature[attributeName];


// Concatenate LBCode and the unique sequence number
var projectID = attributeValue;

return projectID;


7.AIRPORT ZONE

var intersectLayer = FeatureSetByName($datastore, "test_training.sde.Airport_Zone", ['AIRPORTNAM'], false);
var attributeName = 'AIRPORTNAM';

var intersectingFeatures = Intersects(intersectLayer, $feature);
var intersectedFeature = First(intersectingFeatures);
if (intersectedFeature == null) return 'NA';

var attributeValue = intersectedFeature[attributeName];


// Concatenate LBCode and the unique sequence number
var projectID = attributeValue;

return projectID;

8.ZONE COLOR

var intersectLayer = FeatureSetByName($datastore, "test_training.sde.Airport_Zone", ['zone_conct'], false);
var attributeName = 'zone_conct';

var intersectingFeatures = Intersects(intersectLayer, $feature);
var intersectedFeature = First(intersectingFeatures);
if (intersectedFeature == null) return 'NA';

var attributeValue = intersectedFeature[attributeName];


// Concatenate LBCode and the unique sequence number
var projectID = attributeValue;

return projectID;

9.PERMISSIBLE HEIGHT

var intersectLayer = FeatureSetByName($datastore, "test_training.sde.Airport_Zone", ['permissibl'], false);
var attributeName = 'permissibl';

var intersectingFeatures = Intersects(intersectLayer, $feature);
var intersectedFeature = First(intersectingFeatures);
if (intersectedFeature == null) return '250';

var attributeValue = intersectedFeature[attributeName];


// Concatenate LBCode and the unique sequence number
var projectID = attributeValue;

return projectID;

10.NOC REQUIRED FROM AIRPORT


// Get the values of the fields you want to compare
var valueA = $feature.permissibl;
var valueB = $feature.Height;
// Perform the comparison and assign attribute value
var comparisonResult = IIf(valueA < valueB, "Yes", "No");
return comparisonResult;

11.RAILWAY ZONE

var intersectLayer = FeatureSetByName($datastore, "test_training.sde.Railway_Land");
var editingFeature = $feature;
var editingGeometry = Geometry(editingFeature);
var intersectingFeatures = Intersects(intersectLayer, editingGeometry);
if (Count(intersectingFeatures) > 0) {
return 'Yes';
} else {
return 'No';
}

12.DISTANCE FROM RAILWAY LAND

var Railway_lyr = FeatureSetByName($datastore, 'test_training.sde.Railway_Land');
var editingFeature = $feature;
var editingGeometry = Centroid(editingFeature);
var closestDistance = 999999999; // Set a large initial value
for (var Railway_feature in Railway_lyr) {
var dist = Distance(Railway_feature, editingFeature, 'meter');
if (dist < closestDistance) {
closestDistance = dist; // If the distance is < closest Distance, distance should be replaced with closest distance
}
}
var roundedDistance = Round(closestDistance, 2); // Round to 2 decimal places
roundedDistance; // This will return the rounded closest distance in meters

13.NOC REQUIRED FROM RAILWAY

var htl_lyr = FeatureSetByName($datastore, 'test_training.sde.Railway_Land');
var editingFeature = $feature;
var editingGeometry = Centroid(editingFeature);
var closestDistance = 999999999; // Set a large initial value
for (var htl_feature in htl_lyr) {
var dist = Distance(htl_feature, editingFeature, 'meter');
if (dist < closestDistance) {
closestDistance = dist; // If the distance is < closest Distance, distance should be replaced with closest distance
}
}
var roundedDistance = Round(closestDistance, 2); // Round to 2 decimal places
if (roundedDistance < 30) {
return "Yes";
} else {
return "No";
}

14.CRZ ZONE NAME

var intersectLayer = FeatureSetByName($datastore, "test_training.sde.CRZ_Boundary", ['name'], false);
var attributeName = 'name';

var intersectingFeatures = Intersects(intersectLayer, $feature);
var intersectedFeature = First(intersectingFeatures);
if (intersectedFeature == null) return 'NA';

var attributeValue = intersectedFeature[attributeName];


// Concatenate LBCode and the unique sequence number
var projectID = attributeValue;

return projectID;

15.CRZ MAP NUMBER

var intersectLayer = FeatureSetByName($datastore, "test_training.sde.CRZ_Map_Grid", ['map_no'], false);
var attributeName = 'map_no';

var intersectingFeatures = Intersects(intersectLayer, $feature);
var intersectedFeature = First(intersectingFeatures);
if (intersectedFeature == null) return 'NA';

var attributeValue = intersectedFeature[attributeName];


// Concatenate LBCode and the unique sequence number
var projectID = attributeValue;

return projectID;

16.DISTANCE FROM HIGH TIDE LINE

var htl_lyr = FeatureSetByName($datastore, 'test_training.sde.High_Tide_Line');
var editingFeature = $feature;
var editingGeometry = Centroid(editingFeature);
var closestDistance = 999999999; // Set a large initial value
for (var htl_feature in htl_lyr) {
var dist = Distance(htl_feature, editingFeature, 'meter');
if (dist < closestDistance) {
closestDistance = dist; // If the distance is < closest Distance, distance should be replaced with closest distance
}
}
var roundedDistance = Round(closestDistance, 2); // Round to 2 decimal places
roundedDistance; // This will return the rounded closest distance in meters

17.DISTANCE FROM LANDSLIDE PRONE AREA

var htl_lyr = FeatureSetByName($datastore, 'test_training.sde.Landslide_Wayanad');
var editingFeature = $feature;
var editingGeometry = Centroid(editingFeature);
var buffer = Buffer(editingGeometry, 1, 'kilometers'); // Create a 1 km buffer around editing feature
var closestDistance = 999999999; // Set a large initial value
var withinBuffer = false;
for (var htl_feature in htl_lyr) {
var dist = Distance(htl_feature, editingFeature, 'meter');
// Check if the feature is within the buffer
if (Intersects(htl_feature, buffer)) {
withinBuffer = true;
if (dist < closestDistance) {
closestDistance = dist;
}
}
}
if (withinBuffer) {
var roundedDistance = Round(closestDistance, 2); // Round to 2 decimal places
roundedDistance; // This will return the rounded closest distance in meters
} else {
"No landslide zone" // Return No intersecting zone with in 1km if editing feature is outside the 1 km buffer
}

18.DISTANCE FROM ELECTRIC TRANSMISSION LINE

var ETL_lyr = FeatureSetByName($datastore, 'test_training.sde.EHT_Lines');
var attributeName = 'KV_Type';
var editingFeature = $feature;
var editingGeometry = Geometry(editingFeature);
var closestDistance = 100; // Set a large initial value
var closestLineAttribute = null; // Initialize with null
for (var ETL_feature in ETL_lyr) {
var ETL_geometry = Geometry(ETL_feature);
var dist = Distance(ETL_geometry, editingGeometry, 'meters');
if (dist < closestDistance) {
closestDistance = dist;
closestLineAttribute = ETL_feature[attributeName];
}
}

if (closestLineAttribute != null) {
return closestLineAttribute;
} else {
return 'No EHT line crossing below 100 meter buffer';
}

19. OFFICE LB CODE

var intersectLayer = FeatureSetByName($datastore, "test_training.sde.Localbody_Boundary", ['Office_LB_'], false);
var attributeName = 'Office_LB_';

var intersectingFeatures = Intersects(intersectLayer, $feature);
var intersectedFeature = First(intersectingFeatures);
if (intersectedFeature == null) return 'NA';

var attributeValue = intersectedFeature[attributeName];


// Concatenate LBCode and the unique sequence number
var projectID = attributeValue;

return projectID;


20.DELETION RULE

$feature.is_required == 1;

if ($feature.is_required == 1) {
return {
'errorMessage': 'Deletion is not allowed for features with a value of 1 in ' + fieldName + '.'
};
} else {
// Allow deletion for other cases
return true;
}

21.CONSTRAIN RULE - AREA ACRE

var arealnSquareMeters = $feature.plot_area;
if (arealnSquareMeters > 121410) {
return {
'errorMessage' : 'Polygon area Must be 30 Acre of Less during creation.'
};
} else {
return true;
}

22.CONSTARIN RULE- OUTSIDE KERALA BOUNDARY

var aor = FeatureSetByName($datastore, "test_training.sde.Kerala_10M_Buffer")
return Count(Within($feature, aor)) > 0

 

 

I had created a workaround and now I am able to draw. But some fields returning "NA". Main Problem is with layers Village and LSGD Boundary. Only these layers returning NA result even though having boundary available in those geography

Tags (2)
0 Kudos
2 Replies
HarishKV
Occasional Contributor

1.PLOT ID:

var intersectLayer = FeatureSetByName($datastore, "test_training.sde.Village", ['taluk'], false);
var attributeName = 'taluk';

var intersectingFeatures = Intersects(intersectLayer, $feature);
var intersectedFeature = First(intersectingFeatures);
if (intersectedFeature == null) return 'NA';

var attributeValue = intersectedFeature[attributeName];


// Concatenate LBCode and the unique sequence number
var projectID = attributeValue;

return projectID;


2.PLOT AREA

var editingFeature = $feature;
var editingGeometry = Geometry(editingFeature);
var area = Area(editingGeometry);
var formattedArea = Round(area, 2);
return formattedArea


3.DISTRICT

var intersectLayer = FeatureSetByName($datastore, "test_training.sde.Localbody_Boundary", ['DISTRICT'], false);
var attributeName = 'DISTRICT';

var intersectingFeatures = Intersects(intersectLayer, $feature);
var intersectedFeature = First(intersectingFeatures);
if (intersectedFeature == null) return 'NA';

var attributeValue = intersectedFeature[attributeName];


// Concatenate LBCode and the unique sequence number
var projectID = attributeValue;

return projectID;

4.TALUK

var intersectLayer = FeatureSetByName($datastore, "test_training.sde.Village", ['taluk'], false);
var attributeName = 'taluk';

var intersectingFeatures = Intersects(intersectLayer, $feature);
var intersectedFeature = First(intersectingFeatures);
if (intersectedFeature == null) return 'NA';

var attributeValue = intersectedFeature[attributeName];


// Concatenate LBCode and the unique sequence number
var projectID = attributeValue;

return projectID;

5.VILLAGE

var intersectLayer = FeatureSetByName($datastore, "test_training.sde.Village", ['village'], false);
var attributeName = 'village';

var intersectingFeatures = Intersects(intersectLayer, $feature);
var intersectedFeature = First(intersectingFeatures);
if (intersectedFeature == null) return 'NA';

var attributeValue = intersectedFeature[attributeName];


// Concatenate LBCode and the unique sequence number
var projectID = attributeValue;

return projectID;

6.LOCALBODY

var intersectLayer = FeatureSetByName($datastore, "test_training.sde.Localbody_Boundary", ['LB_NAME_EN'], false);
var attributeName = 'LB_NAME_EN';

var intersectingFeatures = Intersects(intersectLayer, $feature);
var intersectedFeature = First(intersectingFeatures);
if (intersectedFeature == null) return 'NA';

var attributeValue = intersectedFeature[attributeName];


// Concatenate LBCode and the unique sequence number
var projectID = attributeValue;

return projectID;


7.AIRPORT ZONE

var intersectLayer = FeatureSetByName($datastore, "test_training.sde.Airport_Zone", ['AIRPORTNAM'], false);
var attributeName = 'AIRPORTNAM';

var intersectingFeatures = Intersects(intersectLayer, $feature);
var intersectedFeature = First(intersectingFeatures);
if (intersectedFeature == null) return 'NA';

var attributeValue = intersectedFeature[attributeName];


// Concatenate LBCode and the unique sequence number
var projectID = attributeValue;

return projectID;

8.ZONE COLOR

var intersectLayer = FeatureSetByName($datastore, "test_training.sde.Airport_Zone", ['zone_conct'], false);
var attributeName = 'zone_conct';

var intersectingFeatures = Intersects(intersectLayer, $feature);
var intersectedFeature = First(intersectingFeatures);
if (intersectedFeature == null) return 'NA';

var attributeValue = intersectedFeature[attributeName];


// Concatenate LBCode and the unique sequence number
var projectID = attributeValue;

return projectID;

9.PERMISSIBLE HEIGHT

var intersectLayer = FeatureSetByName($datastore, "test_training.sde.Airport_Zone", ['permissibl'], false);
var attributeName = 'permissibl';

var intersectingFeatures = Intersects(intersectLayer, $feature);
var intersectedFeature = First(intersectingFeatures);
if (intersectedFeature == null) return '250';

var attributeValue = intersectedFeature[attributeName];


// Concatenate LBCode and the unique sequence number
var projectID = attributeValue;

return projectID;

10.NOC REQUIRED FROM AIRPORT


// Get the values of the fields you want to compare
var valueA = $feature.permissibl;
var valueB = $feature.Height;
// Perform the comparison and assign attribute value
var comparisonResult = IIf(valueA < valueB, "Yes", "No");
return comparisonResult;

11.RAILWAY ZONE

var intersectLayer = FeatureSetByName($datastore, "test_training.sde.Railway_Land");
var editingFeature = $feature;
var editingGeometry = Geometry(editingFeature);
var intersectingFeatures = Intersects(intersectLayer, editingGeometry);
if (Count(intersectingFeatures) > 0) {
return 'Yes';
} else {
return 'No';
}

12.DISTANCE FROM RAILWAY LAND

var Railway_lyr = FeatureSetByName($datastore, 'test_training.sde.Railway_Land');
var editingFeature = $feature;
var editingGeometry = Centroid(editingFeature);
var closestDistance = 999999999; // Set a large initial value
for (var Railway_feature in Railway_lyr) {
var dist = Distance(Railway_feature, editingFeature, 'meter');
if (dist < closestDistance) {
closestDistance = dist; // If the distance is < closest Distance, distance should be replaced with closest distance
}
}
var roundedDistance = Round(closestDistance, 2); // Round to 2 decimal places
roundedDistance; // This will return the rounded closest distance in meters

13.NOC REQUIRED FROM RAILWAY

var htl_lyr = FeatureSetByName($datastore, 'test_training.sde.Railway_Land');
var editingFeature = $feature;
var editingGeometry = Centroid(editingFeature);
var closestDistance = 999999999; // Set a large initial value
for (var htl_feature in htl_lyr) {
var dist = Distance(htl_feature, editingFeature, 'meter');
if (dist < closestDistance) {
closestDistance = dist; // If the distance is < closest Distance, distance should be replaced with closest distance
}
}
var roundedDistance = Round(closestDistance, 2); // Round to 2 decimal places
if (roundedDistance < 30) {
return "Yes";
} else {
return "No";
}

14.CRZ ZONE NAME

var intersectLayer = FeatureSetByName($datastore, "test_training.sde.CRZ_Boundary", ['name'], false);
var attributeName = 'name';

var intersectingFeatures = Intersects(intersectLayer, $feature);
var intersectedFeature = First(intersectingFeatures);
if (intersectedFeature == null) return 'NA';

var attributeValue = intersectedFeature[attributeName];


// Concatenate LBCode and the unique sequence number
var projectID = attributeValue;

return projectID;

15.CRZ MAP NUMBER

var intersectLayer = FeatureSetByName($datastore, "test_training.sde.CRZ_Map_Grid", ['map_no'], false);
var attributeName = 'map_no';

var intersectingFeatures = Intersects(intersectLayer, $feature);
var intersectedFeature = First(intersectingFeatures);
if (intersectedFeature == null) return 'NA';

var attributeValue = intersectedFeature[attributeName];


// Concatenate LBCode and the unique sequence number
var projectID = attributeValue;

return projectID;

16.DISTANCE FROM HIGH TIDE LINE

var htl_lyr = FeatureSetByName($datastore, 'test_training.sde.High_Tide_Line');
var editingFeature = $feature;
var editingGeometry = Centroid(editingFeature);
var closestDistance = 999999999; // Set a large initial value
for (var htl_feature in htl_lyr) {
var dist = Distance(htl_feature, editingFeature, 'meter');
if (dist < closestDistance) {
closestDistance = dist; // If the distance is < closest Distance, distance should be replaced with closest distance
}
}
var roundedDistance = Round(closestDistance, 2); // Round to 2 decimal places
roundedDistance; // This will return the rounded closest distance in meters

17.DISTANCE FROM LANDSLIDE PRONE AREA

var htl_lyr = FeatureSetByName($datastore, 'test_training.sde.Landslide_Wayanad');
var editingFeature = $feature;
var editingGeometry = Centroid(editingFeature);
var buffer = Buffer(editingGeometry, 1, 'kilometers'); // Create a 1 km buffer around editing feature
var closestDistance = 999999999; // Set a large initial value
var withinBuffer = false;
for (var htl_feature in htl_lyr) {
var dist = Distance(htl_feature, editingFeature, 'meter');
// Check if the feature is within the buffer
if (Intersects(htl_feature, buffer)) {
withinBuffer = true;
if (dist < closestDistance) {
closestDistance = dist;
}
}
}
if (withinBuffer) {
var roundedDistance = Round(closestDistance, 2); // Round to 2 decimal places
roundedDistance; // This will return the rounded closest distance in meters
} else {
"No landslide zone" // Return No intersecting zone with in 1km if editing feature is outside the 1 km buffer
}

18.DISTANCE FROM ELECTRIC TRANSMISSION LINE

var ETL_lyr = FeatureSetByName($datastore, 'test_training.sde.EHT_Lines');
var attributeName = 'KV_Type';
var editingFeature = $feature;
var editingGeometry = Geometry(editingFeature);
var closestDistance = 100; // Set a large initial value
var closestLineAttribute = null; // Initialize with null
for (var ETL_feature in ETL_lyr) {
var ETL_geometry = Geometry(ETL_feature);
var dist = Distance(ETL_geometry, editingGeometry, 'meters');
if (dist < closestDistance) {
closestDistance = dist;
closestLineAttribute = ETL_feature[attributeName];
}
}

if (closestLineAttribute != null) {
return closestLineAttribute;
} else {
return 'No EHT line crossing below 100 meter buffer';
}

19. OFFICE LB CODE

var intersectLayer = FeatureSetByName($datastore, "test_training.sde.Localbody_Boundary", ['Office_LB_'], false);
var attributeName = 'Office_LB_';

var intersectingFeatures = Intersects(intersectLayer, $feature);
var intersectedFeature = First(intersectingFeatures);
if (intersectedFeature == null) return 'NA';

var attributeValue = intersectedFeature[attributeName];


// Concatenate LBCode and the unique sequence number
var projectID = attributeValue;

return projectID;


20.DELETION RULE

$feature.is_required == 1;

if ($feature.is_required == 1) {
return {
'errorMessage': 'Deletion is not allowed for features with a value of 1 in ' + fieldName + '.'
};
} else {
// Allow deletion for other cases
return true;
}

21.CONSTRAIN RULE - AREA ACRE

var arealnSquareMeters = $feature.plot_area;
if (arealnSquareMeters > 121410) {
return {
'errorMessage' : 'Polygon area Must be 30 Acre of Less during creation.'
};
} else {
return true;
}

22.CONSTARIN RULE- OUTSIDE KERALA BOUNDARY

var aor = FeatureSetByName($datastore, "test_training.sde.Kerala_10M_Buffer")
return Count(Within($feature, aor)) > 0

 

 

I had created a workaround and now I am able to draw. But some fields returning "NA". Main Problem is with layers Village and LSGD Boundary. Only these layers returning NA result even though having boundary available in those geography

0 Kudos
HarishKV
Occasional Contributor

Arcade scripts used for the project also been added for your reference.

0 Kudos