Exemplo n.º 1
0
        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
            };
        }
Exemplo n.º 2
0
        public static Polygon PolygonFromDbGeometry(DbGeometry inp)
        {
            if (inp.SpatialTypeName != "Polygon")
            {
                throw new ArgumentException();
            }
            var linearRings = new List <LineString>();

            // first get the exterior ring
            var exteriorRing = LineStringFromDbGeometry(inp.ExteriorRing);

            Check.Require(exteriorRing.IsLinearRing(), "We expect the exterior ring to be a Linear Ring for this to be a polygon!");
            linearRings.Add(exteriorRing);

            // then get any interior rings
            for (var i = 1; i <= inp.InteriorRingCount; ++i)
            {
                linearRings.Add(LineStringFromDbGeometry(inp.InteriorRingAt(i)));
            }

            var polygon = new Polygon(linearRings);

            return(polygon);
        }