Select to view content in your preferred language

Field Maps and Survey123

12827
13
Jump to solution
02-19-2021 06:48 AM
E_-_MattReed__GISS_
Emerging Contributor

Wondering if there are plans to integrate Survey123 into Field Maps, like most of the rest of the app suite? It looks like you're on your way, with the ability to create Smart Forms, but there are several features in Survey123 that are not possible in Field Maps - notably, the ability to multi-select values and store them in one comma-delimited text field.

Just trying to figure out if I should be migrating away from it and looking for solutions in Field Maps...

Tags (2)
0 Kudos
13 Replies
DougBrowning
MVP Esteemed Contributor

Ok here are some examples

Calc the lat long - really nice when points move no need to recalc static fields

CurrentLat
var originShift = 2.0 * PI * 6378137.0 / 2.0;
var lon = (Geometry($feature).x / originShift) * 180.0;
var lat = (Geometry($feature).y / originShift) * 180.0;

lat = 180.0 / PI * (2.0 * Atan( Exp( lat * PI / 180.0)) - PI / 2.0);

return lat;

CurrentLong
var originShift = 2.0 * PI * 6378137.0 / 2.0;
var lon = (Geometry($feature).x / originShift) * 180.0;
var lat = (Geometry($feature).y / originShift) * 180.0;

lat = 180.0 / PI * (2.0 * Atan( Exp( lat * PI / 180.0)) - PI / 2.0);

return lon;

Distance between 2 points - good for seeing how far off they are

Current point distance from design (meters)
var originShift = 2.0 * PI * 6378137.0 / 2.0;
var lon = (Geometry($feature).x / originShift) * 180.0;
var lat = (Geometry($feature).y / originShift) * 180.0;

lat = 180.0 / PI * (2.0 * Atan( Exp( lat * PI / 180.0)) - PI / 2.0);

return Round(Acos(Sin(lat * PI / 180)*Sin($feature.DesignLat * PI / 180) + Cos(lat * PI / 180)*Cos($feature.DesignLat * PI / 180)*Cos(($feature.DesignLong * PI / 180)-(lon * PI / 180))) * 6371000,2)

Create a date base ID

EvaluationID {expression/expr0}
Concatenate($feature.PointID, "_", text($feature.FieldEvalDate, "Y-MM-DD"))

Calc an avg

AvgTypicalBankfullWidths {expression/expr1}
($feature.BankfullMeters1 + $feature.BankfullMeters2 + $feature.BankfullMeters3 + $feature.BankfullMeters4 + $feature.BankfullMeters5)/5

Calc spacing of the plot

MidTransectSpacing {expression/expr4}
var bfavg = ($feature.BankfullMeters1 + $feature.BankfullMeters2 + $feature.BankfullMeters3 + $feature.BankfullMeters4 + $feature.BankfullMeters5)/5
var rl
if (bfavg < 7.5)
{
rl = 150
}
else {
rl = Round(20 * bfavg,0)
}
if (rl <= 4000)
{
return (rl/10)/2
}
else
{
return 200
}

 

Lookup a value from the parent for use in the child

DesignLat {expression/expr6}
var sql = "PointID = '" + $feature.PointID + "'";
var tbl = Filter(FeatureSetByName($map,"Points", ['DesignLat'], false), sql);
return First(tbl).DesignLat

Count the number of children

QC Comments {expression/expr31}
var EvaluationID = Concatenate($feature.PointID, "_", text($feature.FieldEvalDate, "Y-MM-DD"))
var sql = "EvaluationID = '" + EvaluationID + "'";
var tbl = Filter(FeatureSetByName($map,"QC Comments", ['EvaluationID'], false), sql);
return count(tbl)

Warn if children forms are missing

Photos and Reach Coordinates {expression/expr30}
var EvaluationID = Concatenate($feature.PointID, "_", text($feature.FieldEvalDate, "Y-MM-DD"))
var sql = "EvaluationID = '" + EvaluationID + "'";
var tbl = Filter(FeatureSetByName($map,"Photos and Reach Coordinates", ['EvaluationID'], false), sql);

if (count(tbl) > 1) {
return "More than one form found"
}
else if (count(tbl) < 1) {
return "No forms found"
}
else {
return "1"
}

Then any of the above can be passed to a form using the {expression/expr0} syntax

arcgis-survey123://?itemID=9a40b535e4534e041e5e417a9db&field:PointID={PointID}&field:EvaluationID={expression/expr0}

Hope that gives you some ideas

FRSadmin
Occasional Contributor

Thank you very much!

In terms of cross-platform data sharing, is it possible to use coordinates taken from Survey 123 and used to make a Map Layer to be used in Field Maps?

My survey team regularly does check ups for camera and sensory placements as well as sightings and would like to show the customers these kinds of details (as well as being able to manage it themselves).

In an even more ideal scenario, I am trying to use Microsoft`s Power Automate to store the data in an excel spreadsheet, but I don`t know if Field Maps can acess that kind of data...

0 Kudos
DougBrowning
MVP Esteemed Contributor

All 123 data is just hosted layers that work like any other layer in Arc.  So yes we look at 123 data in Field Maps all the time.  I would get users to use the webmap and not Excel all the time.  A dashboard or something would be more modern.  It can be done though just look around.  I used to have Python build google sheets.

0 Kudos
DougBrowning
MVP Esteemed Contributor

Yea I actually just posted about it here.

https://community.esri.com/t5/arcgis-survey123-questions/auto-populate-survey-with-attributes-from-m... 

But basically just have an Arcade with your formula then pass via {expression/expr1} (which is the arcade ref)