// 从服务器加载地图 public void LoadTitleFromServer() { try { LoadLyrFile(); globeBusiness.AddLayerInit(); List <TileServer> imgServers = GetServerPath(); if (imgServers == null || imgServers.Count <= 0) { return; } foreach (var server in imgServers) { IImageServerLayer layer = new ImageServerLayerClass(); layer.SpatialReference = new SpatialReferenceEnvironmentClass().CreateProjectedCoordinateSystem(3857); //layer.SpatialReference = new SpatialReferenceEnvironmentClass().CreateProjectedCoordinateSystem((int)esriSRProjCS3Type.esriSRProjCS_WGS1984WebMercatorMajorAuxSphere); layer.Initialize(server.Url); IRaster raster = layer.Raster; IRasterLayer pRasterLayer = new RasterLayerClass(); pRasterLayer.Name = server.Name; pRasterLayer.CreateFromRaster(raster); axGlobeControl1.Globe.AddLayerType(pRasterLayer, esriGlobeLayerType.esriGlobeLayerTypeDraped); } } catch (Exception ex) { Log4Allen.WriteLog(typeof(AxGlobeControlEx), ex.Message); } }
internal ILayer GetLayerFromImageService(Uri uri) { ImageServerLayer imLayer; try { imLayer = new ImageServerLayerClass(); imLayer.Initialize(uri.AbsoluteUri); return imLayer; } catch { return null; } }
public static ILayer Clone(this ILayer layer) { if (layer is IPersistStream) { IObjectCopy objectCopy = new ObjectCopyClass(); object clone = objectCopy.Copy(layer); ILayer layerClone = clone as ILayer; return(layerClone); } if (layer is IPersistVariant) { // Create an XML Stream IXMLStream xmlStream = new XMLStreamClass(); IVariantStreamIO variantStreamIO = new VariantStreamIOClass() { Stream = (IStream)xmlStream }; // Save Layer to Stream IVariantStream variantStream = (IVariantStream)variantStreamIO; IPersistVariant save = (IPersistVariant)layer; save.Save(variantStream); // Move Seek Pointer to beginning of Stream xmlStream.Reset(); // Create New Layer ILayer newlayer = null; if (layer is IImageServerLayer) { newlayer = new ImageServerLayerClass(); } if (newlayer == null) { return(null); } // Create new Layer IPersistVariant load = (IPersistVariant)newlayer; load.Load(variantStream); // Return Cloned Layer return(newlayer); } return(null); }
public static ILayer Clone(this ILayer layer) { if (layer is IPersistStream) { IObjectCopy objectCopy = new ObjectCopyClass(); object clone = objectCopy.Copy(layer); ILayer layerClone = clone as ILayer; return layerClone; } if (layer is IPersistVariant) { // Create an XML Stream IXMLStream xmlStream = new XMLStreamClass(); IVariantStreamIO variantStreamIO = new VariantStreamIOClass() { Stream = (IStream)xmlStream }; // Save Layer to Stream IVariantStream variantStream = (IVariantStream)variantStreamIO; IPersistVariant save = (IPersistVariant)layer; save.Save(variantStream); // Move Seek Pointer to beginning of Stream xmlStream.Reset(); // Create New Layer ILayer newlayer = null; if (layer is IImageServerLayer) { newlayer = new ImageServerLayerClass(); } if (newlayer == null) { return null; } // Create new Layer IPersistVariant load = (IPersistVariant)newlayer; load.Load(variantStream); // Return Cloned Layer return newlayer; } return null; }
/// <summary> /// updates featureclasses that need updatign given a spatial filter /// </summary> /// <param name="sFlt">spatial filter</param> public void getDbFtrClassesThatNeedUpdating(ISpatialFilter sFlt) { Dictionary<string, int> lyrId = new Dictionary<string, int>(); Dictionary<int, Dictionary<string, int>> svDic = new Dictionary<int,Dictionary<string,int>>(); IQueryFilter qf = new QueryFilterClass(); try { for (int i = 0; i < tblLyr.Fields.FieldCount; i++) { IField fld = tblLyr.Fields.get_Field(i); Console.WriteLine(fld.Name); } qf.WhereClause = "\"UPDATE\" = 'YES'"; ICursor SCur = tblLyr.Search(qf, false); int lyIdIndex, lyIndex, lyFkIndex; lyIdIndex = tblLyr.FindField("LAYERID"); lyIndex = tblLyr.FindField("LAYERS"); lyFkIndex = tblLyr.FindField("FKID"); IRow sRow = SCur.NextRow(); while (sRow != null) { int fkVl = System.Convert.ToInt32(sRow.get_Value(lyFkIndex)); string lyVl = sRow.get_Value(lyIndex).ToString(); int lyIdVl = System.Convert.ToInt32(sRow.get_Value(lyIdIndex)); if (svDic.TryGetValue(fkVl, out lyrId)) { lyrId.Add(lyVl, lyIdVl); } else { lyrId = new Dictionary<string, int>(); lyrId.Add(lyVl, lyIdVl); svDic.Add(fkVl, lyrId); } sRow = SCur.NextRow(); } foreach (KeyValuePair<int, Dictionary<string, int>> kvp in svDic) { int svKey = kvp.Key; lyrId = kvp.Value; IRow row = tblSrv.GetRow(svKey); string svName = row.get_Value(row.Fields.FindField("SERVICE")).ToString(); int conFk = System.Convert.ToInt32(row.get_Value(row.Fields.FindField("FKID"))); string svType = row.get_Value(row.Fields.FindField("STYPE")).ToString(); string svUrl = row.get_Value(row.Fields.FindField("URL")).ToString(); row = tblCon.GetRow(conFk); string cnName = row.get_Value(row.Fields.FindField("CONNECTION")).ToString(); if (svType.ToLower() == "mapserver") { fillDbFtrClasses(sFlt, cnName, svName, lyrId); } else { IImageServerLayer imsLyr = new ImageServerLayerClass(); imsLyr.Initialize(svUrl); fillDbRaster(imsLyr, sFlt.Geometry.Envelope); } } compactDatabase(); } catch (Exception e) { System.Windows.Forms.MessageBox.Show(e.ToString()); Console.WriteLine(e.ToString()); } return ; }