private void Calculate() { var map = _context.Map; var table = Model.Table; const string msg = "Updating measurements"; GlobalListeners.ReportProgress(string.Empty, 0, msg); int featureCount = Model.Features.Count; foreach (var ft in Model.Features) { GlobalListeners.ReportProgress(string.Empty, Convert.ToInt32((ft.Index + 1) * 100.0 / featureCount), msg); var g = ft.Geometry; if (_lengthInfo.Active) { double length = map.GeodesicLength(g); length = UnitConversionHelper.Convert(LengthUnits.Meters, View.LengthUnits, length); table.EditCellValue(_lengthInfo.FieldIndex, ft.Index, length); } if (_areaInfo.Active) { double area = map.GeodesicArea(g); area = UnitConversionHelper.Convert(AreaUnits.SquareMeters, View.AreaUnits, area); table.EditCellValue(_areaInfo.FieldIndex, ft.Index, area); } } GlobalListeners.ClearProgress(); }