Полевой сбор данных

Ниже представлены примеры выражений на Arcade, помогающие заполнять атрибутивные поля автоматически в ходе полевых работ.

Выражение Arcade для заполнения атрибута значением из другого слоя на основе пересечения первого слоя со вторым, например заполнение названия района работ из полигонального слоя в атрибут точечного слоя собираемых данных в полевых условиях на базе мобильного приложения ArcGIS Field Maps.

Пример подготовлен к мастер-классу в рамках семинара «ГИС в геологоразведке».

// Создаём feature set используя слой Литология (вектор) на карте, где EF_Litho - атрибут слоя
var lit = FeatureSetByName($map, 'Литология (вектор)', ['EF_Litho'])
// Пересекаем текущее местоположение со слоем и возвращаем первый результат
var point_int_litho = First(Intersects($feature, lit))
// Если пересечение есть, вернуть название
// или вернуть null
if (!IsEmpty(point_int_litho)) {
return point_int_litho['EF_Litho']
} else {
return null
}

Вычисление долготы и широты путем конвертирования метров проекции веб-карты

// Функция конвертирования метров в долготу и широту
function MetersToLatLon(geometry) {
    if (IsEmpty(geometry)) {
        return [null, null]
    }
    var originShift = 2.0 * PI * 6378137.0 / 2.0    
    var lon = (geometry.x / originShift) * 180.0
    var lat = (geometry.y / originShift) * 180.0 
    lat = 180.0 / PI * (2.0 * Atan( Exp( lat * PI / 180.0)) - PI / 2.0)    
    return [Round(lat, 6), Round(lon, 6)]
}
// 0 - возвращает Широту, 1 - возвращает долготу. 
MetersToLatLon(Geometry($feature))[0]

PDF версия инструкции