Arc Engine下数据的加载处理

1.加载Shapefile数据

1            IWorkspaceFactory pWorkspaceFactory;
 2            IFeatureWorkspace pFeatureWorkspace;
 3            IFeatureLayer pFeatureLayer;
 4
 5            //获取当前路径和文件名
 6            OpenFileDialog dlg = new OpenFileDialog();
 7            dlg.Filter = "Shape(*.shp)|*.shp|All Files(*.*)|*.*";
 8            dlg.Title = "Open Shapefile data";
 9            dlg.ShowDialog();
10            string strFullPath = dlg.FileName;
11            if (strFullPath == "") return;
12            int Index = strFullPath.LastIndexOf("\\");
13            string filePath = strFullPath.Substring(0, Index);
14            string fileName = strFullPath.Substring(Index + 1);
15
16            //打开工作空间并添加shp文件
17            pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();
18            pFeatureWorkspace = (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(filePath, 0);
19            pFeatureLayer = new FeatureLayerClass();
20
21            pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(fileName);
22            pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
23            axMapControl1.Map.AddLayer(pFeatureLayer);
24            axMapControl1.ActiveView.Refresh();

2.加载栅格数据

1            IWorkspaceFactory pWorkspaceFactory;
 2            IRasterWorkspace pRasterWorkspace;
 3
 4            OpenFileDialog dlg = new OpenFileDialog();
 5            dlg.Filter = "Layer File(*.lyr)|*.jpg;*.bmp;*.tiff";
 6            dlg.Title = "Open Raster Data File";
 7            dlg.ShowDialog();
 8            //获取当前路径和文件名
 9            string strFullPath = dlg.FileName;
10            if (strFullPath == "") return;
11            int Index = strFullPath.LastIndexOf("\\");
12            string fileName = strFullPath.Substring(Index + 1);
13            string filePath = strFullPath.Substring(0, Index);
14
15            pWorkspaceFactory = new RasterWorkspaceFactoryClass();
16            pRasterWorkspace = (IRasterWorkspace)pWorkspaceFactory.OpenFromFile(filePath, 0);
17            IRasterDataset pRasterDataset = (IRasterDataset)pRasterWorkspace.OpenRasterDataset(fileName);
18            IRasterLayer pRasterLayer = new RasterLayerClass();
19            pRasterLayer.CreateFromDataset(pRasterDataset);
20            axMapControl1.Map.AddLayer(pRasterLayer);
21            axMapControl1.ActiveView.Refresh();

3.加载CAD数据

1            IWorkspaceFactory pWorkspaceFactory;
 2            IFeatureWorkspace pFeatureWorkspace;
 3            IFeatureLayer pFeatureLayer;
 4            IFeatureDataset pFeatureDataset;
 5            //获取当前路径和文件名
 6            OpenFileDialog dlg = new OpenFileDialog();
 7            dlg.Filter = "CAD(*.dwg)|*.dwg|All Files(*.*)|*.*";
 8            dlg.Title = "Open CAD Data file";
 9            dlg.ShowDialog();
10            string strFullPath = dlg.FileName;
11            if (strFullPath == "") return;
12            int Index = strFullPath.LastIndexOf("\\");
13            string filePath = strFullPath.Substring(0, Index);
14            string fileName = strFullPath.Substring(Index + 1);
15            //打开CAD数据集
16            pWorkspaceFactory = new CadWorkspaceFactoryClass();
17            pFeatureWorkspace = (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(filePath, 0);
18            //打开一个要素集
19            pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(fileName);
20            //IFeaturClassContainer可以管理IFeatureDataset中的每个要素类
21            IFeatureClassContainer pFeatClassContainer = (IFeatureClassContainer)pFeatureDataset;
22            //对CAD文件中的要素进行遍历处理
23            for (int i = 0; i < pFeatClassContainer.ClassCount - 1; i++)
24            {
25                IFeatureClass pFeatClass = pFeatClassContainer.get_Class(i);
26                if (pFeatClass.FeatureType == esriFeatureType.esriFTCoverageAnnotation)
27                    //如果是注记,则添加注记层
28                    pFeatureLayer = new CadAnnotationLayerClass();
29                else//如果是点、线、面,则添加要素层
30                {
31                    pFeatureLayer = new FeatureLayerClass();
32                    pFeatureLayer.Name = pFeatClass.AliasName;
33                    pFeatureLayer.FeatureClass = pFeatClass;
34                    axMapControl1.Map.AddLayer(pFeatureLayer);
35                    axMapControl1.ActiveView.Refresh();
36                }
37            }

4.加载PersonGeodatabase数据

1            IWorkspaceFactory pAccessWorkspaceFactory;
 2            IFeatureWorkspace pFeatureWorkspace;
 3            IFeatureLayer pFeatureLayer;
 4            IFeatureDataset pFeatureDataset;
 5
 6            //获取当前路径和文件名
 7            OpenFileDialog dlg = new OpenFileDialog();
 8            dlg.Filter = "Personal Geodatabase(*.mdb)|*.mdb|All Files(*.*)|*.*";
 9            dlg.Title = "Open PersonGeodatabase file";
10            dlg.ShowDialog();
11            string strFullPath = dlg.FileName;
12            if (strFullPath == "") return;
13
14            //打开personGeodatabase,并添加图层
15            pAccessWorkspaceFactory = new AccessWorkspaceFactoryClass();
16            //打开工作空间并遍历数据集
17            IWorkspace pWorkspace = pAccessWorkspaceFactory.OpenFromFile(strFullPath, 0);
18            IEnumDataset pEnumDataset = pWorkspace.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny);
19            pEnumDataset.Reset();
20            IDataset pDataset = pEnumDataset.Next();
21            //如果数据集是IFeatureDataset,则遍历它下面的子类
22            if (pDataset is IFeatureDataset)
23            {
24                pFeatureWorkspace = (IFeatureWorkspace)pAccessWorkspaceFactory.OpenFromFile(strFullPath, 0);
25                pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(pDataset.Name);
26                IEnumDataset pEnumDataset1 = pFeatureDataset.Subsets;
27                pEnumDataset1.Reset();
28                IDataset pDataset1 = pEnumDataset1.Next();
29                //如果子类是FeatureClass,则添加到axMapControl1中
30                if (pDataset1 is IFeatureClass)
31                {
32                    pFeatureLayer = new FeatureLayerClass();
33                    pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset1.Name);
34                    pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
35                    axMapControl1.Map.AddLayer(pFeatureLayer);
36                    axMapControl1.ActiveView.Refresh();
37                }
38                else
39                {
40                    MessageBox.Show("No FeatureLayer!");
41                }
42            }
43            else
44            {
45                pFeatureWorkspace = (IFeatureWorkspace)pWorkspace;
46                pFeatureLayer = new FeatureLayerClass();
47                pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass("图层名");
48                pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
49                axMapControl1.Map.AddLayer(pFeatureLayer);
50                axMapControl1.ActiveView.Refresh();
51            }

5.加载SDE数据库数据

1        public ESRI.ArcGIS.Geodatabase.IWorkspace arcSDEWorkspaceOpen(String server, String instance, String user, String password, String database, String version)
 2        {
 3            try
 4            {
 5                // Create and populate the property set
 6                ESRI.ArcGIS.esriSystem.IPropertySet propertySet = new ESRI.ArcGIS.esriSystem.PropertySetClass();
 7                propertySet.SetProperty("SERVER", server);
 8                propertySet.SetProperty("INSTANCE", instance);
 9                propertySet.SetProperty("DATABASE", database);
10                propertySet.SetProperty("USER", user);
11                propertySet.SetProperty("PASSWORD", password);
12                propertySet.SetProperty("VERSION", version);
13
14                ESRI.ArcGIS.Geodatabase.IWorkspaceFactory2 workspaceFactory;
15                workspaceFactory = (ESRI.ArcGIS.Geodatabase.IWorkspaceFactory2)new SdeWorkspaceFactoryClass();
16                return workspaceFactory.Open(propertySet, 0);
17            }
18            catch (Exception e)
19            {
20                throw new Exception(String.Format("arcSDEWorkspaceOpen: {0}", e.Message), e);
21            }
22        }
23
24            IWorkspace pWorkspace = arcSDEWorkspaceOpen("计算机名", "5151", "数据库用户", "密码", "", "sde.DEFAULT");
25
26            IFeatureWorkspace pFeattureWS = (IFeatureWorkspace)pWorkspace;
27            IFeatureClass pFeatureClass = pFeattureWS.OpenFeatureClass("图层名");
28            IFeatureLayer pFeatureLayer = new FeatureLayerClass();
29            pFeatureLayer.FeatureClass = pFeatureClass;
30
31            axMapControl1.AddLayer(pFeatureLayer);
32            axMapControl1.Refresh();

6、文件地理数据库加载

          IFeatureWorkspace pFeatureWorkspace;
                IFeatureLayer pFeatureLayer;
               IFeatureDataset pFeatureDataset;
                string filePath = @"D:\My Documents\ArcGIS\新建文件地理数据库.gdb";
                string filename = "haha";
                //打开personGeodatabase,并添加图层
                IWorkspaceFactory pAccessWorkspaceFactory = new FileGDBWorkspaceFactoryClass();
                //打开工作空间并遍历数据集
                IWorkspace pWorkspace = pAccessWorkspaceFactory.OpenFromFile(filePath, 0);
                IEnumDataset pEnumDataset = pWorkspace.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny);
                pEnumDataset.Reset();
                IDataset pDataset = pEnumDataset.Next();
                //如果数据集是IFeatureDataset,则遍历它下面的子类
                if (pDataset is IFeatureDataset)
                {
                    pFeatureWorkspace = (IFeatureWorkspace)pAccessWorkspaceFactory.OpenFromFile(filePath, 0);
                    pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(pDataset.Name);
                    IEnumDataset pEnumDataset1 = pFeatureDataset.Subsets;
                    pEnumDataset1.Reset();
                    IDataset pDataset1 = pEnumDataset1.Next();
                    //如果子类是FeatureClass,则添加到axMapControl1中
                    if (pDataset1 is IFeatureClass)
                    {
                        pFeatureLayer = new FeatureLayerClass();
                        pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(filename);
                        pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
                        IRgbColor pRgbColor = new RgbColorClass();
                        pRgbColor.Red = 255;
                        pRgbColor.Green = 255;
                        pRgbColor.Blue = 0;
                        pRgbColor.Transparency = 1;
                        ILineSymbol pLineSymbol = new SimpleLineSymbolClass();
                        IFillSymbol pFillSymbol = new SimpleFillSymbolClass();
                        pFillSymbol.Color = pRgbColor;
                        pRgbColor.Transparency = 1;
                        pLineSymbol.Color = pRgbColor;
                        pLineSymbol.Width = 0;
                        pFillSymbol.Outline = pLineSymbol;
                        ISimpleRenderer pSimpleRender = new SimpleRendererClass();
                        pSimpleRender.Symbol = pFillSymbol as ISymbol;
                        IGeoFeatureLayer pGeoFeatureLayer = pFeatureLayer as IGeoFeatureLayer;
                        pGeoFeatureLayer.Renderer = pSimpleRender as IFeatureRenderer;
                        pFeatureLayer = pGeoFeatureLayer as IFeatureLayer;
                        axMapControl1.Map.AddLayer(pFeatureLayer);
                        axMapControl1.ActiveView.Refresh();
                    }                 }
时间: 2024-08-02 17:21:05

Arc Engine下数据的加载处理的相关文章

ArcGIS Engine中数据的加载 (转)

1.加载Shapefile数据 1 IWorkspaceFactory pWorkspaceFactory; 2 IFeatureWorkspace pFeatureWorkspace; 3 IFeatureLayer pFeatureLayer; 4 5 //获取当前路径和文件名 6 OpenFileDialog dlg = new OpenFileDialog(); 7 dlg.Filter = "Shape(*.shp)|*.shp|All Files(*.*)|*.*"; 8

页面滚动动态加载数据,页面下拉自动加载内容 jquery

<!DOCTYPE=html> <html> <head> < script src="js/jquery.js" type="text/javascript"></ script> < script type="text/javascript"> $(document).ready(function(){ var range = 50; //距下边界长度/单位px var

JS实现-页面数据无限加载

在手机端浏览网页时,经常使用一个功能,当我们浏览京东或者淘宝时,页面滑动到底部,我们看到数据自动加载到列表.之前并不知道这些功能是怎么实现的,于是自己在PC浏览器上模拟实现这样的功能.先看看浏览效果: 当滚动条滚动到页面底部时,提示“正在加载…”. 当页面已经加载了所有数据后,滚动到页面底部会提示“数据已加载到底了”: 实现数据无限加载的过程大致如下: 1.滚动条滚动到页面底部. 2.触发ajax加载,把请求返回的数据加载到列表后面. 如何判断滚动条是否滚动到页面底部?我们可以设置一个规则:当滚

WinForm ListView虚拟模式加载数据 提高加载速度

将VirtualMode 属性设置为 true 会将 ListView 置于虚拟模式.控件不再使用Collection.Add()这种方式来添加数据,取而代之的是使用RetrieveVirtualItem(Occurs when the ListView is in virtual mode and requires a ListViewItem.)和CacheVirtualItems两个事件,单独使用RetrieveVirtualItem也可以,CacheVirtualItems这个事件主要是

省市数据递归加载到TreeView

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace 省市数据递归加载到TreeView { public

smartjs - DataManager 场景示例分析 - 数据懒加载

发一张policy的参数图设置图: 场景1 - 数据的懒加载/延迟加载 在很多时候,为了提高网页的加载速度,减少不必要的开销,会将页面的数据拆分成几个部分,首先加载呈现可视区域内的数据,然后剩下来的会在需要的时候在进行加载. 而这种按需加载的数据又分为两种: 1.按照需要进行加载:可以是由某个动作触发来引起,比如:tab,查看更多等: 2.采用缓存的方式:对后续动作的预知,提前将后续的数据加载进来,放入到缓存中:等需要的时候能提供快速的响应:比如:很多igrid的滚动分页 那么来看一下在data

安卓中实现界面数据懒加载

大家在使用手机新闻客户端的时候就会有一个发现,大多数的新闻客户端都会把新闻分类,诸如头条.娱乐.体育.科技等等,如何实现这种界面的呢?这个实现起来其实很简单,就是在一个Fragment中实现多个ViewPage的切换,再在ViewPage的上面放一个TabLayout,关联起来就可以实现联动效果.如果大家感觉不太明了的话,以后我可以专门写一篇关于Fragment中放入多个ViewPage的博客,今天,我主要介绍的是怎样实现界面即Fragment的懒加载.那么,大家就会奇怪了既然是加载界面直接加载

Android数据分批加载-滑动到底部自动加载列表

Android数据分批加载-滑动到底部自动加载列表 2014年5月9日 本博文介绍如何进行数据分批加载,在应用开发当中会经常使用到ListView,点击更多加载数据是我们经常简单,为了提供用户体验,当用户将列表滚动到底部自动加载数据,这样的形式用得比较多. 下面给大家提供的例子是,每次模拟20条数据,滑动到底部时再请求20条数据直到请求到限定页数为止 具体代码实现: /08_Datapageload/src/com/wwj/datapageload/MainActivity.java packa

早上研究了下jsp的加载顺序,顺便复习下jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <%@ include file="