空间信息到GML的转换

GML已经成为大家所接受并且容易理解的一种空间信息的交换格式标准,所以将其它GIS数据转换为GML格式进行发布就具有广泛的实用价值和市场前景。不久的将来,空间信息会大量的以GML格式存在,人们可以方便的进行空间信息的共享与交换。由此就会引发出一个非常重要的问题,那就是如何将现有的一些空间信息转换成GML格式,更好的实现各类空间数据共享。

目前,大量的空间数据都是以特定的文本数据格式进行存储的,最常见的GIS数据格式包括ArcInfo公司的Shp文件,MapInfo公司的Mif文件等等。

根据GML3规范中的Schema的描述、Shp文件和Mif文件的格式,就能将Shp文件和Mif文件转换为GML文件。在转换过程中,首先要创建一个GML格式文档,添加GML描述信息,然后循环的将Shp或者Mif文件中的地理信息元素转换为GML中的几何图元。

ArcInfo公司的Shp文件为例。该文件是一个二进制文件,包含一个固定长度的头文件。该头文件长度为100个字节,其中包含整个文件的重要属性信息。例如:从第24个字节开始到28个字节描述的是文件的长度;从第28个字节开始到第32个字节描述的是文件的版本;从第32个字节开始到第36个字节描述的是文件中包含图形的类型;从第36个字节到第84个字节,每八个字节为一组,分别描述该图形文件的边界范围(XminYminXmaxYmaxZminZmax)。第100个字节以后是关于对象数据的描述,其中包括对pointlinepolygon等几何类型的描述。每个地理对象是由一组字节决定,每组字节的长度根据所描述的几何类型的不同,字节长度也相应不同。以其中的Point点对象为例,从第04个字节描述对象的类型,从第412个字节描述点对象的X坐标,从第1220个字节描述点对象的Y坐标。

我们将Shp文件中描述的各种地理信息与GML几何图元进行对应,其对应关系如下表所示。

Shp文件

GML文件

Point

Point

PointM

Point

PointZ

Point

MultiPoint

Point MultiPoint

MultiPointM

Point MultiPoint

MultiPointZ

Point MultiPoint

Polyline

LineString

PolylineM

LineString

PolylineZ

LineString

Null shape

DBNull.Value

Polygon

Polygon

PolygonM

Polygon

PolygonZ

Polygon

MultiPatch

Polygon

除了以特定文本数据格式存储以外,还有相当一部分地理信息是存储在数据库中的(一般都是存储在关系数据库中)。将这些地理信息转换为GML文件的原理和上述方法是类似的,只要找到地理信息与GML几何图元之间的对应关系,就可以编程进行转换。

还有一种常见的地理信息格式就是栅格数据( Raster Data )。栅格数据是由正方形或者矩形栅格点组成,每个栅格点或者像素的位置由栅格所在的行列号来定义,所对应的数值为栅格所要表达的内容的属性值。栅格图像的编码和 XML 格式的编码完全不同。它不能从语法上进行分析,不能验证正确性,也没有良好的格式。而且,它的每一个栅格点的数据值都是固定不变的,将其转化 XML 标准的格式的时候,没有任何操作的灵活性 。将栅格图像转换为 GML ,可以将其中所有的栅格点转换成为 GML 中的 Point 。由于通常栅格图像都包含着大量的信息,因此转换后的 GML 文件一般也都包含了大量的点信息。目前来看,将栅格数据转换为 GML ,并没有太多的实际意义。况且, GML3 中已经支持栅格数据,其中对覆盖模式的描述与栅格数据集是等价的。

你可能感兴趣的:(转换)