ArcGIS中读取.bil文件 | 菩提老王的葡萄架 舞台葡萄架
Posted by 菩提老王 on 2012/12/21 Leave a comment (0) Go to comments
客户现有一应用程序可读取.bil栅格文件作为高程背景显示,如下图:
数据文件有:demo.bil文件(2,077,616字节),index文件(74字节),projection文件(58字节)。现需要转入ArcGIS平台来进行显示,查看帮助,ArcGIS对.bip栅格格式有原生支持。但在ArcMap中加载该文件时,确报错无法打开。
查看ArcGIS关于.bil格式的帮助说明,得知.bil是一种未经过压缩的二进制文件。存储格式如下图:
是按行依次存储每个波段每列像元信息的。要在ArcGIS中显示,必须有一个.hdr头文件描述其所需的一些元数据信息才行。而拿到的数据中并没有这个.hdr文件,所以要构造出该文件。查看.hdr文件的说明,是以文本方式记录了该栅格文件的行、列数,每个像元值所占的大小等内容。而原来的应用程序之所以能够读取该图像,也离不开这些信息。用记事本打开index文件,内容如下:
demo.bil 641890.000000 656130.000000 3251870.000000 3281050.000000 20.000000
乍一看并没有.hdr文件中所需的信息,但能看出上述的5个数字分别代表了.bil文件空间范围和空间分辨率。由此我们来推导.hdr文件所需的元数据信息:
NROWS:栅格文件的行数,(3281050-3251870)/20=1459;
NCOLS:栅格文件的列数,(656130-641890)/20=712;
NBANDS和NBITS:分别代表栅格文件的波段数和存储一个波段中每个像元值所需的比特数(pixel depth),index文件中并没有这两个信息。但.bil文件是未经过压缩的,所以我们用.bil文件的大小除以行数再除以列数,2077616/1459/712=2,得知每个像元位置上所有波段值共占2个字节(16bit)空间。理论上可以是NBANDS等于1,NBITS等于2×8=16,也可以是NBANDS等于2,NBITS=8。但我们知道逻辑上此图记录的是高程信息,相当于dem,所以应该只有一个波段,由此得知NBANDS=1,NBITS=16;
PIXELTYPE:由于是高程信息,所以pixel value都是正值,因此此处是UNSIGNEDINT;
BYTEORDER:存储每个像元值字节的排列顺序。可以由高位到低位的M,也可以是由低位到高位的I。结合原程序代码,得知此处是M。
由此创建的.hdr文件如下:
有了正确的.hdr文件后,就可以在ArcMap中直接加载了(projection文件用于设置正确的投影信息):
感谢@红毛小屁孩的指导帮助,比帮助文件好用得多。
更多阅读
002须菩提祖师他究竟是谁? 菩提祖师和如来的关系
我们先来看历史上真实的须菩提,然后再来说《西游记》中的须菩提祖师。真实的须菩提因为一部佛教经典而非常有名,这部经典就是《金刚经》。《金刚经》的主要内容,就在释迦牟尼和须菩提的一问一答中进行的。须菩提是释迦牟尼的十大弟子
老王卖鞋的故事——到底亏了多少? 老王的故事
这道题引发了争论。大辩论带来大变化嘛。说说我的解答。先说题干:老王卖鞋,一双进价30元,老王赔本卖,只卖20元。有个骗子来买,给老王50元假钞。老王未能识别,又没有零钱,把这假钞拿到隔壁铺子换了50元零钱,回来找了骗子30。隔壁很快发现问
深入jar包:从jar包中读取资源文件
我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等)。在单独运行的时候这些简单的处理当然不会有问题。但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了。看看下面的代码:Java代码
孙悟空的师傅菩提老祖和如来谁更厉害 孙悟空和菩提老祖
揭开菩提祖师身世之谜 (算半个原创吧)想知道菩提祖师的身世吗?别急,待我慢慢说来。一.《西游记》和《封神演义》联系密切提起明朝著作《西游记》和《封神演义》,我想你一定不会陌生。从两部作品中派生出来的《孙悟空大闹天宫》、《哪吒闹
转载:孙悟空师傅菩提祖师的真实身份是什么?
孙悟空师傅菩提祖师的真实身份是什么?《西游记》提及传授孙悟空本领的师父菩提祖师,此人名为菩提,(佛界名称)身着道服(还开了个道场)似佛非佛,似道却又通佛,在电视中并没有诸多说名其中身份和本领的描述。细细读西游,不免心中一直有个疑问,大圣