GIS基础之矢量数据

矢量数据基本概念

计算机中以矢量结构存贮的内部数据,是跟踪式数字化仪的直接产物。

矢量数据类型,分为点、线和面三种。

  • 点(Points)

点数据可直接用坐标值描述,每个点是由单独的X,Y坐标定义的,在一个点矢量文件中可以包含多个点。点数据可以包含:采样点、独立树、测量点等等。

  • 线(Lines)

线数据可用均匀或不均匀间隔的顺序坐标链来描述,线是一系列(至少2个)相连的折点或点的集合。道路、溪流都可以以线的形式表现。线包含一系列的线段或弧,每段线都是由折点的X,Y坐标所定义的。

  • 面(Polygons)

面状数据(或多边形数据)可用边界线来描述,面是由3个或以上的折点组成的连续封闭图形。建筑物、湖泊、海洋、国家等等都可以以面来表示。

矢量数据的组织形式较为复杂,以弧段为基本逻辑单元,而每一弧段以两个或两个以上相交结点所限制,并为两个相邻多边形属性所描述。

在计算机中,使用矢量数据的主要优点是:存储量小,数据项之间拓扑关系可从点坐标链中提取某些特征而获得;而主要缺点是:数据编辑、更新和处理软件较复杂。

GIS常用矢量数据格式

Esri Shapefile(shp)

Shapefile是最常见的矢量数据格式,所有的商业和开源GIS软件都支持。无处不在的它已成为行业标准。Shapefile由三个必须的文件(.shp、.shx、.dbf)以及若干可选文件(.prj、.xml、.sbn、.sbx、.cpg)组成。

  • .shp(shape)文件

.shp文件存储矢量地图数据,记录了每个要素的空间位置信息,.shp由头文件和实体信息两部分构成。

头文件是一个长度固定(100 bytes)的记录段,一共有9个int型和7个double型数据。

实体信息负责记录坐标信息,它以记录段为基本单位,每一个记录段记录一个地理实体目标的坐标信息每个记录段分为记录头和记录内容两部分。

记录头的内容包括记录号(Record Number) 和坐标记录长度(Content Length)两个记录项。它们的位序都是big。记录号(Record Number) 和坐标记录长度(Content Length) 两个记录项都是int型,并且shapefile文件中的记录号都是从1开始的。记录内容包括目标的几何类型(ShapeType) 和具体的坐标记录(X、Y),记录内容因要素几何类型的不同其具体的内容及格式都有所不同。下面分别介绍点状目标(Point) 、线状目标(PoLine)和面状目标(Polygon)。

  • .shx(shape index)文件

.shx文件是索引文件,用于存储.shp文件中要素的位置,加快数据访问速度。

shapefile的文件索引包含与.shp文件相同的100个字节的文件头,然后跟随着不定数目的8字节定长记录,每个记录都有两个字段。因为这个图形索引每个数据项都是定长的,因此程序只要在这个图形索引中向前或向后遍历,读取索引中所记录的记录位移与记录长度,程序就可以很快地向前或向后遍历整个shapefile,在.shp文件中找到任意一个几何体的正确位置。

  • .dbf(dBase)文件

.dbf文件存储矢量数据的属性信息,例如地图上每个点的名称、类型等信息。

每个图形的属性数据存储在dBase格式的数据表之中。属性数据也可以存储在另一种开放的数据表格式xBase格式之中。

  • .prj文件

.prj是投影系统参数。

  • .xml文件

.xml是关联的元数据。

  • .sbn文件

.sbn是用于优化查询的空间索引。

  • .sbx文件

.sbx优化了加载时间。

  • .cpg文件

.cpg说明了shp文件的属性数据编码,如果中文显示乱码,一般需要加一个.cpg文件,使用文本文件编辑,写上UTF-8。

Geographic Java Object Notation (GeoJSON)

GeoJSON格式主要用于基于Web的映射。

GeoJSON以Java对象符号(JSON)形式将坐标存储为文本。这包括矢量点,线和多边形以及表格信息。GeoJSON将对象存储在花括号{}中,并且通常语法标记更为简洁(与GML相比)。

GeoJSON具有简单的语法,您可以在任何文本编辑器中进行修改。网络地图浏览器可以理解Java,因此默认情况下,GeoJSON是一种常见的Web格式。但是Java只理解二进制对象。幸运的是,Java可以将JSON转换为二进制。

GeoJSON数据主要由以下几部分组成:

  • 特征

特征是一种几何对象和其他属性的组合体。

  • 几何对象

几何对象是点、线、面、多点、多线、多面和几何集合等类型的集合。

  • 特征集合

特征集合表示一系列特征。

GeoJSON数据的最小组成单位是特征,每个特征都包含一个几何对象和其他属性,多个特征可以组成一个特征集合,以表示一系列特征。

矢量数据创建与转换

矢量数据创建

在ArcGIS中可以进行矢量数据的创建。

在ArcGIS中矢量数据的处理,建议在文件地理数据库(File Geodatabase)中进行。地理数据库可以存储点、线、面、多面体等,同时支持拓扑,可以对绘制完成的矢量数据进行拓扑检查。

矢量数据转换

在测绘、建筑、规划等方面,CAD和GIS的转换工作非常常用。简单的CAD转换可以直接通过ArcGIS加载数据然后到处为地理数据库要素类实现。

也可以采用一些在线工具进行矢量数据的浏览和转换。使用NSDT 3Dconvert在线工具,支持矢量数据(shp、GeoJSON等)在线打开与查看,支持将矢量数据(shp、GeoJSON等)在线转换为glb、gltf、obj、stl、dae、ply、off等格式。

矢量数据特点

  • 用离散的线或点来描述地理现象及特征

点用来描述地图上的各种标志点,如监控点、居民点;线包括直线和曲线,曲线又包括一般曲线和封闭曲线,分别用来表示河流、道路及行政边界等,此外还包括一些特殊曲线,如等高线;面用来描述一块连续的区域,如湖泊、林地、居民地等 。

  • 用拓扑关系来描述矢量数据之间的关系

在矢量数据系统中,常用几何信息描述空间几何位置,用拓扑信息来描述空间的相连、相邻及包含等关系,从而清楚地表达空间地物之间结构。

  • 面向目标的操作

对矢量数据的操作,更多地面向目标,从而使精度高、数据冗余度小、运算量少,如对区域面积的计算和道路长度的量算,分别用计算区域多边形面积及道路长度而获得。这样直接根据目标几何形状用坐标值计算的方法,使计算精度大大提高。另外,由于矢量数据是以点坐标为基础来记录数据,不仅便于对图形放大、缩小,而且还便于将数据从一个投影系统转换到另一个投影系统。

  • 数据结构复杂且难以同遥感数据结合

矢量数据系统不仅难以同DEM模型数据相结合,而且也难以同遥感数据相结合,从而限制了矢量数据系统的功能和效率。在目前基于矢量数据结构的地理信息系统中,为解决同遥感结合的问题,往往是将矢量数据转换成栅格数据,再进行分析,然后,根据需要再转换回去。这是矢量数据结构在地理信息应用中的最大不足。

  • 难以处理位置关系(如求交、包含等)

在矢量数据结构中,给出的是地物取样点坐标,判断地物的空间位置关系时,往往需要进行大量求交运算。例如,当已知某一土壤类型图和某一积温图,要叠置获取新分类图时,需进行多边形求交运算,组成新多边形,建立新的拓扑关系。因此,矢量数据结构解决这类问题是相当复杂的。

矢量数据应用

  • 矢量图

计算机中显示的数字图像可以分为两大类------矢量图和位图。矢量图使用直线和曲线来描述图形,这些图形的元素是一些点、线、矩形、多边形、圆和弧线等等,它们都是通过数学公式计算获得的。由于矢量图形可通过公式计算获得,所以矢量图形文件体积一般较小。 矢量图形最大的优点是无论放大、缩小或旋转等不会失真。

  • 矢量图像

也称为面向对象的图像或绘图图像,在数学上定义为一系列由线连接的点。矢量文件中的图形元素称为对象。每个对象都是一个自成一体的实体,它具有颜色、形状、轮廓、大小和屏幕位置等属性。既然每个对象都是一个自成一体的实体,就可以在维持它原有清晰度和弯曲度的同时,多次移动和改变它的属性,而不会影响图例中的其它对象。这些特征使基于矢量的程序特别适用于图例和三维建模,因为它们通常要求能创建和操作单个对象。基于矢量的绘图同分辨率无关。这意味着它们可以按最高分辨率显示到输出设备上。

相关推荐
皮皮陶3 天前
Unity WebGL交互通信
unity·交互·webgl
鸢_6 天前
【Threejs】相机控制器动画
javascript·实时互动·动画·webgl
_oP_i8 天前
Unity Addressables 系统处理 WebGL 打包本地资源的一种高效方式
unity·游戏引擎·webgl
新中地GIS开发老师8 天前
WebGIS和WebGL的基本概念介绍和差异对比
学习·arcgis·webgl
_oP_i9 天前
Unity 中使用 WebGL 构建并运行时使用的图片必须使用web服务器上的
前端·unity·webgl
flying robot12 天前
Three.js简化 WebGL 的使用
webgl
小彭努力中13 天前
114. 精灵模型标注场景(贴图)
前端·3d·webgl·贴图
小彭努力中13 天前
109. 工厂光源(环境贴图和环境光)
前端·深度学习·3d·webgl·贴图
小彭努力中13 天前
112. gui辅助调节光源阴影
前端·深度学习·3d·webgl
refineiks15 天前
three.js绘制宽度大于1的线,并动态新增顶点
3d·图形渲染·webgl