GDAL 瓦片切割,怎么建立内存缓冲

duboway 发布于 2013/05/25 15:31
阅读 1K+
收藏 0

@地瓜头 你好,想跟你请教个问题:我最近也在用GDAL进行切割GTiff图片,大小应该在3G左右的,每次都读写IO实在是有点慢,我想把数据全部都读到内存,但是GDAL不支持直接将数据读入内存,必须先将数据缓冲一下,然后才能写入内存,正在纠结中,看到了你的帖子说你建立了内存缓冲,能给我说一下么,谢谢了,要是有代码资料什么的不胜感激,duboway@163.com

加载中
0
地瓜儿
地瓜儿
读取的时候,直接就可以采样啊,RasterIO的那几个参数设置一下就好了,可以采用分块读取,不知道你的切割时根据矢量图截取的,还是自己设置范围截取,不管怎样,你目前需要就是效率,想要效率的话,可以采用分块读取,创建金字塔,多波段读取即可(这些方法网上都有,最好是研究下GDAL的gdalwarp.cpp文件),内存开辟为1G左右效率最好,这个是我自己测试得到的结论,仅供参考!
0
d
duboway
我的是自己设置的截取范围,每次都是矩形区域,我的想法是读取一块数据,放到缓冲区buffer,然后建立一个MEM类型的数据集,将buffer数据写入到MEM数据集里面,然后每次对这个MEM数据集进行操作,就不用每次都进行IO了,但是MEM数据集的大小和buffer是一样的,要是读取1G的图片,就会在某个瞬间同时需要2G的空间,不知道有没有直接将数据读入内存的方法(我还没找到),我现在只用到了RasterIO,Create,createCopy着几个函数,弱弱的问一下,gdalwrap.cpp这个文件主要是干什么的??
返回顶部
顶部