Friday, February 2, 2018

Code Snippet: Read ArcGIS Offline Geodatabase into ArcGIS Runtime in WPF

Be The First To Comment
Here is an quick code snippet for loading ArcGIS runtime database ( offline database) in .NET in ESRI Runtime version 100. The OverlayFeatureLayers() reads the layers from runtime geodatabase and overlayes on runtime environment map in Web Mercator Projection (EPSG: 3857)

 using System;  
 using System.Collections.Generic;  
 using System.Linq;  
 using System.Text;  
 using System.Threading.Tasks;  
 using System.IO;  
 using System.Runtime.CompilerServices;  
 using System.Windows.Input;  
 using Esri.ArcGISRuntime.Data;  
 using Esri.ArcGISRuntime.Geometry;  
 using Esri.ArcGISRuntime.Location;  
 using Esri.ArcGISRuntime.Mapping;  
 using Esri.ArcGISRuntime.Security;  
 using Esri.ArcGISRuntime.Symbology;  
 using Esri.ArcGISRuntime.Tasks;  
 using Esri.ArcGISRuntime.UI;  
 using ReadRuntimeGeodatabase.CustomViewModelBase;  
 namespace ReadRuntimeGeodatabase  
 {  
   public class MapViewModel : ViewModelBase  
   {  
     public MapViewModel()  
     {  
       OverlayFeatureLayers();  
     }  
     private Map _map = new Map(SpatialReference.Create(3857));  
     public Map Map  
     {  
       get { return this._map; }  
       set  
       {  
         if (value != this._map)  
         {  
           this._map = value;  
           NotifyPropertyChanged("Map");  
         }  
       }  
     }  
     private async void OverlayFeatureLayers()  
     {  
       Basemap basemap = Basemap.CreateStreets();  
       _map.Basemap = basemap;  
       string gdbsPath = @"C:\RuntimeToFileGeodatabase;  
       DirectoryInfo dirInfo = new DirectoryInfo(gdbsPath);  
       String[] files = dirInfo.GetFiles("*.geodatabase").Select(file => file.FullName).ToArray<string>();  
       foreach (var gdbFile in files)  
       {  
         // open a geodatabase on the local device  
         var gdb = await Esri.ArcGISRuntime.Data.Geodatabase.OpenAsync(gdbFile);  
         // loop thru all tables in the geodatabase  
         foreach (var table in gdb.GeodatabaseFeatureTables.ToList())  
         {  
           table.UseAdvancedSymbology = true;  
           var layer = new FeatureLayer(table);  
           await table.LoadAsync();  
           if (table.LoadStatus == Esri.ArcGISRuntime.LoadStatus.Loaded && table.GeometryType.ToString() != "Unknown")  
           {  
             await layer.LoadAsync();  
             if (layer.Name == "River_line")  
             {  
               // Defaul renderer comes with geodatabase doesn't show up  
               SimpleRenderer customrenderer = new SimpleRenderer();  
               customrenderer.Symbol = new SimpleLineSymbol(SimpleLineSymbolStyle.Solid, System.Windows.Media.Colors.Black, 2);  
               layer.Renderer = customrenderer;  
               Envelope envelope = layer.FullExtent;  
               _map.InitialViewpoint = new Viewpoint(envelope);  
             }  
             else {  
               if (table.GeometryType.ToString() == "Polyline")  
               {  
                 SimpleRenderer customrenderer = new SimpleRenderer();  
                 customrenderer.Symbol = new SimpleLineSymbol(SimpleLineSymbolStyle.Dash, System.Windows.Media.Colors.Green, 2);  
                 layer.Renderer = customrenderer;  
               }  
             }             
             System.Diagnostics.Debug.WriteLine(layer.LoadStatus + "---" + layer.Name + "--" + layer.FullExtent + "--" + table.GeometryType + "--" + layer.IsVisibleAtScale(100) + "--" + layer.IsVisible + "--" + layer.MaxScale + "--" + layer.MinScale);  
             if (layer.LoadStatus == Esri.ArcGISRuntime.LoadStatus.Loaded)  
             {  
               _map.OperationalLayers.Add(layer);  
             }  
           }  
           else  
           {  
             System.Diagnostics.Debug.WriteLine("No Geom -->" + table.TableName);  
           }  
         }  
       }  
     }  
   }  
 }  
 

© 2011 GIS and Remote Sensing Tools, Tips and more .. ToS | Privacy Policy | Sitemap

About Me