private IEnumerable <ObservationPoint> GetObservationPoints(string observerPointsFeatureClassName) { var observerPointsFeatureClass = GdbAccess.Instance.GetFeatureClass(_gdb, observerPointsFeatureClassName); var pointsFromLayer = VisibilityManager .GetObservationPointsFromAppropriateLayer(string.Empty, null, null, observerPointsFeatureClass); if (!pointsFromLayer.Any()) { Debugger.Launch(); } return(pointsFromLayer.Select(point => { return point as ObservationPoint; }).ToArray()); }
private void CalculateVATotalValues(int pointsCount, string visibilityAreasFCName) { _logger.InfoEx("> CalculateVATotalValues START"); var visibilityPolygonsForPointFeatureClass = GdbAccess.Instance.GetFeatureClass(_gdb, visibilityAreasFCName); var totalObjArea = GetProjectedPolygonArea(_objPolygons[-1]); try { foreach (var polygon in _objPolygons) { if (polygon.Key == -1) { continue; } var obj = VisibilityManager.GetObservationObjectsFromFeatureClass(_observationStationFeatureClass) .FirstOrDefault(observationObject => observationObject.ObjectId == polygon.Key); if (obj == null) { _logger.ErrorEx($"CalculateVATotalValues. Observation object with id {polygon.Key} is not found"); return; } if (totalObjArea == 0) { AddEmptyAreaRow(_allTitle, -1, polygon.Key, obj.Title, -1); continue; } var visibilityArea = EsriTools.GetObjVisibilityArea(visibilityPolygonsForPointFeatureClass, VisibilityManager.CurrentMap, polygon.Value); var polygonArea = GetProjectedPolygonArea(polygon.Value); AddVARowModel(_allTitle, -1, obj.Title, polygon.Key, -1, visibilityArea, polygonArea); } } catch (Exception ex) { _logger.ErrorEx($"CalculateVATotalValues Exception(1): {ex.Message}"); } try { for (int i = 1; i <= pointsCount; i++) { var areaByPointsSee = EsriTools.GetObjVisibilityArea(visibilityPolygonsForPointFeatureClass, VisibilityManager.CurrentMap, _objPolygons[-1], i); var polygon = _objPolygons[-1]; var polygonArea = GetProjectedPolygonArea(polygon); AddVARowModel(_allTitle, -1, _allTitle, -1, i, areaByPointsSee, polygonArea); } } catch (Exception ex) { _logger.ErrorEx($"CalculateVATotalValues Exception(2): {ex.Message}"); } _logger.InfoEx("> CalculateVATotalValues END"); }
private void CalculateCoverageTableVADataForPoint(bool isTotal, string currentPointFeatureClassName, string visibilityAreasFCName, int pointCount, int curPointId) { _logger.InfoEx("> CalculateCoverageTableVADataForPoint START. isTotal:{0} currPointId:{1}", isTotal.ToString(), curPointId); if (isTotal) { CalculateVATotalValues(pointCount, visibilityAreasFCName); } if (!isTotal || pointCount == 1) { var observPoint = GetObservationPoints(currentPointFeatureClassName).First(); if (observPoint == null) { _logger.ErrorEx($"> CalculateCoverageTableVADataForPoint END. Observation point with id {curPointId} is not found"); return; } else { _logger.DebugEx("CalculateCoverageTableVADataForPoint. observPoint.Title: {0}", observPoint.Title); } try { var totalObjArea = (IArea)_objPolygons[-1]; var visibilityPolygonsForPointFeatureClass = GdbAccess.Instance.GetFeatureClass(_gdb, visibilityAreasFCName); foreach (var polygon in _objPolygons) { if (polygon.Key == -1) { continue; } var obj = VisibilityManager.GetObservationObjectsFromFeatureClass(_observationStationFeatureClass) .FirstOrDefault(observationObject => observationObject.ObjectId == polygon.Key); if (obj == null) { continue; } if (totalObjArea.Area == 0) { AddEmptyAreaRow(observPoint.Title, curPointId, polygon.Key, obj.Title); continue; } var visibilityArea = EsriTools.GetObjVisibilityArea(visibilityPolygonsForPointFeatureClass, VisibilityManager.CurrentMap, polygon.Value); var objArea = GetProjectedPolygonArea(polygon.Value); AddVARowModel(observPoint.Title, curPointId, obj.Title, polygon.Key, 1, visibilityArea, objArea); } } catch (Exception ex) { _logger.ErrorEx($"> CalculateCoverageTableVADataForPoint Exception: {ex.Message}"); return; } } _logger.InfoEx("> CalculateCoverageTableVADataForPoint END"); }