GIS五花八门的数据格式

技术文章3年前 (2021-05-13)3884

初学者往往会被格式五花八门的 GIS 数据文件,弄得一头雾水,每个软件(ArcGIS、SuperMap、MapGIS等等)也都喜欢自己整一套数据格式,更想让自己开发的数据结构成为标准,这些厂商为了达到商业目的各自为阵,给我们这些学习和使用者带来了很多麻烦,增加了学习成本,数据互操作困难,这个软件编辑的数据,那个软件打不开。

有意思的是这种格式间的壁垒,却让有心之人嗅到了商机,从而很多格式转换工具被开发出来,比如著名的 FME(Feature Manipulate Engine),支持100多种不同 GIS 空间数据格式之间的转换,自然正版价格不便宜。

透过现象看本质,数据模型决定数据结构,数据格式又是根据数据结构设计的。就矢量数据模型来说,需要描述的无非是几何实体(点、线、面)、空间关系、空间索引、空间参考、一般属性等内容,所以无论是什么数据格式的文件,基本都是在和上面这些信息打交道,有的格式可能注重于读写效率、有的可能没有保存拓扑关系、有的可能注重数据压缩。

栅格数据是将空间分割成有规律的网格,每一个网格称为一个单元(像素),并在各单元上赋予相应的属性值来表示实体的一种数据形式,它的数据结构较于矢量数据更加简单了。各种数据格式的差异主要体现在压缩方式、读写效率、元数据等方面。


下面就着重介绍一下几种常见的格式:

1.矢量数据[1]

矢量数据格式,如文章开头的导图所示,种类繁多,这里只介绍几种常见、常用的格式,这几个格式中大部分都和 GIS 第一大厂 ESRI 脱不开关系。

1.1.Shapefile

shapefile 可能是大多学 GIS 接触最多也是接触最早的数据格式之一,它是ESRI 提出的一种矢量数据格式,也是最被广泛使用的矢量数据格式。目前,它已经是地理信息软件界开放标准格式,也是一种重要的交换格式,能够在ESRI与其他公司的产品之间进行数据互操作,如果一个 GIS 软件不支持 shp,肯定会贻笑大方。需要注意的是 shapefile 不能存储拓扑关系

一个 shapefile 文件至少有三个文件:

  • *.shp:主文件用于存储地理要素的几何图形

  • *.shx:索引文件用于存储图形要素和属性信息索引

  • *.dbf:dBase 表文件用于存储要素的一般属性信息

除此之外,还有一些可选文件:

  • *.prj:存储空间参考信息

  • *.sbn/sbx:存储几何实体的空间索引信息

  • *.fbn/fbx:存储只读集合实体的空间索引信息

每个 shapefile 文件只能存储一种几何类型(或点、或线、或面)的数据,在 ArcCatalog 中浏览 shp 数据文件夹可以看到,文件名左侧图标清晰的标识出该 shp 所存几何实体的文件类型。

1.2. File GeoDatabase

Esri 创建的一种采用标准关系数据库技术来表现地理信息的数据模型。其具有结构和性能上的优势:快速的性能、多样的数据关系、兼容存储栅格数据、优化空间索引以及数据压缩等。下图可以看到,在ArcGIS 中创建数据库时有三种选项:

File Geodatabse 不同于 Personal Geodatabase,File GeoDatabase 在存储能力、平台支持、读写速度、压缩率等方面全面强于 Personal Geodatabse, 具体差异不在此赘述。Database Connection 连接的就是ArcSDE GeoDatabase,它通过 ArcSDE 使用大型数据库 Oracle,SqlServer,DB2 等存储空间数据,可以实现并发操作,不过需要单独的用户许可。

1.3. Coverage

Coverage 也是 ESRI 提出的一种地理空间数据格式,现在已经很少使用,但毕竟是大厂出品,这里还是说一下。它没有扩展名,只是一组文件夹。Coverage使用要素类来存储点、弧、多边形或注释。tic是地理控制点,有助于确定覆盖范围。

1.4. E00

后缀为E00的文件是Esri的一种通用交换格式文件。这种文件通过明码的方式表达了几乎所有的矢量格式以及属性信息,广泛应用于与其他软件之间进行数据交换。

1.5. GeoJSON

GeoJSON 是一种基于JSON的开源标准格式,其和 JSON 一样数据结构简单,可读性强,前后端兼容性好,也特别适合在 Web 中使用。GeoJSON 的点数据结构说明如下,详情请点击「阅读原文」了解。

由于 GeoJSON 结构简单、使用灵活,许多轻量的前端地图展现都采用 GeoJSON,比如前端图表组件 EChart 中地图显示就是采用 GeoJSON 作为数据源。

在 web 地图中,常常有这样的需求:点击或搜索某块区域时,让这块区域能够高亮显示,来改善用户体验,这里的高亮效果就可以通过 GeoJSON 来处理,后面会写几篇文章介绍如何制作、使用GeoJSON。

1.6. KML/KMZ

KML是标记语言(Keyhole Markup Language)的缩写,最初由 Google 旗下 Keyhole 公司开发,是一种基于XML 语法与格式的、用于描述和保存地理信息(如点、线、图像、多边形和模型等)的编码规范。KMZ 是一个经过ZIP格式压缩过的 KML 文件,其文件自身可以包含图标,影像和模型等。KMZ/KML 可以被 Google Earth、Google Map 和 ArcGIS Earth 等识别并显示。

你可以通过 ArcGIS ToolBox 中「Layer to KML」工具将 *.lyr 文件转为 kml 格式,然后打开google earth 添加查看:

1.7. AutoCAD(.dxf)

DXF 是 AutoCAD 与其它软件之间进行 CAD 数据交换的开放矢量数据文件格式,可以分为两类:ASCII 格式和二进制格式;ASCII 具有可读性好的特点,但占用的空间较大;二进制格式则占用的空间小、读取速度快。由于 AutoCAD 现在是最流行的 CAD 系统,DXF 也被广泛使用,成为事实上的标准。绝大多数 CAD 系统都能读入或输出 DXF 文件。

8. MapGIS

MapGIS 现在大多使用于国土、市政相关领域,应用范围也挺广,毕竟是国产软件还是要支持一下的。

其数据文件主要包括工程文件文件和工程内各工作区的文件。工作区是MAPGIS提出的一个概念,简单地说,工作区就是一个数据池,存放实体的空间数据、拓扑数据、图形数据和属性数据,每个工作区都对应于一个MAPGIS数据文件。数据文件主要有以下几种:

  • 工作区(.MPJ文件):工程文件,存放工程中所有的工作区文件

  • 点工作区(.WT文件):点(PNT)

  • 线工作区(.WL文件):线(LIN)、结点(NOD)

  • 区工作区(.WP文件):线(LIN)、结点(NOD)、区(REG)

  • 网工作区(.WN文件:线(LIN)、结点(NOD)、网(NET)

  • 表工作区(.WB文件):无空间实体,仅有表格记录

2.栅格数据

2.1. GeoTIFF (.tiff)

GeoTIFF 已经成为 GIS 和卫星遥感应用的行业图像标准文件。几乎所有的GIS和图像处理软件包都具有 GeoTIFF 兼容性。GeoTIFF 包含的其他文件有:

  • TFW:渲染栅格地理位置所需的文件

  • XML:可选,元数据文件

  • AUX:输出辅助文件,存储投影等信息

2.2. Erdas Imagine(.img)

Erdas Imagine是美国 ERDAS 公司开发的遥感图像处理系统(ERDAS IMAGINE)使用的遥感影像格式。这种格式广泛应用于遥感数据处理,因为它提供了一个用于整合来自多源传感器数据的框架。该框架支持地理参考、地理编码元数据、多波段、不同数据类型的数据的存储,同时该格式基于瓦片的方式进行数据的存取,这样加快了数据显示和重采样的速度。

2.3. ENVI (.hdr)

ENVI 使用的是通用栅格数据格式,包含一个简单的二进制文件和一个相关的ASCII(文本)的头文件。这也保证了单个 ENVI 栅格文件没有大小上限。ENVI 栅格文件必须包含这两个文件,其中头文件的后缀名为 .hdr,数据文件的后缀随意,甚至可以不带后缀名。这两个文件是通过文件名来关联,即数据文件和头文件名称一致。

2.4. HDF (Hierarchical Data Format)

HDF 格式是一种不必转换格式就可以在不同平台间传递的数据格式,由美国国家高级计算应用中心(NCSA)研制,已经应用于 MODIS、MISR 等数据中。当前流行的版本是 HDF5。HDF 有6种主要数据类型:栅格图像数据、调色板(图像色谱)、科学数据集、HDF 注释(信息说明数据)、Vdata(数据表)、Vgroup(相关数据组合)。HDF 采用分层式数据管理结构,并可以直接从嵌套的文件中获得各种信息。因此,打开一个HDF文件,在读取图像数据的同时可以方便的查取到其地理定位、轨道参数、图像属性、图像噪声等各种信息参数。

到这里常用的 GIS 常用的数据格式介绍完了,这里给了矢量数据更多的篇幅,因为矢量数据结构更加复杂,在 GIS 中使用场景也更丰富灵活;而栅格数据就数据本身来说结构相对简单许多,但其背后却是一门遥感学科,牵扯到的关于影像的一系列知识,可绝不是作者随便说几句就能掰扯清楚的,咱们来日方长~~~


相关文章

MapGIS中图例版的使用与技巧

MapGIS中图例版的使用与技巧

一、如何创建和使用工程图例?  ①首先打开工程文件。  ②在工程操作区域内单击鼠标右键,选择“新建工程图例”。  ③在图例类型中选择类型。  ④在图例信息中输入图例名称、描述信息和分类码。  ⑤单击“...

用vbscript实现ArcMap中的上下标标注功能

用vbscript实现ArcMap中的上下标标注功能

1.问题描述:如果要出一幅地质图,一般地层的表示通常要上下标方式,比如A14(其中1为上标,4为下标),我把A14存入对应矢量要素的属性字段中,可是利用该字段标注要素时总是得不到想要的上下标。2.解决...

ArcGIS中的标注与注记关系与区别

ArcGIS中的标注与注记关系与区别

ArcGIS中的标注与注记(Label与Annotation)关系与区别讲解:在ArcMap中可以使用标注(Label)和注记(Annotation)来识别要素,选择Label或Annotation取...

如何实现ArcGIS符号库的合并以及延伸问题

如何实现ArcGIS符号库的合并以及延伸问题

如何实现ArcGIS符号库的合并?有时候我们会需要将一个符号库中的部分符号添加到另一个符号库中,有时候则是两个或多个符号库整体合并到一起,如何操作可以实现呢?这里提供两个解决思路一)在ArcMap的符...

ArcGIS地图通用线符号的制作

ArcGIS地图通用线符号的制作

ArcGIS地图中有一些线性数据,如交通网络,应用的领域非常广泛,其符号表达已逐渐被大众所认识和熟知。这类线符号的制作,虽没达到约定俗成的程度,但已具有一定的通用性,值得制图员去学习和掌握。所以本文将...

ArcGIS地图符号制作教程

ArcGIS地图符号制作教程

什么是地图符号?地图符号是地图的语言,它以图形的方式描述地图中地理要素、标注、注记的形状、大小、位置、数量和质量特征。地图的符号的作用是什么?地图主要依据符号的形状、尺寸和色彩来反映地图内容。图形形状...