精华内容
下载资源
问答
  • ArcGIS功能异常强大,支持多种常见的栅格数据格式,并可实现多个栅格格式的自由转换。 在ArcGIS中,常见的栅格数据格式有:TIFF、BMP、ENVI、Esri BIL、Esri BIP、Esri BSQ、GIF、GRID、IMAGINE Image、JP2、JPG、...

    ArcGIS功能异常强大,支持多种常见的栅格数据格式,并可实现多个栅格格式的自由转换。

    在ArcGIS中,常见的栅格数据格式有:TIFFBMPENVIEsri BILEsri BIPEsri BSQGIFGRIDIMAGINE ImageJP2JPG、和PNG

    • BIL —Esri 波段按行交叉格式文件
    • BIP —Esri 波段按像素交叉格式文件
    • BMP —Microsoft 位图图形栅格数据集格式
    • BSQ —Esri 波段顺序文件
    • CRF —云栅格格式
    • ENVI DAT —ENVI DAT 文件
    • GIF —栅格数据集的图形交换格式
    • GRID —Esri 格网栅格数据集格式
    • IMAGINE Image —ERDAS IMAGINE 栅格数据格式
    • JP2000 —JPEG 2000 栅格数据集格式
    • JPEG —联合图像专家组栅格数据集格式
    • MRF —元栅格格式
    • PNG —可移植网络图形栅格数据集格式
    • TIFF —栅格数据集的标记图像文件格式

    然而,很多GISer并不会是对以上格式很明白,导致在使用栅格数据的时候出现这样那样的错误,本文就ArcGIS支持的栅格格式及其互相转换做一详细说明。


    一、ArcGIS栅格数据格式详解

    1. Esri Grid格式

    格网是 Esri 栅格数据的原生存储格式。通常包含以下两种类型的格网:整型和浮点型。整型格网多用于表示离散数据,浮点型格网则多用于表示连续数据。

    在这里插入图片描述

    浮点型格网没有 VAT,因为格网中的像元可以是给定范围的任意值。此格网类型中的像元不能整齐地落在各个离散类别中。像元值用于描述其所在位置的属性。例如,在使用米作为单位的表示高程的高程数据格网中,像元值 10.1662 代表其所在位置高于海平面大约10米。

    可存储为格网值的数据值的范围如下:

    • 浮点型格网可存储值的范围为 -3.4 x 1038 至 3.4 x 1038。
    • 整型格网可存储值的范围为 -2147483648 至 2147483647(-231 至 231-1)。

    对于整型格网,此信息仅适用于 VALUE 项。整型格网可将其他 INFO 项添加到值范围取决于该项定义的 VAT。

    格网的坐标系与其他地理数据的坐标系相同。行和列分别与坐标系的 x 和 y 轴平行。由于格网中的每个像元都与其他像元具有相同的尺寸,因此通过行和列可轻松地确定任意像元的位置和其所覆盖的区域。这样,格网的坐标系就可由像元大小、行和列的数目,以及左上角的 x,y 坐标定义。格网也可传递其他信息,例如与格网相关联的坐标系。

    格网数据结构

    格网由分块栅格数据结构实现,其中数据存储的基本单位为矩形像元块。块以压缩形式和长度可变的文件结构(也称为分块)存储在磁盘上。每个块都作为一个长度可变的记录来存储。

    格网分块的大小基于创建时格网的行数和列数。分块大小的上限由应用程序设置,并且非常大(当前设置为 4,000,000 x 4,000,000 像元)。因此,GIS 应用程序使用的多数格网会自动存储在单个分块中。如果创建时格网的大小大于分块大小的上限,则格网的空间数据会跨多个分块自动分割。

    格网的分块存储结构支持对较大栅格数据集进行顺序和随机的空间访问。分块结构不会限制格网的联合分析。不同格网的分块和块也不必为了联合分析而在地图空间中重合。格网的分块和块对用户完全隐藏,用户始终将格网作为统一方形像元的无缝栅格来进行创建和操作。

    格网使用游程栅格压缩方案,其在块级别上可自适应。测试每个块以确定将为块使用的深度(位/像元),并确定更为有效的存储技术(按像元或已编码的游程)。以需要较少磁盘空间的格式存储块。自适应压缩方案是最佳选择,因为在使用这两种数据类型支持联合分析时,其能够有效地表示同类分类数据和异类连续数据。单一图层每个像元的操作(例如数据重分类)无需解压缩即可直接运行数据。对压缩输入图层进行的多图层每个像元操作使不同图层的数据运行相交,并对相交的运行进行操作。单个图层每个邻域操作以及将压缩数据与未压缩数据混合在一起的多图层每个像元操作,都将运行扩展到像元,并以透明的方式执行传统的按像元处理。

    在这里插入图片描述

    格网的分块-块结构对访问格网中的空间数据的任何应用程序都是透明的。通过设置地图坐标中定义的矩形窗口,操纵格网的程序可访问空间数据。

    格网数据存储

    格网存储在 ArcInfo 工作空间中。与 coverage 相似,格网以独立的目录形式存储,并带有包含特定格网信息的关联表和文件。在整型格网目录(通常由 ArcInfo Workstation 创建)中,可找到以下表和文件:BND 表,存储格网的边界;HDR 文件,存储用于描述格网的特定信息,例如像元分辨率和分块系数;STA 表,包含格网的统计数据;VAT 表,存储与格网区域关联的属性数据;日志文件 (LOG),监听格网上所发生的活动;以及分块文件 w001001.adf (q0x1y1),存储像元数据和随附的索引文件 w001001x.adf (q0x1y1x),该索引文件可为分块和 LOG 中的块建立索引。(如果使用 ArcGIS 运算符进行创建,则有些文件(例如日志文件)可能不存在。)

    在这里插入图片描述

    如果更改格网,则文件和表中所包含的值和信息会立即更新。INFO 表中所包含的信息允许用户访问,并提供了有关格网的信息。

    BND 表

    格网 BND 包含格网的边界。边界是包含格网像元的矩形;其存储在地图坐标中。所有格网 BND 都以双精度存储。
    BND 表中的最小坐标为格网中左下角像元的左下角坐标。最大坐标为格网中右上像元的右上角的坐标。

    HDR 文件

    HDR 是二进制文件。存储在文件中的信息包括像元大小、格网的类型(整型或浮点型)、压缩技术、分块系数和分块信息。

    STA 表

    STA 表是包含格网统计数据的 INFO 表。格网的最小值、最大值、平均值和标准差以浮点值的形式存储在 STA 表中。您不得尝试直接更改这些值。
    因为 NoData 表示未知值,所以 NoData 不能用于计算 STA 表中的统计数据。
    创建二值格网(仅包含 0 和 1 值)时,STA 表的平均值会包含值 0,标准差会包含值 -1。标准差值 -1 表示未对格网进行统计计算。
    标准差值 -2 表示格网仅包含 NoData 像元。

    VAT 表

    VAT 是存储与格网区域关联的属性的 INFO 表。只有整型格网才具有与其关联的 VAT。每个 VAT 至少包含两项 - VALUE 和 COUNT。VALUE 项包含用于区分格网中各位置特征的整数值。被分配给相同值的所有像元都包含相同的特征,因此属于相同的区域。COUNT 是区域中像元的数量。
    可将新项添加到 VAT。不得更改 VALUE 和 COUNT 项,而且 VAT 必须存储在 VALUE 项上。VALUE 或 COUNT 前面永远不能添加新项。
    在 VAT 中不表示包含 NoData 的像元。

    以下是 VAT 的示例:

    在这里插入图片描述
    分块文件

    w001001.adf (q0x1y1) 和 w001001x.adf (q0x1y1x) 文件可存储格网中第一个或基础分块的数据和索引。分块大小的上限很大,并且多数格网都使用单个分块进行存储。如果使用其他分块,它们会根据其与第一个分块的空间关系自动编号。分块可以长度可变的二进制文件的形式实现。对于 ARC/INFO 7.x 以前的版本,这些文件被命名为 q0x1y1 和 q0x1y1x,并且仍与当前软件结合使用。

    LOG 文件

    LOG 文件是包含有关创建和更改格网的信息的 ASCII 文件。LOG 可监听对格网执行的操作,但是不包含对格网执行的每项操作。由于所有 Grid 功能都会形成新的格网,因此只有 Grid 命令(例如 RENAME 和 COPY)可更改现有格网并输入到 LOG 文件中。与所有 ASCII 文件相同,LOG 文件可通过系统命令或任意文本编辑器进行访问。

    存储限制

    格网的名称有如下限制:

    • 存储时不得使用空格。
    • 不得以数字开头。
    • 不得长于 13 个字符(多波段格网最多可为 9 个字符)。

    堆栈

    堆栈由一组按顺序排列的空间叠置格网(图层)组成,在多元分析中被视为单一实体。聚类分析、分类和主成分分析均可作用于堆栈中的图层。

    在这里插入图片描述
    堆栈具有以下特征:

    • 每个图层对应于一个格网的一组图层
    • 地图范围或 BND
    • 像元大小
    • 数据类型
    • 投影

    堆栈中指定的每个图层都有一个用于指示其在堆栈中的顺序的索引号。组成堆栈的格网必须位于相同的工作空间。

    输入图层的边界可完全叠置、部分叠置或根本不叠置,但是只有图层叠置的区域才能构成堆栈。堆栈的 BND 是图层边界相交处。多元分析功能的计算将在叠置区域进行。如果输入图层之间没有公共区域,则堆栈为空,并且不进行任何计算。

    在这里插入图片描述
    堆栈的像元大小默认为堆栈中的粗糙图层。

    可将堆栈中输入格网的数据类型(实数或整数)的任意数字结合起来。然而,应用多元技术之前,应了解这些值表示的含义、分类数据还是连续数据,以及这些值的范围或相对范围。在某些分析中,堆栈的输入数据类型决定输出的数据类型。

    与输入格网关联的投影信息与堆栈一同存储。由于堆栈被视为单一实体,因此堆栈中的所有格网必须位于相同的投影中。投影信息用于确保堆栈的各个格网占据相同的地理区域。

    存储格网堆栈

    与格网或 coverage 类似,堆栈以目录结构形式存储。堆栈目录中有两个文件:外部 INFO STK 表和 ASCII PRJ 文件。组成堆栈的实际格网不存储在堆栈中。它们是工作空间中的普通格网。这意味着,任意格网都可用于多个堆栈中。STK 表可存储格网的名称,这些格网组成堆栈及其对应的索引值:

    在这里插入图片描述
    INDEX 项给出了堆栈中格网的位置,而 GRID 项列出了组成堆栈的格网名称。输入格网的空间数据不在堆栈中复制。因此,堆栈始终反映最新版本的输入格网。STK 文件与任何其他 INFO 文件一样可访问。可添加项(例如存储数据收集日期的项)以用于描述目的,但是不能使用 INFO 更改 INDEX 项中的值或 GRID 项中的名称。对这些项进行的所有操作仅应使用 Grid 中可用的各种堆栈管理命令予以执行。

    PRJ 文件(如果存在)可存储堆栈的投影信息:

    在这里插入图片描述
    如果堆栈中所有输入格网的投影未知,则不创建 PRJ 文件。

    存储格网堆栈名称时不得使用空格,不得以数字开头,并且不得长于 9 个字符。

    格网中的 NoData

    格网中的每个像元都会被分配一个值;但是,系统会在表示该主题的格网上为没有实际值的像元分配 NoData。Nodata 与 0(零)不同;0 是一个有效值。因此,在计算格网的 STA 表中的统计数据时不能使用 NoData 像元。

    当在栅格空间插值的时候,是点生成栅格的过程,如果输出栅格默认为grid格式的话,经常会出现错误,一般情况是由grid格式引起的,因此,在做栅格插值等涉及栅格grid数据的运算时:第一,尽量不要出现中文路径;第二,栅格Grid命名需要注意规则。

    2. TIFF格式

    TIF是TIFF的别称。标签图像文件格式(Tagged Image File Format,简写为TIFF)是一种灵活的位图格式,主要用来存储包括照片和艺术图在内的图像。它最初由Aldus公司与微软公司一起为PostScript打印开发。TIFF与JPEG和PNG一起成为流行的高位彩色图像格式。TIFF格式在业界得到了广泛的支持,如Adobe公司的Photoshop、The GIMP Team的GIMP、Ulead PhotoImpact和Paint Shop Pro等图像处理应用、QuarkXPress和Adobe InDesign这样的桌面印刷和页面排版应用,扫描、传真、文字处理、光学字符识别和其它一些应用等都支持这种格式。

    tif可以有8位,24位,32位甚至更高,又分为有符号,无符号等,对于学遥感和GIS的来说,接触到的tif影像往往是高像素深度的,tif影像中的灰度值可以是几千几万。但jpg,一般是8位,rgb都是0到255取值,所以tif到jpg,意味着色彩的压缩。

    同时,tif可以是多波段的,例如高分一号影像就有红绿蓝近红外四个波段,而jpg只有RGB三个颜色通道,tif转jpg意味着波段信息的丢失。

    3. ENVI格式

    envi标准格式由头文件和包含像元值的二进制文件组成。

    头文件

    包含行列数、数据类型、投影坐标信息、对应二进制文件的存储方式(BSQ、BIL、BIP)等打开图像必需的信息,由ENVI第一次读取数据文件时创建的。后缀名为hdr。

    二进制数据文件

    通用栅格数据都会存储为二进制的字节流,通常它将以BSQ(band sequential,按波段顺序储存)、BIP(band interleaved by pixel,按波段像元交叉储存)或者BlL(band interleaved by line,按波段行交叉储存)的方式进行存储。这个文件可以没有后缀名。

    头文件与数据文件要有相同的文件名,且在同一文件夹下才能被打开。打开数据文件时是按照文件名来搜索头文件的。

    4. IMAGINE Image格式

    ERDAS如果需要打开大于2GB的文件,ERDAS需要把文件转换成IMG格式。这时候,ERDAS自动生成三个文件,分别是IMG、IGE和RRD文件,其中:
    1.IGE:是数据文件,实际用来存储栅格数据;(当影像数据大于2G时就会生成)
    2.IMG:是索引文件;
    3.RRD:是金字塔文件,也是快视图文件;(ArcMap中,如果你Build pyraminds 就会自动存储在rrd文件中。建立了影像金字塔的影像,显示速度会快很多)
    4.AUX:金字塔辅助文件。

    Image影像数据量超过了一定限度就生成.ige(一般大于2G)文件。实际数据在.ige中,
    .img就变成一个连接文件。
    .rrd是金字塔,也就是块视图。
    小于2G的时候文件有两个,一个是RRD金字塔文件,一个是img文件,用来存储栅格数据。
    ERDAS可以打开2GB以上的文件,但是通常的格式,如TIFF等是无法打开大于两G的影响文件的。
    如果需要打开大于2GB的文件需要把文件转换成IMG格式就可以了,
    这时候,ERDAS自动生成三个文件,分别是IMG、IGE和RRD文件,其中的IMG文件就成了索引文件了,RRD还是金字塔文件,而IGE则实际用来存储栅格数据。

    在这里插入图片描述

    5. jp2格式

    在这里插入图片描述

    6. dat格式

    在这里插入图片描述

    二、ArcGIS栅格数据格式转换

    1. 导出数据

    导出数据看似不起眼,却有多种巧妙的用法,比如一个矢量数据不完整或有位置错误时,可以导出一个新的完整的数据,可以实现投影转换,格式转换等等。

    在ArcGIS【内容列表中】选择一个栅格数据→右键→数据→导出数据。

    在这里插入图片描述

    2. 格式转换工具

    ArcGIS提供【栅格转其他格式(批量)】的工具,用来将栅格数据集转为别的栅格格式。

    在这里插入图片描述

    新栅格数据集的格式有:

    • BIL —Esri 波段按行交叉格式文件
    • BIP —Esri 波段按像素交叉格式文件
    • BMP —Microsoft 位图图形栅格数据集格式
    • BSQ —Esri 波段顺序文件
    • CRF —云栅格格式
    • ENVI DAT —ENVI DAT 文件
    • GIF —栅格数据集的图形交换格式
    • GRID —Esri 格网栅格数据集格式
    • IMAGINE Image —ERDAS IMAGINE 栅格数据格式
    • JP2000 —JPEG 2000 栅格数据集格式
    • JPEG —联合图像专家组栅格数据集格式
    • MRF —元栅格格式
    • PNG —可移植网络图形栅格数据集格式
    • TIFF —栅格数据集的标记图像文件格式
    展开全文
  • 在前两天的分享中我们说过矢量数据格式,今天来跟大家说一下栅格数据格式。 栅格数据就是将空间分割成有规律的网格,每一个网格称为一个单元,并在各单元上赋予相应的属性值来表示实体的一种数据形式。空间数据库...

    ​GIS概念中有相当多的数据文件格式,我们经常接触到的数据格式可以大致分为“栅格数据”与“矢量数据”这两类。在前两天的分享中我们说过矢量数据格式,今天来跟大家说一下栅格数据格式。

    栅格数据就是将空间分割成有规律的网格,每一个网格称为一个单元,并在各单元上赋予相应的属性值来表示实体的一种数据形式。空间数据库是对地理栅格数据进行有效管理的一个极为重要的手段。

    GIS系统的栅格数据格式有很多种,其中常用的有.jpg、.png、.tif等。我们在一些工作任务中会利用一些电子地图下载器来获取研究范围内的卫星地图,下载得到的格式就是.jpg或者.png。.tif格式的数据不同之处在于它具有空间地理坐标,我们在TransCAD中通常导入.tif作为底图,进行配准后,再进行路网等交通地理要素的绘制。

     

    栅格结构的特点

    数据直接记录属性的指针或属性本身,而其所在位置则根据行列号转换成相应的坐标给出。也就是说,定位是根据数据在数据集合中的位置得到的。

    点实体由一个栅格像元来表示;

    线实体由一定方向上连接成串的相邻栅格像元表示;

    面实体(区域)由具有相同属性的相邻栅格像元的块集合来表示。

     

    栅格数据组织方式

    栅格结构是用有限的网格逼近某个图形,因此用栅格数据表示的地表是不连续的是近似离散的数据。栅格单元的大小决定了在一个象元所覆盖的面积范围内地理数据的精度 ,网格单元越细栅格数据越精确,但如果太细则数据量太大。尤其按某种规则在象元内提取的值,如对长度、面积等的度量,主成分值、均值的求算等,其精度由象元的大小直接决定。由于栅格结构中每个代码明确地代表了实体的属性或属性值,点实体在栅格结构中表示为一个象元,线实体表示为具有方向性的若干连续相邻象元的集合,面实体由聚集在一起的相邻象元表示,这就决定了网格行列阵列易为计算机存储、操作、显示与维护,因此,这种示意图结构易于实现,算法简单,易于扩充、修改,直观性强,特别是容易与遥感影像的联合处理。

     

    栅格数据单元大小

    栅格所表示的内容的详细程度(要素现象)通常取决于栅格的单元(像素)大小或空间分辨率。

    1. 单元必须足够小,这样才可以捕获到所需的详细信息;

    2. 而单元又必须足够大,这样才可以提高计算机存储和分析的执行效率。

    栅格可以使用更小的单元大小在要素的范围内表示更多的要素、更小的要素或更详细的内容。不过,更多通常未必更好。单元大小如果较小,则在表示整个表面时会造成栅格数据集较大;因此,会需要更大的储存空间,而且通常会使处理时间更长。

    空间分辨率与比例

     空间分辨率是指单元大小所表示的在地面上覆盖面积的尺寸。因此,如果一个单元的覆盖面积为 5 x 5 米,则分辨率为 5 米。栅格的分辨率越高,单元大小越小,从而详细程度便越高。这和比例相反。比例越小,显示的细节越少。例如,以比例1:2,000 显示的正射影像(呈放大样式)会比以比例 1:24,000 显示的(呈缩小样式)影像更加详细。但是,如果此相同正射影像的单元大小为5 米,则不管以什么比例来显示,相应的分辨率将始终保持不变,因为实际的单元大小(在地面上覆盖的并由一个单独的单元表示的面积)并未发生改变。

    在下方,左侧影像中所使用的数据的空间分辨率比右侧影像的低。这表示左侧影像中数据的单元大小比右侧影像数据的大,但其中显示的比例却相同。

    获取途径

    ⑴ 栅格法:在待输入的图形上均匀划分栅格单元,逐个栅格地决定其属性代码,最后形成栅格数字地图文件。这是人工编码,当数据量太大时,该法费工费时,工作量相当大。

    转换法:用手扶跟踪数字化或自动跟踪数字化得到矢量结构数据,再转换为栅格结构。栅格数据

    由矢量数据向栅格数据转换是理想的方法。

    扫描数字化:逐点扫描待输入的专题地图,对扫描数据重新采样与再编码,从而得到栅格数据文件。

    ⑷ 分类影像输入:将经过分类解译的遥感影像数据直接或重新采样后输入系统,这是高效获取数据的方法。

     

    编码方法

    在栅格文件中,每个栅格只能赋予一个唯一的属性值,所以属性个数的总数是栅格文件的行数乘以列数的积,而为了保证精度,栅格单元分得一般都很小,这样需要存储的数据量就相当大了。通常一个栅格文件的栅格单元数以万计。但许多栅格单元与相邻的栅格单元都具有相同的值,因此使用了各式各样的数据编码技术与压缩编码技术。主要的编码技术有:直接栅格编码、链式编码弗里曼链码或世界链码)、游程编码、块式编码四叉树数据结构八叉树与十六叉树结构

    栅格数据优势

    1. 数据结构更加简单,即由像元组成矩阵结构,其中的像元值表示坐标,有时与属性表相关联;

    2. 格式更加强大,高级的空间和统计分析较容易实现;

    3. 表示连续表面以及执行表面分析;

    4. 点、线、面和表面都可同样存储;

    5. 对复杂数据集也可执行快速叠置;

    6. 有利于遥感数据的匹配应用和分析;

    栅格数据不足

    1. 由于栅格数据集的像元尺寸具有局限性,所以可能会带来空间误差;

    2. 栅格数据集可能会非常大,冗余度较高,需要压缩处理。虽然分辨率会随着栅格像元大小的减小而提高,但这会占用更多的磁盘空间,而且会拖慢处理速度。对于给定区域,将栅格像元大小更改为现有大小的一半时,所需的存储空间会增大为原来的四倍,具体情况取决于所使用的数据类型和存储技术;

    3. 将数据重建到固定间距的栅格像元边界时也会损失一定的精度;

    4. 定位精度比矢量低,拓扑关系难以表达;

    ---------------The End---------------

     

    微信关注  奔跑的GISer  获取更多GIS学习资源

     

    展开全文
  • 常用GIS数据格式

    千次阅读 2013-12-09 20:07:13
    GIS数据不仅表达空间实体(真实体或者虚拟实体)的位置和几何形状,同时也记录空间实体对应的属性,这就决定了GIS数据源包含有图形数据(又称空间数据)和属性数据两部分。...比较常用的GIS数据格式有: Mapifo(*.TA
    

    GIS数据不仅表达空间实体(真实体或者虚拟实体)的位置和几何形状,同时也记录空间实体对应的属性,这就决定了GIS数据源包含有图形数据(又称空间数据)和属性数据两部分。图形数据又可以分为栅格格式和矢量格式两类。传统的GIS一般将属性数据放在关系数据库中,而将图形数据存放在专门的图形文件中。不同的GIS软件采取不同的文件存储格式。

     

    比较常用的GIS数据格式有:

    Mapifo(*.TAB)数据格式,

    Mapinfo(*.MIF)数据格式,

    AutoCAD(*.DWG,*.DXF)数据格式,

    ESRI Shap(*.SHP)数据格式,

    ESRI Exorpt(*.EOD)数据格式,

    ESRICoverage(*.ADF)数据格式,

    ESRI Geodatabase(ArcSDE)数据格式,

    ESRI Geodatabase(MDB)数据格式,

    Microstation Design(*.DGN,*.FC1,*.POS)数据格式,

    现在GML也正越来越广泛的用来存储GIS数据。

     

    美国国家空间数据协会(NSDI)制定了统一的空间数据格式规范SDTS(Spatial Data Transformation Standard),包括几何坐标、投影、拓扑关系、属性数据、数据字典,也包括栅格格式和矢量格式等不同的空间数据格式的转换标准。许多软件利用SDTS提供了标准的空间数据交换格式。







    Shapefile:一种基于文件方式存储GIS数据的文件格式。至少由.shp,.dbf,.shx三个文件作成,分别存储空间,属性和前两者之间的关系,是GIS中比较通用的一种数据格式;

           Coverage:一种拓扑结构,一般的GIS书都有它的介绍。属性缺省存储在Info表中,目前ArcGis的一些分析操作基于这种数据格式;


          Geodatabase:一种基于RDBMS存储的数据格式。有两大类:1.Personal Geodatabase用于存储小数量数据。存储在acess的mdb格式中;2 ArcSDE Geodatabase 存储大型数据,存储在大型数据库中的Oracle,Sql Server,DB2等,可以实现并发操作,不过需要单独的用户许可。  


    
    展开全文
  • 栅格数据处理

    千次阅读 2019-01-10 04:28:11
    栅格数据处理工具及方法推荐1.前言2.软件安装和环境配置2.1 andconda安装2.2 安装栅格数据处理库3.数据准备3.1 landsat数据批量下载工具3.2 modis数据批量下载工具3.3 下载数据 1.前言 最近受好友之邀写一些地理...

    1.前言

    最近受好友之邀写一些地理数据处理的内容,虽然觉得水平有限不想误人子弟,奈何抵不住好友的柔情攻势,只能尽可以把自己觉得有用的东西写下来,希望能帮到需要的人。因为矢量数据
    和栅格数据存储
    方式差异较大,用到的处理工具也有所不同,因此笔者打算分两篇写,这篇文章的主要内容是栅格数据的处理。

    2.软件安装和环境配置

    鉴于windows系统较多,因此本教程以wiondows系统为例展开说明,在其它系统中操作有任何疑问都可以联系作者。

    2.1 andconda安装

    ps : 虽然这是一个初级教程,但也需要一定的基础知识储备,包括python基础、GIS基础、程序设计基础,
    当然用到的都是一些很简单的知识,没有也不影响大家学习和使用

    Anaconda是一个开源的Python发行版本,使用它的主要原因是它的包管理器非常好用。像下面用到的这些库如果用pip安装能把你折腾到怀疑人生。

    下载地址:

    安装方式并没有什么特别的,一直点下一步就行了(记住安装目录)。
    安装完成后修改condal镜像,因为我发现默认的镜像有很多包都没有。国内比较优秀的镜像有清华镜像、阿里镜像、华为镜像等,我们修改成清华镜像,这个它包含我们要用的所有包,其它镜像我没测试过。具体操作是在命令行依次执行:

    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
    conda config --set show_channel_urls yes
    
    2.2 安装栅格数据处理库
    • gdal
    • rasterio

    安装方式:

    打开命令行(开始->windows系统->命令提示符)输入conda install gdal rasterio
    在这里插入图片描述
    看到这个界面输入y回车等待安装完成。
    ps:如果提示找不到需要的包请检查前面镜像修改是否成功。

    3.数据准备

    说到数据准备再给大家安利一个指批量下载landsat和modis影像的工具。

    3.1 landsat数据批量下载工具

    (1)安装landsat-util

    在命令行执行pip install landsat-util
    如果出现下载错误请参考这篇文章
    在这里插入图片描述
    如果用pip安装失败只能从源码安装了,虽然conda很好用,但它的包目前还是没法和pip比(不得不说pip真的很坑,反正我用pip没有安装成功)。

    • 首先,从github下载源码,需要用到git工具,git安装命令conda install git,安装完成用在命令行执行git clone https://github.com/developmentseed/landsat-util.git下载landsat-util源码。
    • 其次,编译安装,依次执行以下命令:
      cd landsat-util
      python setup.py install
      
      安装完成后在命令行输入landsat -h,如果没有报错那么万事大吉,已经安装成功了,如果提示缺少什么包,那么很遗憾,你还需要继续安装依赖包。
    • 最后,安装依赖,landsat-util依赖的包比较多,需要依次安装,以下是我在操作过程中需要安装的包
      1. six:安装命令conda install six

      2. usgs:usgs在conda和pip都找不到,需要从源码安装,具体如下:

        git clone https://github.com/kapadia/usgs.git
        cd usgs
        python setup.py install
        
      3. future:pip install future

      4. humanize:conda install humanize
        如何知道缺少什么依赖包呢,那就是不停的执行landsat -h它会提示你缺少哪个包,比如我执行landsat -h后出现
        在这里插入图片描述
        错误信息提示缺少usgs那么你就要安装usgs,安装后继续执行landsat -h直到没有错误。安装一个包的方式较多,优先考虑使用conda,如果conda找不到使用pip,如果pip也找不到或安装出错,使用源码安装。

        ps:包比较多,安装起来还是比较麻烦的,如果大家能用pip安装最好,它会自动安装所有依赖。

    (2)使用landsat-util检索数据
    常用的有两种方式,行列号和经纬度

    • 按行列号搜索:landsat search --cloud 4 --start "january 1 2014" --end "january 10 2014" -p 009,045
      • –cloud 4指动量小于4%的影像,也可以写成-c 4,如果不指定默认20%。
      • –start "january 1 2014"指搜索的起始时间,–end "january 10 2014"指结束时间
      • -p 009,045指pathwrow,前面的是path后面的是row,关于遥感数据path,row有疑问的请自行查阅相关资料。
      • 更多参数请用landsat -h查看。
    • 按经纬度搜索:landsat search --lat 38.9004204 --lon -77.0237117
      搜索结果是一个json字符串,我们需要的是其中的scenID,下载的时候要用到它。
      在这里插入图片描述
      (3)landsat-util下载数据
      landsat download LC80090452014008LGN00// LC80090452014008LGN00指的是scenID
      landsat download LC80090452014008LGN00 --bands 432//只下载432波段
      landsat download LC80090452014008LGN00 LC80090452015008LGN00    LC80090452013008LGN00//下载多个影像
      
      ps:scenID并非只能用landsat搜索到,也可以USGS网站检索想到的数据,然后复制scenID用landsat下载,landsat是在google镜像下载数据,速度比USGS快。
    3.2 modis数据批量下载工具

    (1)安装pymodis

    • 下载git clone https://github.com/lucadelu/pyModis.git
    • 进行pymodis目录:cd pyModis
    • 安装:python setup.py install
    • 或着pip install pyModis

    (2)使用pymodis下载数据
    pymodis包含 modis_download.py, modis_download_from_list.py,modis_parse.py,modis_multiparse.py, modis_mosaic.py, modis_convert.py,modis_quality.py共7个模块。其作用看名称就可以知道,我就不赘述了。

    #下载数据代码示例
    from pymodis import downmodis
    # destination foldert
    dest = "/tmp"
    # tiles to download
    tiles = "h18v04,h19v04"#条带号
    # starting day
    day = "2014-08-14"
    # number of day to download
    delta = 1
    user='xtfge'
    passwd='ABCabc123'#这是我刚注册的账号,大家可以随便用。
    modisDown = downmodis.downModis(destinationFolder=dest, tiles=tiles, today=day, delta=delta,user=user,password=passwd)
    modisDown.connect()
    modisDown.downloadsAllDay()
    

    或着也可以在命令行下载

    modis_download.py -I -r -t h18v03,h18v04 -f 2008-01-01 -e 2008-01-31 lst_terra
    

    更多内容请在这里下载教程或访问官网
    ps: 不管是下载landsat还是modis数据,可用的工具很多这里抛砖引玉只举了两个例子,想了解更多请自行查阅相关资料。

    3.3 下载数据

    本章的内容是数据准备,叽叽歪歪说了半天我们还一幅影像都没下载呢,比如我们要下载2018年北京市的landsat8影像,按照这个要求我们肯定能搜索到一堆数据,所以对数据的要求再做细化:同一地方只下载云量最少的一景,那么这个代码应该怎么写呢,最笨的方法当然是全部下载下来慢慢挑(手动滑稽),对于以上要求,设计思路应该是这样的:

    • 确定要下载影像的条带号,最笨但最简单的方法是直接查。
      在这里插入图片描述
      从图中可以看到,北京的条带号为path=[130,131,132,133,134],row=[30,31,32,33,34,34]

    • 搜索2018年北京市所有影像
      官网说是可以用landsat search --cloud 4 --start "january 1 2018" --end "December 31 2018" -p 130,30,130,31这样的形式同时搜索多个条带,但我试了下好像不行。因此就只能一个一搜了。别看path,row只有这么几个,但组合起来可就多了因此写个简单和程序生成搜索代码:

      rst='landsat search  --start "january 1 2018" --end "December 31 2018" -p'
      path=[130,131,132,133,134]
      row=[30,31,32,33,34,34]
      fp=open('E://search_code.bat','a')
      for p in path:
         for r in row:
             fp.write("%s %d,%d > E://%d%d.txt\n" % (rst,p,r,p,r))
      fp.write("@echo off\necho 搜索完成,按任意键退出\npause>nul(>nul)\nexit )")
      fp.close()
      

      如果想看刚才生成的代码,在命令行输入notepad E://search_code.bat,或着直接用记事本打开 该文件。
      ps:因为生成的是一个.bat文件,这段代码的执行结果可能被360等杀毒软件拦截,请选择不处理或信任。

      大家可能对就段代码有疑问,对照结果解释一下它的作用
      在这里插入图片描述
      结果的每一行对应一条搜索语句,可能引起疑惑的最后面的类似 >E://13030.tx这样t的代码,它的作用是将搜索结果保存到E://13030.txt这个文件中,至于 fp.write("@echo off\necho 搜索完成,按任意键退出\npause>nul(>nul)\nexit )")这句与搜索无关,大家就不要深究了,不求甚解也是必要的。
      找到刚才生成的search_code.bat文件,右击选择以管理员身份运行。

    • 找到云量最少的影像
      现在在我的E盘有一大堆txt文件,它们存储了北京市2018年所有的landsat影像,我们同一坐标只需要云量最少的一景。其本质就是在每一个txt文件中找到cloud最小的那个影像的sceneID

      import glob,re,json
      filepath='E:'
      ls=glob.glob('%s/*.txt' % filepath)#遍历E盘所有txt文件,建议把文件保存到一个新建的目录中,避免遍历到其它文件
      r=re.compile('.*?({.*}).*?',re.DOTALL)#python正则表达式,感兴趣可以查阅相关资料
      IDs=[]
      for l in ls:
         min_cloud=100
         min_cloud_obj=None
         with open(l) as fp:
             rst=json.loads(r.match(fp.read()).group(1))
             for result in rst['results']:
                 if result['cloud']<min_cloud:
                     min_cloud=result['cloud']
                     min_cloud_obj=result
         IDs.append(min_cloud_obj['sceneID'])
         print(l,min_cloud_obj['cloud'],min_cloud_obj['sceneID'])
      
    • 下载影像
      现在符合条件的影像sceneID已经存储到IDs这个数组中了,直接把IDs的值复制到landsat download后面就行了。

      import os
      download_code='landsat download %s' % " ".join(IDs)
      # os.system(download_code)
      print(download_code)
      

      把结果复制到命令行就可以下载了。

    3.gdal

    关于gdal的作用和强大之处网络上实在太多,这里不再赘述,事物都有双面性,所以我们要用辩证的思想看问题,gdal虽然强大,但也很复杂,它里面的大多数功能我们平时都用不到,所以下面我只介绍3个常用的命令(其实我只会这三个)。

    3.1 gdalinfo

    作用:查看栅格数据的基本信息
    参数:gdalinfo
    用法 gdalinfo filename.tif
    在这里插入图片描述
    结果包含该数据的所有信息,如坐标系、原点、像元大小、元数据、范围,NoData、数据类型等。
    如果要将某个数据的信息保存到文件gdalinfo filename > info.txt

    3.2 gdal_merge

    作用:影像拼接。
    参数:gdal_merge
    这里我偷个懒,关于gdal_merge这篇文章写的很详细,大家可以参考。

    3.3 gdalwarp

    作用:数据投影和变形
    参数:gdalwarp
    用法1:影像裁剪

    //规则切割
    gdalwarp -te xmin,ymin,xmax,ymax input output 
    //不规则切割
    gdalwarp -cutline bound.shp input output
    

    比如我现在有这样的数据:
    在这里插入图片描述我要用这个多边形切割这个dem数据,写法如下:

    gdalwarp -cutline bound.shp fdem.tif newdem.tif
    

    在这里插入图片描述在这里插入图片描述如果要批量切割多个影像,可以新建一个txt文档然后在里面写入gdalwarp语句,比如:
    在这里插入图片描述

    然后把这个文件扩展名修改为.bat,右击这个文件选择以管理员身份运行就可以完成切割了。

    ps:windows系统默认不显示已知文件的扩展名,需要进行设置显示已知文件的扩展名才可以修改txt的扩展名。

    用法2:投影转换

    gdalwarp -s_src srs_def -t_srs srs_def input output
    
    • - s_srs 原数据的坐标
    • -t_srs要转换的坐标系
    • 坐标的定义方式是epsg、proj4或wkt格式(如果对此有疑问请自行查阅相关资料),通常来说我记住某个坐标的EPSG码或proj4内容是不容易,其实也并不需要记忆,因为它们很容易可以查到。如果你熟悉QGIS,那么通过QGIS不论是EPSG还是proj4都可以查到,另外,通过EPSG文件(下载地址)也可以查到。

    比如我们要将newdem.tif的坐标转换为Pseudo-Mercator坐标系(web数据常用的坐标),首先我们要找到原坐标的定义(EPSG或Proj4),上面用gdalinfo看过fdem.tif的信息,知道它的坐标是UTM_Zone_50N(如果没记下翻回去看),所以我们先找到UTM_Zone_50N这个坐标的定义,用任意文本编辑器(记事本)打开前面下载的epsg文件,查找UTM Zone 50N和Pseudo-Mercator
    在这里插入图片描述
    其中椭圆内的是EPSG码,矩形内的是proj4定义。所以投影转换的代码应该写成:

    gdalwarp -s_srs EPSG:23850 -t_srs "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext  +no_defs" newdem.tif projdem.tif
    

    ps:一般情况下-s_srs可以不用定义。
    gdal的功能非常强大,我上面写的还不到九牛一毛,就算是这三个工具,我写的也只是皮毛,如果想进一步了解gdal,网上的学习资料很多。

    4.rasterio

    rasterio是一个栅格数据的读写工具,其本质还是基于gdal写的,但是它的功能比较简单易懂,平时操作栅格数据用就它足够了。

    4.1 打开数据
    import rasterio
    rst=rasterio.open('fdem.tif')
    
    4.2 数据浏览和编辑

    在这里插入图片描述

    4.3更多

    关于rasterio的更多内容大家还是访问官网吧,实在写不动了。

    5.后记

    关于以上内容大家都什么疑问可以通过下载的邮箱联系我,最后给大家安利一个写python的工具Jupyter Notebook,anaconda默认安装,大家可以在开始菜单找到。推荐推荐它的原因在于它可以实时显示代码结果(上图),这对于数据处理是非常有帮助的。

    作者:zhang
    邮箱:xtfge_0915@163.com
    博客:https://blog.csdn.net/xtfge0915

    展开全文
  • 栅格数据结构简单、直观,非常利于计算机操作和处理,是GIS常用的空间基础数据格式
  • 栅格数据与矢量数据

    千次阅读 2018-11-13 00:02:16
    栅格数据与矢量数据
  • 栅格数据文件类型

    千次阅读 2019-08-09 20:06:39
    栅格数据文件类型 .tif文件-存储栅格数据以及包括坐标信息、地理参考系在内的tag,最主要的文件,单独存在可正常读取地理信息 tif.aux.xml文件-栅格统计数据等辅助信息 辅助文件可存储以下内容: (1)、色彩映射...
  • ArcGIS教程 - 10 栅格数据分析

    千次阅读 多人点赞 2020-02-09 10:39:56
    栅格数据是空间分析中另外一种常用数据格式栅格数据具有结构简单、利于计算等优势方便进行空间分析。栅格数据的空间分析是GIS空间分析的重要组成部分,也是ArcGIS空间分析模块的核心内容。相比较矢量数据空间...
  • GIS | 什么是栅格数据

    千次阅读 2018-09-09 19:39:07
    在GIS的应用中最常见的是矢量数据和栅格数据,相比于矢量数据,栅格数据的存储格式简单,处理简单,所以经常使用。但是也存在着数据冗余大的缺点。 栅格数据是由按照行和列组织的像元责成的,每一个像元都包含了...
  • GIS学习之栅格数据

    2019-04-09 17:33:00
    栅格数据用一个规则格网来描述与每一个格网单元位置相对应的空间现象特征的位置和取值。在概念上,空间现象的变化由格网单元值的变化来反映。地理信息系统中许多数据都用栅格格式来表示。栅格数据在许多方面是矢量...
  • 矢量数据和栅格数据

    2012-01-09 09:43:30
    矢量数据和栅格数据 2009年10月17日   1. 矢量数据和栅格数据  矢量数据 Vector Data  在直角坐标系中,用X、Y坐标表示地图图形或地理试题的位置和形状的数据。矢量数据一般通过记录坐标的方式来尽可能将...
  • ArcGIS 栅格数据教程

    2019-07-17 08:40:00
    ArcGIS 栅格数据教程 全部8个教程,带详细操作步骤和原始数据。 技术咨询:向日葵,135_4855_4328,xiexiaokui#139.com ArcGIS 10.5 此教程中的练习将使用样例数据分步指导您构建简单的镶嵌数据集(以及略微...
  • 栅格数据结构 栅格结构是以规则的阵列来表示空间地物或现象分布的数据组织,组织中的每个数据表示地物或现象的非几何属性特征。 栅格结构的显著特点:属性明显,定位隐含,即数据直接记录属性的指针或数据本身,...
  • ArcGIS批量裁剪栅格数据(ArcPy方法)

    千次阅读 2020-12-28 18:10:08
    ArcPy批量计算栅格数据平均值 GLDAS数据下载及处理(NC转TIF) ArcGIS批量裁剪栅格数据 ArcPy批量栅格重采样 文章目录遥感数据处理系列前言一、栅格数据裁剪1. 原理简介2. 代码二、多文件夹场景1. 二级目录2. 三级...
  • ArcGIS批量拼接栅格数据(ArcPy方法)

    千次阅读 2020-12-29 16:56:17
    ArcPy批量计算栅格数据平均值 GLDAS数据下载及处理(NC转TIF) ArcGIS批量裁剪栅格数据 ArcPy批量栅格重采样 ArcPy批量裁剪栅格数据 文章目录遥感数据处理系列前言一、栅格数据拼接1. 原理简介2. 代码二、单文件夹...
  • 矢量数据和栅格数据2

    千次阅读 2013-11-24 21:53:58
    1. 矢量数据和栅格数据 矢量数据 Vector Data 在直角坐标系中,用X、Y坐标表示地图图形或地理试题的位置和形状的数据。矢量数据一般通过记录坐标的方式来尽可能将地理实体的空间位置表现的准确无误。 点实体:在...
  • ArcPy批量计算栅格数据平均值

    千次阅读 2020-12-24 16:37:36
    文章目录前言一、计算栅格数据平均值二、栅格异常值处理总结 前言 ArcPy这个包也太重要了吧!如果没有IDL+Python+Matlab,我的实验又该如何展开?如果没有ArcPy,那可能就要用GDAL硬撕代码了。本文介绍如何处理...
  • ArcMAP栅格数据裁剪小技巧

    千次阅读 2019-10-24 15:04:35
    ArcMAP栅格数据裁剪小技巧 ** 我们以裁剪DEM为例来介绍一下栅格数据裁剪小技巧。 首先打开ArcMAP,加载DEM数据: 显示没效果可以选择拉伸一下: 也可以换成彩色的色带: 加载裁剪用的矢量数据进来: 点击工具箱...
  • 提供一种方便、简捷、易学、易用的栅格数据格式\范围\坐标系统的转换,可以提供栅格向矢量网格和栅格向栅格的分类型分波段转换,支持几十种矢量和栅格数据,支持数据的批量转换。软件无需安装,硬件要求低、功能实用...
  • 处理单波段 单波段数据处理起来常常相对容易些,最常用的...它是个非常实用的栅格数据处理工具,如果你想 Dive In ,点这里了解 Raster Calculator 的工作原理。 例如这个需求中仅需要一个简单表达式,使用到Set...
  • 第一章 栅格数据模型表示连续的现象最好是选择栅格数据模型,栅格数据模型用规则格网来覆盖整个空间。格网中的各个像元值与其位置上的空间现象特征相对应,而且像元值的变化反映了现象的空间变异。4.1 栅格数据模型...
  • 提供一种方便、简捷、易学、易用的栅格数据格式\范围\坐标系统的转换,可以提供栅格向矢量网格和栅格向栅格的分波段、分类型转换,支持几十种矢量和栅格数据。软件无需安装,硬件要求低、功能实用简洁。并可转换...
  • 提供一种方便、简捷、易学、易用的栅格数据格式\范围\坐标系统的转换,可以提供栅格向矢量网格和栅格向栅格的分波段、分类型转换,支持几十种矢量和栅格数据。软件无需安装,硬件要求低、功能实用简洁。并可转换...
  • 学会这些数据格式的读取和可视化是进行地学统计分析计算的关键,python提供了解析nc、hdf等数据格式的库,作者整理了如何利用python进行*.nc、*.hdf、*.dat格式数据的读取并进行栅格转换,欢迎转载和关注!...
  • 打开栅格文件打开GDAL支持的栅格数据之前需要注册驱动,GDALAllRegister()函数将尝试注册所有已知的驱动,包含那些用GDALDriverManager::AutoLoadDrivers()函数自动加载的.so文件。 GDALAllRegister(); GDALDataset ...
  • 函数格式: band.ReadAsArray([xoff], [yoff], [win_xsize], [win_ysize], [buf_xsize], [buf_ysize], [buf_obj]) xoff是开始阅读的专栏,默认值为0。 yoff是开始阅读的行,默认值为0。 win_xsize是要读取的列数,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,656
精华内容 1,862
关键字:

常用的栅格数据格式