public HRURequestFeature(DbGeometry catchmentGeometry, HRURequestFeatureAttributes baseAttributes, int i) { var rings = new List <List <double[]> >(); var catchmentGeometryExteriorRing = catchmentGeometry.ExteriorRing; var exteriorRingCoordinates = GetRingCoordinates(catchmentGeometryExteriorRing); // need to account for interior rings // need to skip geometries with exterior rings I guess rings.Add(exteriorRingCoordinates); for (var j = 1; j <= catchmentGeometry.InteriorRingCount; j++) { var interiorRing = catchmentGeometry.InteriorRingAt(j); var interiorRingCoordinates = GetRingCoordinates(interiorRing); rings.Add(interiorRingCoordinates); } Geometry = new EsriPolygonGeometry { Rings = rings }; Attributes = new HRURequestFeatureAttributes { ObjectID = baseAttributes.ObjectID, QueryFeatureID = i, Area = baseAttributes.Area, Length = baseAttributes.Length }; }
// ReSharper disable once UnusedMember.Global public static IEnumerable <HRURequestFeature> GetHRURequestFeatures(this IHaveHRUCharacteristics iHaveHRUCharacteristics) { var baseAttributes = new HRURequestFeatureAttributes { ObjectID = iHaveHRUCharacteristics.PrimaryKey, Area = iHaveHRUCharacteristics.GetCatchmentGeometry().Area.GetValueOrDefault(), Length = iHaveHRUCharacteristics.GetCatchmentGeometry().Length.GetValueOrDefault(), }; var catchmentGeometry = CoordinateSystemHelper.Project2771To2230(iHaveHRUCharacteristics.GetCatchmentGeometry()); for (var i = 1; i <= catchmentGeometry.ElementCount; i++) { if (catchmentGeometry.ElementAt(i).SpatialTypeName.ToUpper() == "POLYGON") { yield return(new HRURequestFeature(catchmentGeometry.ElementAt(i), baseAttributes, i)); } } }
public static IEnumerable <HRURequestFeature> GetHRURequestFeatures(this IEnumerable <LoadGeneratingUnit> loadGeneratingUnits) { foreach (var loadGeneratingUnit in loadGeneratingUnits) { var baseAttributes = new HRURequestFeatureAttributes { ObjectID = loadGeneratingUnit.PrimaryKey, Area = loadGeneratingUnit.LoadGeneratingUnitGeometry.Area.GetValueOrDefault(), Length = loadGeneratingUnit.LoadGeneratingUnitGeometry.Length.GetValueOrDefault(), QueryFeatureID = loadGeneratingUnit.LoadGeneratingUnitID }; var catchmentGeometry = CoordinateSystemHelper.Project2771To2230(loadGeneratingUnit.LoadGeneratingUnitGeometry); for (var i = 1; i <= catchmentGeometry.ElementCount; i++) { if (catchmentGeometry.ElementAt(i).SpatialTypeName.ToUpper() == "POLYGON") { yield return(new HRURequestFeature(catchmentGeometry.ElementAt(i), baseAttributes, loadGeneratingUnit.LoadGeneratingUnitID)); } } } }