cl991036
管理员
管理员
  • 注册日期2003-07-25
  • 发帖数5917
  • QQ14265545
  • 铜币29669枚
  • 威望217点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • GIS帝国铁杆
阅读:840回复:0

读取 国家标准地球空间数据交换格式 (简称CNSDTF)DEM

楼主#
更多 发布于:2007-11-06 00:14
<a href="http://www.cnblogs.com/wuhanhoutao/archive/2007/10/31/943791.html" target="_blank" >在南京城市地质调查项目中需要读取<font face="Courier New">CNSDTF</font> DEM数据,这种格式与美国USGS DEM数据格式相比较,有些简单,不包含椭球体,投影方式等元数据,实际上就是投影后的平面格网数据,所以读取入系统不困难.以后将介绍ERDAS IMG格式的读取,这个就显得有些复杂了.<br>
    
</a><br>std::locale::global(std::locale(""));</p>
<p>   ifstream _demfile;           //DEM文件流<br>
   _demfile.open(lpszPathName);        //读取文件<br>
  <br>
   string sDataName,sCNDataName;<br>
   string sVersion;float iVersion;<br>
   string sAlpha;float fAlpha;<br>
   string sUnit; string sUnitName;<br>
   string sCompress; float dCompress;<br>
   string sX0; double dX0;<br>
   string sY0; double dY0;<br>
   string sDX; double dDX;<br>
   string sDY; double dDY;<br>
   string sRow; int iRows;<br>
   string sColumn; int iColumns;<br>
   string sValueTypeName; string sValueType;<br>
   string sHzoom; int iHzoom;<br>
   string sMinV;<br>
   string sMaxV;</p>
<p>   if(_demfile)<br>
   {<br>
    _demfile>>sDataName>>sCNDataName;<br>
    _demfile>>sVersion>>iVersion;<br>
    _demfile>>sAlpha>>fAlpha;<br>
    _demfile>>sUnit>>sUnitName;<br>
    _demfile>>sCompress>>dCompress;<br>
    _demfile>>sX0>>dX0;<br>
    _demfile>>sY0>>dY0;<br>
    _demfile>>sDX>>dDX;<br>
    _demfile>>sDY>>dDY;<br>
    _demfile>>sRow>>iRows;<br>
    _demfile>>sColumn>>iColumns;<br>
    _demfile>>sValueTypeName>>sValueType;<br>
    _demfile>>sHzoom>>iHzoom;<br>
    _demfile>>sMinV;<br>
    _demfile>>sMaxV;</p>
   }<br>
   else <br>
   {<br>
    AfxMessageBox("无法读取文件数据头!");<br>
    return false;<br>
   }<br>
     dY0 = dY0 - dDY*iRows;              //从文件中读取的dYO记录的是最大数值<br>
   long index = 0,PointsTotalNumber = 0;<br>
   int i,j;<br>
   double tmpHeight = 0;<br>
  <br>
   POINT3d* p3dDEMGridPoint = new POINT3d[iRows*iColumns];       //准备读文件中数据<br>
  <br>
   double dNodata =   -99999;<br>
   double dZMin = 9999,dZMax = -9999;<br>
   for(j=iRows-1;j>=0;j--)               //由于此文件记录Y数值的方法与其他不同,需要翻转数据<br>
   {<br>
    for(i=0;i<iColumns;i++)<br>
    {<br>
     index =   j*iColumns+i;<br>
     _demfile>>tmpHeight;<br>
     if(iHzoom != 0) tmpHeight = tmpHeight/iHzoom;      //原始的缩放因子<br>
     p3dDEMGridPoint[index][2] = tmpHeight;<br>
    <br>
     if( tmpHeight > -9999)            //也就是不等于 dNodata<br>
     {<br>
      if(dZMin > tmpHeight) dZMin = tmpHeight;       //记录高程上的最小数值<br>
      if(dZMax < tmpHeight) dZMax = tmpHeight;       //记录高程上的最大数值<br>
     }<br>
    <br>
    }<br>
}
喜欢0 评分0
没钱又丑,农村户口。头可断,发型一定不能乱。 邮箱:gisempire@qq.com
游客

返回顶部