Esempio n. 1
0
        // 从服务器加载地图
        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);
            }
        }
Esempio n. 2
0
 internal ILayer GetLayerFromImageService(Uri uri)
 {
     ImageServerLayer imLayer;
     try
     {
         imLayer = new ImageServerLayerClass();
         imLayer.Initialize(uri.AbsoluteUri);
         return imLayer;
     }
     catch
     {
         return null;
     }
 }
Esempio n. 3
0
        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 ;
        }