最近在修改项目时发现有些提取的坡度数据在参与了下一步计算后会出错,仔细跟了代码之后发现AE生成的坡度数据和其他一些分析后的栅格都被存储为.adf文件。说起惭愧,并不了解这是什么数据,由于下层算法使用GDAL,这里脑抽了一下先想到把这个数据转成tif或者img数据再参与计算。(当然开始以为GDAL不支持这种数据)开始用AE,但是包括官方代码都有点问题,考虑到实现这个小功能AE创建了一大堆对象觉得不太舒服,决定自己写了。

先查了下,这个数据是ESRI早期的一种二进制Grid数据,其文件结构大约如图:

当然在得知GDAL可以处理这个种数据后,还是出于好奇去写了一个转换工具,其他的处理流程都是差不多的,但是在测试里发现,不论给文件夹地址还是给hdr.adf地址GDAL都能读取出来内容。但是,不清楚什么原因,在遍历像元时我完全不能获取到有效的像元值。猜测在项目里偶尔出现的抛错也是因为读取不到有效值造成的吧。

于是开始查阅资料,想了解这个数据结构。

这里翻到一个老外的博客,做了很详细的调查。【by Frank Warmerdam (warmerdam@pobox.com)】

The Arc/Info Binary Grid format is the internal working format of the Arc/Info Grid product. It is also usable and creatable within the spatial analyst component of ArcView. It is a tiled (blocked) format with run length compression capable of holding raster data of up to 4 byte integers or 4 byte floating data.

在他的博客中特意提醒,这个格式不能和ESRI的ASCII Grid格式混淆。后者是一种GRID交换格式。两种格式可以互转,在ArcInfo中使用【GRIDASCII】、【ASCIIGRID】命令即可(不清楚在ArcGIS Desktop里是否还保留了)。

另外,ESRI BIL格式也与此不同。

文件内容说明:

文件名 用途
dblbnd.adf 存储四至信息(LLX、LLY、URX、 URY)
hdr.adf 头文件,存储数据的大小信息、切片信息等
sta.adf 存储数据的统计分析信息如最大最小值、均值和标准差等
vat.adf 存储数据的属性表信息
w001001.adf 该文件用于存储真实的栅格数据(DataValues)
w001001x.adf 空间索引文件
prj.adf ESRI标准的投影信息文件

剩下的内容等继续研究后追加。

【GIS数据格式】ArcInfo Binary Grid Format的更多相关文章

  1. GIS数据格式:Coverage

    转自:http://www.cnblogs.com/w2william/archive/2009/10/15/1583954.html 我之前做了一个模块,基本实现了ArcCatalog中左边树状结构 ...

  2. GIS数据格式:Shapefile

    转自:http://lab.osgeo.cn/2449.html Shapefile是ESRI提出的数据格式,随着ArcView GIS 3.x发布,属于简单要素类.Shapefile由于其数据结构简 ...

  3. GIS数据格式:Geodatabase

    转自:http://www.cnblogs.com/quansixiang/archive/2010/09/17/1829286.html 1  Geodatabase概念 Geodatabase是A ...

  4. 更小的GIS数据格式-Geobuf

    背景 我们经常遇到直接传输gis数据到前端展示的时候,有时候数据量一稍微多点,传输速度就减慢,因为我们用于传输的json格式比较大. Geobuf介绍 Geobuf是一种用于地理数据的紧凑二进制编码. ...

  5. gis数据格式转换(数据导入)ConvertFeaCls

    本文主要对数据导入等里 常用的不同格式数据创建.转换等 进行代码示例.主要用到IFeatureDataConverter.ConvertFeatureClass方法. 代码如下,难度不大,只是个技巧问 ...

  6. GIS数据格式topojson

    Topojson源自于GeoJson,是D3中描述地理数据的格式,D3的作者觉得GeoJson太繁琐.同样的数据,TopoJson是GeoJson的1/5. 这里有一个转换TopoJson,GeoJs ...

  7. [MySQL复制异常]'Cannot execute statement: impossible to write to binary log since statement is in row format and BINLOG_FORMAT = STATEMENT.'

    MySQL复制错误]Last_Errno: 1666 Last_Error: Error executing row event: 'Cannot execute statement: imposs ...

  8. 开源GIS软件初探

    谈到GIS软件,首先让我们想到的便是GIS界的龙头大哥ESRI公司旗下的ArcGIS产品,从最初接触的version 9.2到如今的version 10.1,其发展可谓风生水起.MapInfo软件也不 ...

  9. ArcGIS几种数据格式

    ArcGIS几种数据格式 ArcInfo常用以下格式的数据:shp.Coverage..Raster CAD和Geodatabase.各种数据的组织形式不一样,其中shp.Coverage.Raste ...

随机推荐

  1. Java:CAS(乐观锁)

    本文讲解CAS机制,主要是因为最近准备面试题,发现这个问题在面试中出现的频率非常的高,因此把自己学习过程中的一些理解记录下来,希望能对大家也有帮助. 什么是悲观锁.乐观锁?在java语言里,总有一些名 ...

  2. java_第一年_JavaWeb(12)

    SimpleTag标签 定义了五个方法:setJspContext.setJspBody.setParent和getParent以及最重要的doTag方法(完成了所有的业务逻辑): setJspCon ...

  3. c++ const 修饰变量位置含义

    c++ const 修饰变量位置含义 const 修饰成员变量 const修饰指针变量时: 只有一个const,如果const位于*左侧,表示指针所指数据是常量,也就是指向常量的指针,不能通过解引用修 ...

  4. [BZOJ4182]Shopping (点分治+树上多重背包+单调队列优化)

    [BZOJ4182]Shopping (点分治+树上多重背包+单调队列优化) 题面 马上就是小苗的生日了,为了给小苗准备礼物,小葱兴冲冲地来到了商店街.商店街有n个商店,并且它们之间的道路构成了一颗树 ...

  5. python 迭代器和生成器的区别

    迭代器(iterator)是一个实现了迭代器协议的对象,python的一些内置数据类型(列表,数组,字符串,字典等)都可以通过for语句进行迭代,我们也可以自己创建一个容器,实现了迭代器协议,可以通过 ...

  6. Xilinx源语-------FDRE

    1.源语---FDRE FDRE代表一个单D型触发器,含的有五个信号分别为:  数据(data,D).时钟使能(Clock enable,CE).时钟(Clock).同步复位(synchronous ...

  7. menustrip

    在对应菜单上点击鼠标右键,插入,SEPARATOR 就可以了,然后可以选中拖动位置.

  8. ES基本原理

    Elasticsearch是基于一款高性能的.可扩展的信息检索工具库Lucene构建的强大的搜索引擎,在很多情况,它也被作为NoSql数据库并取得了很好的效果,下面介绍下ES的基本概念,映射到数据库的 ...

  9. ArrayUtils工具类更加方便的操作数据

    不废话,上代码: package com.jxd; import org.apache.commons.lang3.ArrayUtils; public class TestArr { /** * A ...

  10. nginx 重写

    rewrite指令可在 server 块或者 location 块中配置. 语法: rewrite regex replacement [flag]; 1.rewrite 接收的 uri 不包含 ho ...