Field Maps and Survey123

5449
12
Jump to solution
02-19-2021 06:48 AM
E_-_MattReed__GISS_
New Contributor II

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
1 Solution

Accepted Solutions
AaronPulver
Esri Regular Contributor

While there is some overlap in form capabilities, there are no plans to fully integrate all the capabilities that Survey123 has into Field Maps. There are plans to support in-line attachments, in-line related records (repeats), calculations, and contingent values among other things.

However, multi-select via a delimited field, is one of the features that we currently do not plan to support.

View solution in original post

12 Replies
AaronPulver
Esri Regular Contributor

While there is some overlap in form capabilities, there are no plans to fully integrate all the capabilities that Survey123 has into Field Maps. There are plans to support in-line attachments, in-line related records (repeats), calculations, and contingent values among other things.

However, multi-select via a delimited field, is one of the features that we currently do not plan to support.

DougBrowning
MVP Notable Contributor

I simulate this by using URL to pass the keys then relating all the forms and base points together.  Works slick.

See  https://community.esri.com/t5/arcgis-survey123-questions/mapping-with-survey123-within-a-polygon-or-...

Hope that helps

ScottLehto3
Occasional Contributor

Hi Aaron,

        I am looking to do some calculations on fields in Field Apps. Is that supported?

 

        Such as if(feature.site_type== 'Tree'), feature.value = 5, feature.value = 0.

Just checking.   

0 Kudos
AaronPulver
Esri Regular Contributor

Field calculation is not supported yet, it's planned to be though (hopefully later this year).

ScottLehto3
Occasional Contributor

Thank you Aaron. 

0 Kudos
FRSadmin
New Contributor III

Aaron,

Are there plans to be able to load Geographic points taken via survey123 and be able to load that onto a map layer visible within field maps?

0 Kudos
DougBrowning
MVP Notable Contributor

You can do it using Arcade but it would be just for display not an actual field.  I do use this at times to calc something and pass it to 123 where it does become a real field.

You could also use Attribute rules if you connect to a SDE and I heard rules are coming to AGOL.

Hope that helps.

0 Kudos
ScottLehto3
Occasional Contributor

Hi Doug,

       This might be useful to me. Can you help explain "I do use this at times to calc something and pass it to 123 where it does become a real field."

        I'm trying to learn as much as i can about this.

0 Kudos
DougBrowning
MVP Notable 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