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(); } } }
/// <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); }