Ниже представлены примеры выражений на 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 версия инструкции