Example #1
0
        //Version 3 defines a multipolygon by a single PLN with multiple exterior linestrings and interior rings in order below their exterior
        private ISOPolygon ExportVersion3Polygon(List <Polygon> adaptPolygons, ISOPolygonType polygonType)
        {
            ISOPolygon isoPolygon = new ISOPolygon(TaskDataMapper.Version);

            if ((int)polygonType < 9)
            {
                isoPolygon.PolygonType = polygonType;
            }
            else
            {
                isoPolygon.PolygonType = ISOPolygonType.Other; //Version 3 stops at 8/Other
            }

            isoPolygon.PolygonDesignator = adaptPolygons.First().Id.ToString();
            LineStringMapper lsgMapper = new LineStringMapper(TaskDataMapper);

            isoPolygon.LineStrings = new List <ISOLineString>();
            foreach (Polygon adaptPolygon in adaptPolygons)
            {
                if (adaptPolygon.ExteriorRing != null)
                {
                    isoPolygon.LineStrings.Add(lsgMapper.ExportLinearRing(adaptPolygon.ExteriorRing, ISOLineStringType.PolygonExterior));
                }
                if (adaptPolygon.InteriorRings != null)
                {
                    foreach (LinearRing interiorRing in adaptPolygon.InteriorRings)
                    {
                        isoPolygon.LineStrings.Add(lsgMapper.ExportLinearRing(interiorRing, ISOLineStringType.PolygonInterior));
                    }
                }
            }
            return(isoPolygon);
        }
Example #2
0
        public ISOPolygon ExportPolygon(Polygon adaptPolygon, ISOPolygonType polygonType)
        {
            ISOPolygon ISOPolygon = new ISOPolygon();

            ISOPolygon.PolygonType       = polygonType;
            ISOPolygon.PolygonDesignator = adaptPolygon.Id.ToString();

            LineStringMapper lsgMapper = new LineStringMapper(TaskDataMapper);

            ISOPolygon.LineStrings = new List <ISOLineString>();
            ISOPolygon.LineStrings.Add(lsgMapper.ExportLinearRing(adaptPolygon.ExteriorRing, ISOLineStringType.PolygonExterior));
            foreach (LinearRing interiorRing in adaptPolygon.InteriorRings)
            {
                ISOPolygon.LineStrings.Add(lsgMapper.ExportLinearRing(interiorRing, ISOLineStringType.PolygonInterior));
            }

            return(ISOPolygon);
        }
Example #3
0
        public IEnumerable <ISOPolygon> ExportMultipolygon(MultiPolygon adaptMultiPolygon, ISOPolygonType polygonType)
        {
            List <ISOPolygon> polygons = new List <ISOPolygon>();

            if (TaskDataMapper.Version > 3)
            {
                //Version 4 supports multiple polygons to define a spatial entity
                foreach (Polygon polygon in adaptMultiPolygon.Polygons)
                {
                    ISOPolygon ISOPolygon = ExportPolygon(polygon, polygonType);
                    polygons.Add(ISOPolygon);
                }
            }
            else
            {
                //Version 3
                if (adaptMultiPolygon != null && adaptMultiPolygon.Polygons.Any())
                {
                    ISOPolygon polygon = ExportVersion3Polygon(adaptMultiPolygon.Polygons, polygonType);
                    polygons.Add(polygon);
                }
            }
            return(polygons);
        }
Example #4
0
        public IEnumerable <ISOPolygon> ExportPolygons(IEnumerable <Polygon> adaptPolygons, ISOPolygonType polygonType)
        {
            List <ISOPolygon> polygons = new List <ISOPolygon>();

            foreach (Polygon polygon in adaptPolygons)
            {
                ISOPolygon ISOPolygon = ExportPolygon(polygon, polygonType);
                polygons.Add(ISOPolygon);
            }
            return(polygons);
        }