Exemple #1
0
        protected override void Serialize(SharpMap.Layers.Layer layer, XmlElement lyrElement)
        {
            // << Check layer on null>>
            if (layer == null)
            {
                lyrElement.InnerText = MapSerializerConst.NullValue;
            }
            else
            {
                //Add attr TYPE
                XmlAttribute typeAttribute = lyrElement.OwnerDocument.CreateAttribute("Type");
                typeAttribute.Value = layer.GetType().ToString();
                lyrElement.Attributes.Append(typeAttribute);
                switch (layer.GetType().ToString())
                {
                case "eidss.gis.Layers.EidssSystemDbLayer":
                case "eidss.gis.Layers.EidssExtSystemDbLayer":
                    EidssDbLayerSerializer.Serialize((EidssDbLayer)layer, lyrElement);
                    break;

                case "eidss.gis.Layers.EidssUserDbLayer":
                case "eidss.gis.Layers.EidssUserBufZoneLayer":
                    EidssUserDbLayerSerializer.Serialize((EidssUserDbLayer)layer, lyrElement);
                    break;

                case "eidss.gis.Layers.EidssLabelLayer":
                case "eidss.gis.Layers.EidssSystemLabelLayer":
                case "eidss.gis.Layers.EidssExtSystemLabelLayer":
                    EidssLabelLayerSerializer.Serialize((EidssLabelLayer)layer, lyrElement);
                    break;

                case "GIS_V4.Layers.VectorLayer":
                    VectorLayerSerializer.Serialize((VectorLayer)layer, lyrElement);
                    break;

                case "GIS_V4.Layers.LabelLayer":
                    LabelLayerSerializer.Serialize((LabelLayer)layer, lyrElement);
                    break;

                case "GIS_V4.Layers.GdalRasterLayer":
                    GdalRasterLayerSerializer.Serialize((GdalRasterLayer)layer, lyrElement);
                    break;

                case "GIS_V4.Layers.LayerGroup":
                    EidssLayerGroupSerializer.Instance.Serialize((LayerGroup)layer, lyrElement);
                    break;

                case "GIS_V4.Layers.TileLayer":
                    TileLayerSerializer.Serialize((TileLayer)layer, lyrElement);
                    break;

                default:
                    throw new NotImplementedException();
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// 获得当前影像的范围
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="isShapeFile"></param>
        /// <param name="gcsWkt"></param>
        /// <returns></returns>
        public static Envelop GetEnvelop(string fileName, bool isShapeFile, string gcsWkt)
        {
            ICoordinateSystem srcCoor = null;

            SharpMap.Layers.Layer layer = null;
            if (isShapeFile)
            {
                SharpMap.Layers.VectorLayer l = new SharpMap.Layers.VectorLayer(Path.GetFileNameWithoutExtension(fileName));
                l.DataSource = new SharpMap.Data.Providers.ShapeFile(fileName, true);
                l.SRID       = 4326;
                srcCoor      = ((SharpMap.Data.Providers.ShapeFile)l.DataSource).CoordinateSystem;
                layer        = l;
            }
            else
            {
                SharpMap.Layers.GdalRasterLayer l = new SharpMap.Layers.GdalRasterLayer(Path.GetFileNameWithoutExtension(fileName), fileName);
                l.SRID    = 4326;
                l.Enabled = true;
                srcCoor   = l.GetProjection();
                layer     = l;
            }

            Envelop envelop = new Envelop();

            //if (srcCoor != null)
            //{
            //    CoordinateSystemFactory cFac = new CoordinateSystemFactory();
            //    ICoordinateSystem tarCoor = cFac.CreateFromWkt(gcsWkt);
            //    ICoordinateTransformation transform = null;
            //    try
            //    {
            //        transform = new CoordinateTransformationFactory().CreateFromCoordinateSystems(srcCoor, tarCoor);
            //    }
            //    catch (Exception e)
            //    {
            //        return new Envelop();
            //    }

            //    SharpMap.Geometries.BoundingBox imageBox = GeometryTransform.TransformBox(layer.Envelope, transform.MathTransform);

            //    envelop.North = imageBox.Top;
            //    envelop.South = imageBox.Bottom;
            //    envelop.West = imageBox.Left;
            //    envelop.East = imageBox.Right;
            //}
            //else
            //{
            envelop.East  = layer.Envelope.Right;
            envelop.West  = layer.Envelope.Left;
            envelop.North = layer.Envelope.Top;
            envelop.South = layer.Envelope.Bottom;
            //}
            return(envelop);
        }