查看: 2462|回复: 9

如何使用osgdb_gdal插件读取geotif影像?

[复制链接]

该用户从未签到

发表于 2013-4-7 10:09:50 | 显示全部楼层 |阅读模式
我想通过osg读取两幅geotif格式的影像(每张2.4G),我发现osg默认寻找插件的方式是通过文件后缀,即根据tif后缀找到osgdb_tiff插件,但是osgdb_tiff插件无法读取影像,想通过gdal去读取,请问在osg中如何控制利用gdal去读取影像?是在Registry中进行设置吗?谢谢!

该用户从未签到

发表于 2013-4-7 10:14:22 | 显示全部楼层
addFileExtensionAlias

该用户从未签到

发表于 2013-4-7 11:50:44 | 显示全部楼层
可以以这样:osgDB::ReaderWriter* rw = osgDB::Registry::instance()->getReaderWriterForExtension("gdal");
用ReaderWriter去读。

该用户从未签到

 楼主| 发表于 2013-4-7 12:05:38 | 显示全部楼层
liuzhiyu123 发表于 2013-4-7 10:14
addFileExtensionAlias

您好,我在Registry.cpp中将“addFileExtensionAlias("tif",  "tiff");”改成了“addFileExtensionAlias("tif",  "gdal");”,也就是当发现tif文件时强制调用osgdb_gdal插件去读取,但是在loadLibrary时会失败,其中osgdb_gdal.dll的路径是正确的,dll本身也是存在的,但是语句:
handle = getLibraryHandle( fullLibraryName );
获取的handle为空,不知道为什么,请指教,谢谢

该用户从未签到

发表于 2013-4-7 13:32:55 | 显示全部楼层
1、用gdal插件可以直接使用伪插件的形式,即readImageFile("xxx.tif.gdal")
2、您这图片太大了不可能作为一张纹理读入进来,您需要用VPB这样的工具对它进行切分

该用户从未签到

 楼主| 发表于 2013-4-7 16:07:35 | 显示全部楼层
array 发表于 2013-4-7 13:32
1、用gdal插件可以直接使用伪插件的形式,即readImageFile("xxx.tif.gdal")
2、您这图片太大了不可能作为一 ...

王老师能不能帮我解释下上边提到的问题,我跟了下代码,loadlibrary后无法获取osgdb_gdal.dll,不知道是什么原因

该用户从未签到

 楼主| 发表于 2013-4-7 16:09:11 | 显示全部楼层
CWorld 发表于 2013-4-7 11:50
可以以这样:osgDB::ReaderWriter* rw = osgDB::Registry::instance()->getReaderWriterForExtension("gdal ...

您好,您提到的方法我也试了,同样会碰到插件加载失败的问题,插件本身存在,路径参数也是正确的,但不知为什么loadlibrary后的返回值为NOT_LOADED,请指教,谢谢

该用户从未签到

发表于 2013-4-7 16:14:10 | 显示全部楼层
仔细检查吧

该用户从未签到

发表于 2013-4-12 09:35:24 | 显示全部楼层
1、osgdb_gdal.dll是否真的存在
2、是否gdal18.dll(或者别的版本)也存在于当前目录中

该用户从未签到

 楼主| 发表于 2013-4-17 10:59:16 | 显示全部楼层
array 发表于 2013-4-12 09:35
1、osgdb_gdal.dll是否真的存在
2、是否gdal18.dll(或者别的版本)也存在于当前目录中

谢谢王老师,确实是gdal动态库的问题,之前改回gdal17版本忘记了,加进目录就好了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表