Description
Description
The US SoilID 'rank_soils' function employs Gower’s distance to quantify similarity between a user’s site/soil measurements and SSURGO data for all soil types mapped within a 1000 m radius of the user’s location. It computes two separate scores—one based on site attributes (elevation, slope, depth‑to‑bedrock) and another on soil characteristics (texture, rock fragments, and color by depth)—then combines them into an overall similarity index.
An error in the current calculation of the site-based similarity has been identified. Calculation of similarity with Gower's requires at least two variables. Site-based elevation is automatically extracted from geospatial data. Therefore the user is required to enter either slope or depth to bedrock for the site-based similarity calculation to run.
The current 'rank_soils' function computes a site‑based similarity score, and therefore returns both "data" and "data‑location" scores, even when the user hasn’t provided any site inputs. In these cases, no "data" or "data-location" similarity scores should be returned.
Steps To Reproduce
Create a site in the app or run the 'rank_soils' function without entering any data.
Expected behavior
The App should return a 'Location Score' but no 'Soil Properties Score' or data-location score (scores listed in 'Top Soil Matches')
The 'rank_soils' function should return values for "score_loc" but no values for "score_data" or "score_data_loc".
Here are the expected results for the test point: 41.66272, -72.68237
Example of correct rank_soils return when no user data is entered
{
"metadata":{
"location":"us",
"model":"v2"
},
"soilRank":[
{
"name":"Branford1",
"component":"Branford",
"componentID":25664309,
"score_data_loc":"",
"rank_data_loc":"",
"score_data":"",
"rank_data":"",
"score_loc":0.439,
"rank_loc":"2",
"componentData":"Location data only"
},
{
"name":"Cheshire1",
"component":"Cheshire",
"componentID":25664746,
"score_data_loc":"",
"rank_data_loc":"",
"score_data":"",
"rank_data":"",
"score_loc":0.251,
"rank_loc":"4",
"componentData":"Location data only"
},
{
"name":"Ellington",
"component":"Ellington",
"componentID":25663920,
"score_data_loc":"",
"rank_data_loc":"",
"score_data":"",
"rank_data":"",
"score_loc":0.2,
"rank_loc":"8",
"componentData":"Location data only"
},
{
"name":"Holyoke",
"component":"Holyoke",
"componentID":25664750,
"score_data_loc":"",
"rank_data_loc":"",
"score_data":"",
"rank_data":"",
"score_loc":0.195,
"rank_loc":"10",
"componentData":"Location data only"
},
{
"name":"Ludlow1",
"component":"Ludlow",
"componentID":25665635,
"score_data_loc":"",
"rank_data_loc":"",
"score_data":"",
"rank_data":"",
"score_loc":0.2,
"rank_loc":"7",
"componentData":"Location data only"
},
{
"name":"Manchester1",
"component":"Manchester",
"componentID":25664305,
"score_data_loc":"",
"rank_data_loc":"",
"score_data":"",
"rank_data":"",
"score_loc":0.2,
"rank_loc":"6",
"componentData":"Location data only"
},
{
"name":"Scarboro",
"component":"Scarboro",
"componentID":25665399,
"score_data_loc":"",
"rank_data_loc":"",
"score_data":"",
"rank_data":"",
"score_loc":0.2,
"rank_loc":"9",
"componentData":"Location data only"
},
{
"name":"Scitico",
"component":"Scitico",
"componentID":25664899,
"score_data_loc":"",
"rank_data_loc":"",
"score_data":"",
"rank_data":"",
"score_loc":0.1,
"rank_loc":"11",
"componentData":"Location data only"
},
{
"name":"Shaker",
"component":"Shaker",
"componentID":25664900,
"score_data_loc":"",
"rank_data_loc":"",
"score_data":"",
"rank_data":"",
"score_loc":0.087,
"rank_loc":"12",
"componentData":"Location data only"
},
{
"name":"Udorthents1",
"component":"Udorthents",
"componentID":25664295,
"score_data_loc":"",
"rank_data_loc":"",
"score_data":"",
"rank_data":"",
"score_loc":0.5,
"rank_loc":"1",
"componentData":"Location data only"
},
{
"name":"Wethersfield1",
"component":"Wethersfield",
"componentID":25664745,
"score_data_loc":"",
"rank_data_loc":"",
"score_data":"",
"rank_data":"",
"score_loc":0.377,
"rank_loc":"3",
"componentData":"Location data only"
},
{
"name":"Wilbraham1",
"component":"Wilbraham",
"componentID":25665633,
"score_data_loc":"",
"rank_data_loc":"",
"score_data":"",
"rank_data":"",
"score_loc":0.212,
"rank_loc":"5",
"componentData":"Location data only"
},
{
"name":"Branford2",
"component":"Branford",
"componentID":25664372,
"score_data_loc":"",
"rank_data_loc":"",
"score_data":"",
"rank_data":"",
"score_loc":0.439,
"rank_loc":"Not Displayed",
"componentData":"Location data only"
},
{
"name":"Branford3",
"component":"Branford",
"componentID":25664315,
"score_data_loc":"",
"rank_data_loc":"",
"score_data":"",
"rank_data":"",
"score_loc":0.439,
"rank_loc":"Not Displayed",
"componentData":"Location data only"
},
{
"name":"Cheshire2",
"component":"Cheshire",
"componentID":25664854,
"score_data_loc":"",
"rank_data_loc":"",
"score_data":"",
"rank_data":"",
"score_loc":0.251,
"rank_loc":"Not Displayed",
"componentData":"Location data only"
},
{
"name":"Cheshire3",
"component":"Cheshire",
"componentID":25664860,
"score_data_loc":"",
"rank_data_loc":"",
"score_data":"",
"rank_data":"",
"score_loc":0.251,
"rank_loc":"Not Displayed",
"componentData":"Location data only"
},
{
"name":"Ludlow2",
"component":"Ludlow",
"componentID":25664415,
"score_data_loc":"",
"rank_data_loc":"",
"score_data":"",
"rank_data":"",
"score_loc":0.2,
"rank_loc":"Not Displayed",
"componentData":"Location data only"
},
{
"name":"Ludlow3",
"component":"Ludlow",
"componentID":25664423,
"score_data_loc":"",
"rank_data_loc":"",
"score_data":"",
"rank_data":"",
"score_loc":0.2,
"rank_loc":"Not Displayed",
"componentData":"Location data only"
},
{
"name":"Ludlow4",
"component":"Ludlow",
"componentID":25664043,
"score_data_loc":"",
"rank_data_loc":"",
"score_data":"",
"rank_data":"",
"score_loc":0.2,
"rank_loc":"Not Displayed",
"componentData":"Location data only"
},
{
"name":"Manchester2",
"component":"Manchester",
"componentID":25664369,
"score_data_loc":"",
"rank_data_loc":"",
"score_data":"",
"rank_data":"",
"score_loc":0.2,
"rank_loc":"Not Displayed",
"componentData":"Location data only"
},
{
"name":"Udorthents2",
"component":"Udorthents",
"componentID":25664302,
"score_data_loc":"",
"rank_data_loc":"",
"score_data":"",
"rank_data":"",
"score_loc":0.5,
"rank_loc":"Not Displayed",
"componentData":"Location data only"
},
{
"name":"Udorthents3",
"component":"Udorthents",
"componentID":25664039,
"score_data_loc":"",
"rank_data_loc":"",
"score_data":"",
"rank_data":"",
"score_loc":0.5,
"rank_loc":"Not Displayed",
"componentData":"Location data only"
},
{
"name":"Wethersfield2",
"component":"Wethersfield",
"componentID":25664856,
"score_data_loc":"",
"rank_data_loc":"",
"score_data":"",
"rank_data":"",
"score_loc":0.377,
"rank_loc":"Not Displayed",
"componentData":"Location data only"
},
{
"name":"Wethersfield3",
"component":"Wethersfield",
"componentID":25664862,
"score_data_loc":"",
"rank_data_loc":"",
"score_data":"",
"rank_data":"",
"score_loc":0.377,
"rank_loc":"Not Displayed",
"componentData":"Location data only"
},
{
"name":"Wethersfield4",
"component":"Wethersfield",
"componentID":25664419,
"score_data_loc":"",
"rank_data_loc":"",
"score_data":"",
"rank_data":"",
"score_loc":0.377,
"rank_loc":"Not Displayed",
"componentData":"Location data only"
},
{
"name":"Wilbraham2",
"component":"Wilbraham",
"componentID":25665632,
"score_data_loc":"",
"rank_data_loc":"",
"score_data":"",
"rank_data":"",
"score_loc":0.212,
"rank_loc":"Not Displayed",
"componentData":"Location data only"
},
{
"name":"Wilbraham3",
"component":"Wilbraham",
"componentID":25664421,
"score_data_loc":"",
"rank_data_loc":"",
"score_data":"",
"rank_data":"",
"score_loc":0.212,
"rank_loc":"Not Displayed",
"componentData":"Location data only"
}
]
}
Actual behavior
The App is currently returning values for "score_data" and "score_data_loc" when no user data has been entered.
Current results for the test point: 41.66272, -72.68237
Current rank_soils return when no user data has been entered
{
"metadata":{
"location":"us",
"model":"v2"
},
"soilRank":[
{
"name":"Udorthents3",
"component":"Udorthents",
"componentID":25664039,
"score_data_loc":0.499,
"rank_data_loc":"1",
"score_data":0.499,
"rank_data":"1",
"score_loc":0.5,
"rank_loc":"Not Displayed",
"componentData":"Site data only"
},
{
"name":"Branford3",
"component":"Branford",
"componentID":25664315,
"score_data_loc":0.469,
"rank_data_loc":"2",
"score_data":0.499,
"rank_data":"2",
"score_loc":0.439,
"rank_loc":"Not Displayed",
"componentData":"Site data only"
},
{
"name":"Wethersfield2",
"component":"Wethersfield",
"componentID":25664856,
"score_data_loc":0.438,
"rank_data_loc":"3",
"score_data":0.5,
"rank_data":"3",
"score_loc":0.377,
"rank_loc":"Not Displayed",
"componentData":"Site data only"
},
{
"name":"Cheshire2",
"component":"Cheshire",
"componentID":25664854,
"score_data_loc":0.375,
"rank_data_loc":"4",
"score_data":0.5,
"rank_data":"4",
"score_loc":0.251,
"rank_loc":"Not Displayed",
"componentData":"Site data only"
},
{
"name":"Wilbraham3",
"component":"Wilbraham",
"componentID":25664421,
"score_data_loc":0.354,
"rank_data_loc":"5",
"score_data":0.495,
"rank_data":"5",
"score_loc":0.212,
"rank_loc":"Not Displayed",
"componentData":"Site data only"
},
{
"name":"Ludlow2",
"component":"Ludlow",
"componentID":25664415,
"score_data_loc":0.35,
"rank_data_loc":"6",
"score_data":0.5,
"rank_data":"7",
"score_loc":0.2,
"rank_loc":"Not Displayed",
"componentData":"Site data only"
},
{
"name":"Ellington",
"component":"Ellington",
"componentID":25663920,
"score_data_loc":0.348,
"rank_data_loc":"7",
"score_data":0.497,
"rank_data":"8",
"score_loc":0.2,
"rank_loc":"8",
"componentData":"Site data only"
},
{
"name":"Manchester2",
"component":"Manchester",
"componentID":25664369,
"score_data_loc":0.348,
"rank_data_loc":"8",
"score_data":0.496,
"rank_data":"6",
"score_loc":0.2,
"rank_loc":"Not Displayed",
"componentData":"Site data only"
},
{
"name":"Scarboro",
"component":"Scarboro",
"componentID":25665399,
"score_data_loc":0.347,
"rank_data_loc":"9",
"score_data":0.494,
"rank_data":"9",
"score_loc":0.2,
"rank_loc":"9",
"componentData":"Site data only"
},
{
"name":"Holyoke",
"component":"Holyoke",
"componentID":25664750,
"score_data_loc":0.346,
"rank_data_loc":"10",
"score_data":0.496,
"rank_data":"10",
"score_loc":0.195,
"rank_loc":"10",
"componentData":"Site data only"
},
{
"name":"Scitico",
"component":"Scitico",
"componentID":25664899,
"score_data_loc":0.298,
"rank_data_loc":"11",
"score_data":0.495,
"rank_data":"11",
"score_loc":0.1,
"rank_loc":"11",
"componentData":"Site data only"
},
{
"name":"Shaker",
"component":"Shaker",
"componentID":25664900,
"score_data_loc":0.291,
"rank_data_loc":"12",
"score_data":0.495,
"rank_data":"12",
"score_loc":0.087,
"rank_loc":"12",
"componentData":"Site data only"
},
{
"name":"Udorthents1",
"component":"Udorthents",
"componentID":25664295,
"score_data_loc":0.498,
"rank_data_loc":"Not Displayed",
"score_data":0.495,
"rank_data":"Not Displayed",
"score_loc":0.5,
"rank_loc":"1",
"componentData":"Site data only"
},
{
"name":"Udorthents2",
"component":"Udorthents",
"componentID":25664302,
"score_data_loc":0.493,
"rank_data_loc":"Not Displayed",
"score_data":0.486,
"rank_data":"Not Displayed",
"score_loc":0.5,
"rank_loc":"Not Displayed",
"componentData":"Site data only"
},
{
"name":"Branford1",
"component":"Branford",
"componentID":25664309,
"score_data_loc":0.467,
"rank_data_loc":"Not Displayed",
"score_data":0.495,
"rank_data":"Not Displayed",
"score_loc":0.439,
"rank_loc":"2",
"componentData":"Site data only"
},
{
"name":"Branford2",
"component":"Branford",
"componentID":25664372,
"score_data_loc":0.466,
"rank_data_loc":"Not Displayed",
"score_data":0.493,
"rank_data":"Not Displayed",
"score_loc":0.439,
"rank_loc":"Not Displayed",
"componentData":"Site data only"
},
{
"name":"Wethersfield4",
"component":"Wethersfield",
"componentID":25664419,
"score_data_loc":0.438,
"rank_data_loc":"Not Displayed",
"score_data":0.5,
"rank_data":"Not Displayed",
"score_loc":0.377,
"rank_loc":"Not Displayed",
"componentData":"Site data only"
},
{
"name":"Wethersfield1",
"component":"Wethersfield",
"componentID":25664745,
"score_data_loc":0.437,
"rank_data_loc":"Not Displayed",
"score_data":0.496,
"rank_data":"Not Displayed",
"score_loc":0.377,
"rank_loc":"3",
"componentData":"Site data only"
},
{
"name":"Wethersfield3",
"component":"Wethersfield",
"componentID":25664862,
"score_data_loc":0.435,
"rank_data_loc":"Not Displayed",
"score_data":0.493,
"rank_data":"Not Displayed",
"score_loc":0.377,
"rank_loc":"Not Displayed",
"componentData":"Site data only"
},
{
"name":"Cheshire1",
"component":"Cheshire",
"componentID":25664746,
"score_data_loc":0.374,
"rank_data_loc":"Not Displayed",
"score_data":0.496,
"rank_data":"Not Displayed",
"score_loc":0.251,
"rank_loc":"4",
"componentData":"Site data only"
},
{
"name":"Cheshire3",
"component":"Cheshire",
"componentID":25664860,
"score_data_loc":0.372,
"rank_data_loc":"Not Displayed",
"score_data":0.493,
"rank_data":"Not Displayed",
"score_loc":0.251,
"rank_loc":"Not Displayed",
"componentData":"Site data only"
},
{
"name":"Wilbraham2",
"component":"Wilbraham",
"componentID":25665632,
"score_data_loc":0.353,
"rank_data_loc":"Not Displayed",
"score_data":0.495,
"rank_data":"Not Displayed",
"score_loc":0.212,
"rank_loc":"Not Displayed",
"componentData":"Site data only"
},
{
"name":"Wilbraham1",
"component":"Wilbraham",
"componentID":25665633,
"score_data_loc":0.353,
"rank_data_loc":"Not Displayed",
"score_data":0.494,
"rank_data":"Not Displayed",
"score_loc":0.212,
"rank_loc":"5",
"componentData":"Site data only"
},
{
"name":"Ludlow3",
"component":"Ludlow",
"componentID":25664423,
"score_data_loc":0.349,
"rank_data_loc":"Not Displayed",
"score_data":0.499,
"rank_data":"Not Displayed",
"score_loc":0.2,
"rank_loc":"Not Displayed",
"componentData":"Site data only"
},
{
"name":"Ludlow4",
"component":"Ludlow",
"componentID":25664043,
"score_data_loc":0.349,
"rank_data_loc":"Not Displayed",
"score_data":0.498,
"rank_data":"Not Displayed",
"score_loc":0.2,
"rank_loc":"Not Displayed",
"componentData":"Site data only"
},
{
"name":"Ludlow1",
"component":"Ludlow",
"componentID":25665635,
"score_data_loc":0.348,
"rank_data_loc":"Not Displayed",
"score_data":0.496,
"rank_data":"Not Displayed",
"score_loc":0.2,
"rank_loc":"7",
"componentData":"Site data only"
},
{
"name":"Manchester1",
"component":"Manchester",
"componentID":25664305,
"score_data_loc":0.348,
"rank_data_loc":"Not Displayed",
"score_data":0.495,
"rank_data":"Not Displayed",
"score_loc":0.2,
"rank_loc":"6",
"componentData":"Site data only"
}
]
}
Additional context
The App is currently extracting location-based elevation data. This data, 'pElev', should be pushed to the API during the 'rank_soils' call. If 'pElev' is missing, rank_soils will attempt to acquire elevation data via an API call to 'https://epqs.nationalmap.gov/v1/json'.