📄 jdemdataset.cpp.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>GDAL: Sample Driver: jdemdataset.cpp</title><link href="doxygen.css" rel="stylesheet" type="text/css"><link href="tabs.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.5.1 --><div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> </ul></div><h1><a class="anchor" name="jdemdataset.cpp">Sample Driver: jdemdataset.cpp</a></h1><div class="fragment"><pre class="fragment"><span class="comment">/******************************************************************************</span><span class="comment"> * $Id: jdemdataset.cpp 10646 2007-01-18 02:38:10Z warmerdam $</span><span class="comment"> *</span><span class="comment"> * Project: JDEM Reader</span><span class="comment"> * Purpose: All code for Japanese DEM Reader</span><span class="comment"> * Author: Frank Warmerdam, warmerdam@pobox.com</span><span class="comment"> *</span><span class="comment"> ******************************************************************************</span><span class="comment"> * Copyright (c) 2000, Frank Warmerdam <warmerdam@pobox.com></span><span class="comment"> *</span><span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span><span class="comment"> * copy of this software and associated documentation files (the "Software"),</span><span class="comment"> * to deal in the Software without restriction, including without limitation</span><span class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span><span class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span><span class="comment"> * Software is furnished to do so, subject to the following conditions:</span><span class="comment"> *</span><span class="comment"> * The above copyright notice and this permission notice shall be included</span><span class="comment"> * in all copies or substantial portions of the Software.</span><span class="comment"> *</span><span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS</span><span class="comment"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span><span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL</span><span class="comment"> * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span><span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span><span class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span><span class="comment"> * DEALINGS IN THE SOFTWARE.</span><span class="comment"> ****************************************************************************/</span><span class="preprocessor">#include "gdal_pam.h"</span>CPL_CVSID(<span class="stringliteral">"$Id: jdemdataset.cpp 10646 2007-01-18 02:38:10Z warmerdam $"</span>);CPL_C_START<span class="keywordtype">void</span> GDALRegister_JDEM(<span class="keywordtype">void</span>);CPL_C_END<span class="comment">/************************************************************************/</span><span class="comment">/* JDEMGetField() */</span><span class="comment">/************************************************************************/</span><span class="keyword">static</span> <span class="keywordtype">int</span> JDEMGetField( <span class="keywordtype">char</span> *pszField, <span class="keywordtype">int</span> nWidth ){ <span class="keywordtype">char</span> szWork[32]; CPLAssert( nWidth < (<span class="keywordtype">int</span>) <span class="keyword">sizeof</span>(szWork) ); strncpy( szWork, pszField, nWidth ); szWork[nWidth] = <span class="charliteral">'\0'</span>; <span class="keywordflow">return</span> atoi(szWork);}<span class="comment">/************************************************************************/</span><span class="comment">/* JDEMGetAngle() */</span><span class="comment">/************************************************************************/</span><span class="keyword">static</span> <span class="keywordtype">double</span> JDEMGetAngle( <span class="keywordtype">char</span> *pszField ){ <span class="keywordtype">int</span> nAngle = JDEMGetField( pszField, 7 ); <span class="keywordtype">int</span> nDegree, nMin, nSec; <span class="comment">// Note, this isn't very general purpose, but it would appear</span> <span class="comment">// from the field widths that angles are never negative. Nice</span> <span class="comment">// to be a country in the "first quadrant". </span> nDegree = nAngle / 10000; nMin = (nAngle / 100) % 100; nSec = nAngle % 100; <span class="keywordflow">return</span> nDegree + nMin / 60.0 + nSec / 3600.0;}<span class="comment">/************************************************************************/</span><span class="comment">/* ==================================================================== */</span><span class="comment">/* JDEMDataset */</span><span class="comment">/* ==================================================================== */</span><span class="comment">/************************************************************************/</span><span class="keyword">class </span>JDEMRasterBand;<span class="keyword">class </span>JDEMDataset : <span class="keyword">public</span> GDALPamDataset{ <span class="keyword">friend</span> <span class="keyword">class </span>JDEMRasterBand; FILE *fp; GByte abyHeader[1012]; <span class="keyword">public</span>: ~JDEMDataset(); <span class="keyword">static</span> <a class="code" href="classGDALDataset.html">GDALDataset</a> *Open( GDALOpenInfo * ); CPLErr GetGeoTransform( <span class="keywordtype">double</span> * padfTransform ); <span class="keyword">const</span> <span class="keywordtype">char</span> *GetProjectionRef();};<span class="comment">/************************************************************************/</span><span class="comment">/* ==================================================================== */</span><span class="comment">/* JDEMRasterBand */</span><span class="comment">/* ==================================================================== */</span><span class="comment">/************************************************************************/</span><span class="keyword">class </span>JDEMRasterBand : <span class="keyword">public</span> GDALPamRasterBand{ <span class="keyword">friend</span> <span class="keyword">class </span>JDEMDataset; <span class="keyword">public</span>: JDEMRasterBand( JDEMDataset *, <span class="keywordtype">int</span> ); <span class="keyword">virtual</span> CPLErr IReadBlock( <span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">void</span> * );};<span class="comment">/************************************************************************/</span><span class="comment">/* JDEMRasterBand() */</span><span class="comment">/************************************************************************/</span>JDEMRasterBand::JDEMRasterBand( JDEMDataset *poDS, <span class="keywordtype">int</span> nBand ){ this->poDS = poDS; this->nBand = nBand; eDataType = <a class="code" href="gdal_8h.html#22e22ce0a55036a96f652765793fb7a4f5cbd2f96abffd9ac061fc0dced5cbba">GDT_Float32</a>; nBlockXSize = poDS->GetRasterXSize(); nBlockYSize = 1;}<span class="comment">/************************************************************************/</span><span class="comment">/* IReadBlock() */</span><span class="comment">/************************************************************************/</span>CPLErr JDEMRasterBand::IReadBlock( <span class="keywordtype">int</span> nBlockXOff, <span class="keywordtype">int</span> nBlockYOff, <span class="keywordtype">void</span> * pImage ){ JDEMDataset *poGDS = (JDEMDataset *) poDS; <span class="keywordtype">char</span> *pszRecord; <span class="keywordtype">int</span> nRecordSize = nBlockXSize*5 + 9 + 2; <span class="keywordtype">int</span> i; VSIFSeek( poGDS->fp, 1011 + nRecordSize*nBlockYOff, SEEK_SET ); pszRecord = (<span class="keywordtype">char</span> *) CPLMalloc(nRecordSize); VSIFRead( pszRecord, 1, nRecordSize, poGDS->fp ); <span class="keywordflow">if</span>( !EQUALN((<span class="keywordtype">char</span> *) poGDS->abyHeader,pszRecord,6) ) { CPLFree( pszRecord );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -