private void UpdateObs(int entityId, int pointId, MeasurementObservation observation) { if ((_entityId == entityId) && (_pointId == pointId) && (observation != null)) { int i = 0; bool found = false; string imageId = observation.imageId; while ((i < lvObservations.Items.Count) && (!found)) { ListViewItem item = lvObservations.Items[i]; var obs = item.Tag as MeasurementObservation; if (obs != null) { found = obs.imageId == imageId; } if (!found) { i++; } } Measurement measurement = Measurement.Get(entityId); if (measurement != null) { if (measurement.ContainsKey(pointId)) { var measurementPointS = measurement[pointId]; measurementPointS.UpdateObservation(imageId, observation.x, observation.y, observation.z); } } if (found) { lvObservations.Items[i].Tag = observation; if (_bitmapImageId.Contains(imageId)) { int index = _bitmapImageId.IndexOf(imageId); if (_idBitmap.Count > index) { _idBitmap[index].Dispose(); _idBitmap.RemoveAt(index); DrawObservations(); RedrawObservationList(); } } } } }
// ========================================================================= // Private Functions // ========================================================================= private void AddObs(Bitmap bitmap, FrmGlobespotter frmGlobespotter, int entityId, int pointId, MeasurementObservation observation) { if (_entityId != entityId) { _lastPointIdUpd = null; } string imageId = observation.imageId; GsExtension extension = GsExtension.GetExtension(); CycloMediaGroupLayer groupLayer = extension.CycloMediaGroupLayer; IMappedFeature locationInfo = groupLayer.GetLocationInfo(imageId); var recordingInfo = locationInfo as Recording; double stdX = (recordingInfo == null) ? 0 : (recordingInfo.LongitudePrecision ?? 0); double stdY = (recordingInfo == null) ? 0 : (recordingInfo.LatitudePrecision ?? 0); double stdZ = (recordingInfo == null) ? 0 : (recordingInfo.HeightPrecision ?? 0); string std = string.Format("{0:0.00} {1:0.00} {2:0.00}", stdX, stdY, stdZ); if ((_entityId != entityId) || (_pointId != pointId)) { ClearForm(false); _entityId = entityId; _pointId = pointId; _measurementPoint = null; _measurementPointS = null; txtNumber.Text = string.Empty; txtPosition.Text = string.Empty; txtPositionStd.Text = string.Empty; RelO.Image = null; SetOpenClose(false); } Measurement measurement = Measurement.Get(_entityId); if (measurement != null) { _measurementPointS = measurement[_pointId]; _measurementPointS.UpdateObservation(imageId, observation.x, observation.y, observation.z); txtNumber.Text = _measurementPointS.M.ToString(_ci); if (measurement.IsPointMeasurement) { SetOpenClose(true); if (_commandItem == null) { _commandItem = ArcMap.Application.CurrentTool; ArcUtils.SetToolActiveInToolBar("esriEditor.EditTool"); } } } if (bitmap != null) { _bitmapImageId.Add(imageId); _idBitmap.Add(bitmap); } bool add = true; foreach (ListViewItem item in lvObservations.Items) { var obs = item.Tag as MeasurementObservation; if (obs != null) { if (obs.imageId == imageId) { add = false; } } } if (add) { _frmGlobespotter = frmGlobespotter; var items = new[] { imageId, std, "X" }; var listViewItem = new ListViewItem(items) { Tag = observation }; lvObservations.Items.Add(listViewItem); DrawObservations(); RedrawObservationList(); } }
public static void UpdateObservation(int entityId, int pointId, MeasurementObservation observation) { Instance.UpdateObs(entityId, pointId, observation); }
public static void AddObservation(Bitmap bitmap, FrmGlobespotter frmGlobespotter, int entityId, int pointId, MeasurementObservation observation) { Open(); Instance.AddObs(bitmap, frmGlobespotter, entityId, pointId, observation); }
private void LookAtObservation() { MeasurementObservation observation = GetObservation(); observation?.LookAtMe(); }
private void OnObservationRemoved(object sender, MouseButtonEventArgs e) { MeasurementObservation observation = GetObservation(); observation?.RemoveMe(); }