热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

如何获取镶嵌数据集中每一个栅格数据的物理路径

从ArcGIS10版本之后就推出了mosaicdataset,而且mosaicdataset以其非常优秀的性能以及强大的功能深受广大用户喜欢,而且越来越多的ArcGIS10用户都

从ArcGIS10版本之后就推出了mosaic dataset,而且mosaic dataset以其非常优秀的性能以及强大的功能深受广大用户喜欢,而且越来越多的ArcGIS10用户都已经使用了它来存储和管理影像数据。

相关Mosaic dataset的参考:http://help.arcgis.com/zh-cn/arcgisdesktop/10.0/help/index.html#/na/009t00000037000000/

那么Mosaic Dataset最大的特点或者说对比ArcGIS9提供的影像存储方式,RasterDataset或者RasterCatalog来说,Mosaic Dataset是不用讲实际的影像入库,而在数据库里面保留相关的路径信息,这样无疑大大增强了入库的效率。

那么有了上面的说明,可能大家就希望得到存储在ArcSDE里面的影像实际路径的信息,也就是本文的标题。

那么大家只需要参考如下代码即可获得相关信息。


有用户问过这样一个问题,如何获取镶嵌数据集中的某一个栅格数据的物理路径也就是原来的路径,我获取了每一个栅格数据然后用工作空间的路径+栅格数据的名称,但是这个得到的结果是不正确的,这周向esri的smirith请教后才恍然大悟,,看来我对镶嵌数据集的理解还不够深刻。

    因为遇到过,所以铭记自信;又因为解决了,所以分享,感谢smrithi的指导

 

    private void button2_Click(object sender, EventArgs e)
        {
            IWorkspace pFileWs = GetSDEWorkspace("E:\\影像\\Geodatabase.gdb");

            IMosaicDataset pMosaic = OpenMosaicDataset(pFileWs, "test1");

                      ITable pTable = pMosaic.Catalog as ITable;


             int i = pTable.FindField("RASTER");

                ICursor pCursor = pTable.Search(null, false);

                IRow pRow = pCursor.NextRow();

            
                while (pRow != null)
                {

                    IRasterCatalogItem pRasterCatalogItem = (IRasterCatalogItem)pRow;

 

                    IRasterDataset pRasterdataset = pRasterCatalogItem.RasterDataset;

                //每一个item不是Raseter所以我用工作空间路径+栅格名称是错误的,用了这个接口就正确了
                    IFunctionRasterDataset pFunctiOnRD= pRasterdataset as IFunctionRasterDataset;

                    IArray pArray = pFunctionRD.MemberRasterDatasets;

                    for (int n = 0; n                     {
                        IRasterDataset pFunRst= pArray.get_Element(n) as IRasterDataset;
                        string sName = pFunRst.CompleteName;

                    }

                    IDataset pDs = pRasterdataset as IDataset;

                    string s = pDs.Workspace.PathName;

                    pRow = pCursor.NextRow();
                }
        }



注:

Smrithi为Esri美国负责Raster Type扩展的开发人员




或许有些用户之间使用了上面的代码,还是会出现问题,那么我就把我测试这段代码所碰到的问题给大家描述一下,也方便大家来更好的理解和使用MosaicDataset。

问题一:

执行IMosaicDataset mosaicDataset = mosaicWsExtension.OpenMosaicDataset("mdd");报错,死活打不开。

原因:这个错误以及犯了两次了,因为我测试的ArcGIS Engine环境是ArcGIS10版本,但是我是使用的ArcGIS Desktop10.1创建的Mosaic Dataset并且导入的数据。其实我们在讲到ArcGIS10.1的新特性也会提及到

http://resources.arcgis.com/zh-CN/help/main/10.1/#/na/016w00000032000000/

客户端

10.0 镶嵌数据集

10.1 镶嵌数据集

10.0

完整(读取/修改/创建)

不支持

10.1

只读

完整(读取/修改/创建)

那么也就是说使用ArcGIS10.1创建的Mosaic Dataset有许多新特性,但是ArcGIS Engine10是没有办法处理的。以上是关于桌面的限制,那么针对ArcGIS Engine来说,就会报错,所以针对这块大家记住尽可能的版本保持一致即可。

问题二:

如果我的机器上既有ArcGIS Desktop10、ArcGIS Engine10、ArcSDE10,并且使用Desktop将本地的影像数据导入到ArcSDE10,运行这段代码完全没有问题,那么如果是我使用其他机器的ArcGIS  Desktop 10将那台机器上的影像导入到ArcSDE,我们使用本机的ArcGIS Engine10来执行就得不到影像的物理路径。如下图:


这个其实也证明了Mosaic Dataset的一个特点,也就是说我们在使用过过程中会出现这中情形,A机器和B机器同时连接同一个ArcSDE数据库,A机器可以加载同一个名字的MosaicDataset并能看到相关的影像,但是B机器虽然也可以加载同一个名字的mosaic Dataset却看不到影像。

这就是因为数据是在A机器里面存储着,前面已经说过了,虽然说入库,但是只是导入了相关的物理引用路径,实际的影像并没有导入到数据库中,这样就是为什么B机器只能加载数据(其实就是加载的mosaic dataset对象)但是看不到影像。为什呢呢?A机器并没有设置共享权限给B机器可读。

经过上面的分析,我们需要将B机器的相关影像文件夹进行共享,然后使用UNC路径进行加载影像,那么这样A机器才能获得相关的实际物理路径。

总结起来一句话,加载影像到ArcSDE库里面

1:共享你的文件夹(里面存储要加载的影像)

2:使用UNC路径进行加载比如\\192.168.1.1\raster\1.tiff

经过上面的分析其实在使用ArcGIS Engine来开发相关功能,我们一定要对开发的对象以及相关的功能有深入的了解,我们不妨现在桌面上将相关的帮助和功能做操作,将对象的特点多分析,这样我们在进行二次开发不会出现相关问题,即使出现问题也会很容易的去分析问题和解决问题。



推荐阅读
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • qt学习(六)数据库注册用户的实现方法
    本文介绍了在qt学习中实现数据库注册用户的方法,包括登录按钮按下后出现注册页面、账号可用性判断、密码格式判断、邮箱格式判断等步骤。具体实现过程包括UI设计、数据库的创建和各个模块调用数据内容。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了adg架构设置在企业数据治理中的应用。随着信息技术的发展,企业IT系统的快速发展使得数据成为企业业务增长的新动力,但同时也带来了数据冗余、数据难发现、效率低下、资源消耗等问题。本文讨论了企业面临的几类尖锐问题,并提出了解决方案,包括确保库表结构与系统测试版本一致、避免数据冗余、快速定位问题等。此外,本文还探讨了adg架构在大版本升级、上云服务和微服务治理方面的应用。通过本文的介绍,读者可以了解到adg架构设置的重要性及其在企业数据治理中的应用。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
author-avatar
想飞的糊涂虫
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有