空间信息到GML的转换

<p class="MsoNormal"><span lang="EN-US"><span> </span></span><span>目前,大量的空间数据都是以特定的文本数据格式进行存储的,最常见的</span><span lang="EN-US">GIS</span><span>数据格式包括</span><span lang="EN-US">ArcInfo</span><span>公司的</span><span lang="EN-US">Shp</span><span>文件,</span><span lang="EN-US">MapInfo</span><span>公司的</span><span lang="EN-US">Mif</span><span>文件等等。在我们所开发的中间件中,包含一个转换工具,实现了对</span><span lang="EN-US">Shp</span><span>文件,</span><span lang="EN-US">Mif</span><span>文件到</span><span lang="EN-US">GML</span><span>文件的转化。</span>

<p class="MsoNormal"><span>以</span><span lang="EN-US">ArcInfo</span><span>公司的</span><span lang="EN-US">Shp</span><span>文件为例。该文件是一个二进制文件,包含一个固定长度的头文件。该头文件长度为</span><span lang="EN-US">100</span><span>个字节,其中包含整个文件的重要属性信息。例如:从第</span><span lang="EN-US">24</span><span>个字节开始到</span><span lang="EN-US">28</span><span>个字节描述的是文件的长度;从第</span><span lang="EN-US">28</span><span>个字节开始到第</span><span lang="EN-US">32</span><span>个字节描述的是文件的版本;从第</span><span lang="EN-US">32</span><span>个字节开始到第</span><span lang="EN-US">36</span><span>个字节描述的是文件中包含图形的类型;从第</span><span lang="EN-US">36</span><span>个字节到第</span><span lang="EN-US">84</span><span>个字节,每八个字节为一组,分别描述该图形文件的边界范围(</span><span lang="EN-US">Xmin</span><span>,</span><span lang="EN-US">Ymin</span><span>,</span><span lang="EN-US">Xmax</span><span>,</span><span lang="EN-US">Ymax</span><span>,</span><span lang="EN-US">Zmin</span><span>,</span><span lang="EN-US">Zmax</span><span>)。第</span><span lang="EN-US">100</span><span>个字节以后是关于对象数据的描述,其中包括对</span><span lang="EN-US">point</span><span>,</span><span lang="EN-US">line</span><span>,</span><span lang="EN-US">polygon</span><span>等几何类型的描述。每个地理对象是由一组字节决定,每组字节的长度根据所描述的几何类型的不同,字节长度也相应不同。以其中的</span><span lang="EN-US">Point</span><span>点对象为例,从第</span><span lang="EN-US">0</span><span>-</span><span lang="EN-US">4</span><span>个字节描述对象的类型,从第</span><span lang="EN-US">4</span><span>-</span><span lang="EN-US">12</span><span>个字节描述点对象的</span><span lang="EN-US">X</span><span>坐标,从第</span><span lang="EN-US">12</span><span>-</span><span lang="EN-US">20</span><span>个字节描述点对象的</span><span lang="EN-US">Y</span><span>坐标。</span>

<p class="MsoNormal" align="center">
<div>

<table class="MsoTableGrid" style="width: 356px;" border="1" cellspacing="0" cellpadding="0"><tbody>
<tr>
<td width="151" valign="top">

</td>
<td width="205" valign="top">
<p class="MsoNormal" align="center"><span lang="EN-US">GML</span><span>文件</span><span lang="EN-US"></span>
</td>
</tr>
<tr>
<td width="151" valign="top">

</td>
<td width="205" valign="top">
<p class="MsoNormal" align="left"><span lang="EN-US">Point</span>
</td>
</tr>
<tr>
<td width="151" valign="top">

</td>
<td width="205" valign="top">
<p class="MsoNormal" align="left"><span lang="EN-US">Point</span>
</td>
</tr>
<tr>
<td width="151" valign="top">

</td>
<td width="205" valign="top">
<p class="MsoNormal" align="left"><span lang="EN-US">Point</span>
</td>
</tr>
<tr>
<td width="151" valign="top">

</td>
<td width="205" valign="top">
<p class="MsoNormal" align="left"><span lang="EN-US">Point </span><span>或</span><span> <span lang="EN-US">MultiPoint</span></span>
</td>
</tr>
<tr>
<td width="151" valign="top">

</td>
<td width="205" valign="top">
<p class="MsoNormal" align="left"><span lang="EN-US">Point </span><span>或</span><span> <span lang="EN-US">MultiPoint</span></span>
</td>
</tr>
<tr>
<td width="151" valign="top">

</td>
<td width="205" valign="top">
<p class="MsoNormal" align="left"><span lang="EN-US">Point </span><span>或</span><span> <span lang="EN-US">MultiPoint</span></span>
</td>
</tr>
<tr>
<td width="151" valign="top">

</td>
<td width="205" valign="top">
<p class="MsoNormal" align="left"><span lang="EN-US">LineString</span>
</td>
</tr>
<tr>
<td width="151" valign="top">

</td>
<td width="205" valign="top">
<p class="MsoNormal" align="left"><span lang="EN-US">LineString</span>
</td>
</tr>
<tr>
<td width="151" valign="top">

</td>
<td width="205" valign="top">
<p class="MsoNormal" align="left"><span lang="EN-US">LineString</span>
</td>
</tr>
<tr>
<td width="151" valign="top">

</td>
<td width="205" valign="top">
<p class="MsoNormal" align="left"><span lang="EN-US">DBNull.Value</span>
</td>
</tr>
<tr>
<td width="151" valign="top">

</td>
<td width="205" valign="top">
<p class="MsoNormal" align="left"><span lang="EN-US">Polygon</span>
</td>
</tr>
<tr>
<td width="151" valign="top">

</td>
<td width="205" valign="top">
<p class="MsoNormal" align="left"><span lang="EN-US">Polygon</span>
</td>
</tr>
<tr>
<td width="151" valign="top">

</td>
<td width="205" valign="top">
<p class="MsoNormal" align="left"><span lang="EN-US">Polygon</span>
</td>
</tr>
<tr>
<td width="151" valign="top">

</td>
<td width="205" valign="top">
<p class="MsoNormal" align="left"><span lang="EN-US">Polygon</span>
</td>
</tr>
</tbody></table>


<p class="MsoNormal"><span>除了以特定文本数据格式存储以外,还有相当一部分地理信息是存储在数据库中的(一般都是存储在关系数据库中)。将这些地理信息转换为</span><span lang="EN-US">GML</span><span>文件的原理和上述方法是类似的,只要找到地理信息与</span><span lang="EN-US">GML</span><span>几何图元之间的对应关系,就可以编程进行转换。</span>
<span>还有一种常见的地理信息格式就是栅格数据(</span><span lang="EN-US">Raster Data</span><span>)。栅格数据是由正方形或者矩形栅格点组成,每个栅格点或者像素的位置由栅格所在的行列号来定义,所对应的数值为栅格所要表达的内容的属性值。栅格图像的编码和</span><span lang="EN-US">XML</span><span>格式的编码完全不同。它不能从语法上进行分析,不能验证正确性,也没有良好的格式。而且,它的每一个栅格点的数据值都是固定不变的,将其转化</span><span lang="EN-US">XML</span><span>标准的格式的时候,没有任何操作的灵活性</span><span>。将栅格图像转换为</span><span lang="EN-US">GML</span><span>,可以将其中所有的栅格点转换成为</span><span lang="EN-US">GML</span><span>中的</span><span lang="EN-US">Point</span><span>。由于通常栅格图像都包含着大量的信息,因此转换后的</span><span lang="EN-US">GML</span><span>文件一般也都包含了大量的点信息。目前来看,将栅格数据转换为</span><span lang="EN-US">GML</span><span>,并没有太多的实际意义。况且,</span><span lang="EN-US">GML3</span><span>中已经支持栅格数据,其中对覆盖模式的描述与栅格数据集是等价的。</span>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值