📄 jdemdataset.cpp.html
字号:
CPLError( CE_Failure, CPLE_AppDefined, <span class="stringliteral">"JDEM Scanline corrupt. Perhaps file was not transferred\n"</span> <span class="stringliteral">"in binary mode?"</span> ); <span class="keywordflow">return</span> CE_Failure; } <span class="keywordflow">if</span>( JDEMGetField( pszRecord + 6, 3 ) != nBlockYOff + 1 ) { CPLFree( pszRecord ); CPLError( CE_Failure, CPLE_AppDefined, <span class="stringliteral">"JDEM scanline out of order, JDEM driver does not\n"</span> <span class="stringliteral">"currently support partial datasets."</span> ); <span class="keywordflow">return</span> CE_Failure; } <span class="keywordflow">for</span>( i = 0; i < nBlockXSize; i++ ) ((<span class="keywordtype">float</span> *) pImage)[i] = (<span class="keywordtype">float</span>) (JDEMGetField( pszRecord + 9 + 5 * i, 5) * 0.1); <span class="keywordflow">return</span> CE_None;}<span class="comment">/************************************************************************/</span><span class="comment">/* ==================================================================== */</span><span class="comment">/* JDEMDataset */</span><span class="comment">/* ==================================================================== */</span><span class="comment">/************************************************************************/</span><span class="comment">/************************************************************************/</span><span class="comment">/* ~JDEMDataset() */</span><span class="comment">/************************************************************************/</span>JDEMDataset::~JDEMDataset(){ FlushCache(); <span class="keywordflow">if</span>( fp != NULL ) VSIFClose( fp );}<span class="comment">/************************************************************************/</span><span class="comment">/* GetGeoTransform() */</span><span class="comment">/************************************************************************/</span>CPLErr JDEMDataset::GetGeoTransform( <span class="keywordtype">double</span> * padfTransform ){ <span class="keywordtype">double</span> dfLLLat, dfLLLong, dfURLat, dfURLong; dfLLLat = JDEMGetAngle( (<span class="keywordtype">char</span> *) abyHeader + 29 ); dfLLLong = JDEMGetAngle( (<span class="keywordtype">char</span> *) abyHeader + 36 ); dfURLat = JDEMGetAngle( (<span class="keywordtype">char</span> *) abyHeader + 43 ); dfURLong = JDEMGetAngle( (<span class="keywordtype">char</span> *) abyHeader + 50 ); padfTransform[0] = dfLLLong; padfTransform[3] = dfURLat; padfTransform[1] = (dfURLong - dfLLLong) / GetRasterXSize(); padfTransform[2] = 0.0; padfTransform[4] = 0.0; padfTransform[5] = -1 * (dfURLat - dfLLLat) / GetRasterYSize(); <span class="keywordflow">return</span> CE_None;}<span class="comment">/************************************************************************/</span><span class="comment">/* GetProjectionRef() */</span><span class="comment">/************************************************************************/</span><span class="keyword">const</span> <span class="keywordtype">char</span> *JDEMDataset::GetProjectionRef(){ <span class="keywordflow">return</span>( <span class="stringliteral">"GEOGCS[\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",7004]],TOWGS84[-148,507,685,0,0,0,0],AUTHORITY[\"EPSG\",6301]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",8901]],UNIT[\"DMSH\",0.0174532925199433,AUTHORITY[\"EPSG\",9108]],AXIS[\"Lat\",NORTH],AXIS[\"Long\",EAST],AUTHORITY[\"EPSG\",4301]]"</span> );}<span class="comment">/************************************************************************/</span><span class="comment">/* Open() */</span><span class="comment">/************************************************************************/</span><a class="code" href="classGDALDataset.html">GDALDataset</a> *JDEMDataset::Open( GDALOpenInfo * poOpenInfo ){<span class="comment">/* -------------------------------------------------------------------- */</span><span class="comment">/* Before trying JDEMOpen() we first verify that there is at */</span><span class="comment">/* least one "\n#keyword" type signature in the first chunk of */</span><span class="comment">/* the file. */</span><span class="comment">/* -------------------------------------------------------------------- */</span> <span class="keywordflow">if</span>( poOpenInfo->fp == NULL || poOpenInfo->nHeaderBytes < 50 ) <span class="keywordflow">return</span> NULL; <span class="comment">/* check if century values seem reasonable */</span> <span class="keywordflow">if</span>( (!EQUALN((<span class="keywordtype">char</span> *)poOpenInfo->pabyHeader+11,<span class="stringliteral">"19"</span>,2) && !EQUALN((<span class="keywordtype">char</span> *)poOpenInfo->pabyHeader+11,<span class="stringliteral">"20"</span>,2)) || (!EQUALN((<span class="keywordtype">char</span> *)poOpenInfo->pabyHeader+15,<span class="stringliteral">"19"</span>,2) && !EQUALN((<span class="keywordtype">char</span> *)poOpenInfo->pabyHeader+15,<span class="stringliteral">"20"</span>,2)) || (!EQUALN((<span class="keywordtype">char</span> *)poOpenInfo->pabyHeader+19,<span class="stringliteral">"19"</span>,2) && !EQUALN((<span class="keywordtype">char</span> *)poOpenInfo->pabyHeader+19,<span class="stringliteral">"20"</span>,2)) ) { <span class="keywordflow">return</span> NULL; } <span class="comment">/* -------------------------------------------------------------------- */</span><span class="comment">/* Create a corresponding GDALDataset. */</span><span class="comment">/* -------------------------------------------------------------------- */</span> JDEMDataset *poDS; poDS = <span class="keyword">new</span> JDEMDataset(); poDS->fp = poOpenInfo->fp; poOpenInfo->fp = NULL; <span class="comment">/* -------------------------------------------------------------------- */</span><span class="comment">/* Read the header. */</span><span class="comment">/* -------------------------------------------------------------------- */</span> VSIFSeek( poDS->fp, 0, SEEK_SET ); VSIFRead( poDS->abyHeader, 1, 1012, poDS->fp ); poDS->nRasterXSize = JDEMGetField( (<span class="keywordtype">char</span> *) poDS->abyHeader + 23, 3 ); poDS->nRasterYSize = JDEMGetField( (<span class="keywordtype">char</span> *) poDS->abyHeader + 26, 3 );<span class="comment">/* -------------------------------------------------------------------- */</span><span class="comment">/* Create band information objects. */</span><span class="comment">/* -------------------------------------------------------------------- */</span> poDS->SetBand( 1, <span class="keyword">new</span> JDEMRasterBand( poDS, 1 ));<span class="comment">/* -------------------------------------------------------------------- */</span><span class="comment">/* Initialize any PAM information. */</span><span class="comment">/* -------------------------------------------------------------------- */</span> poDS->SetDescription( poOpenInfo->pszFilename ); poDS->TryLoadXML(); <span class="keywordflow">return</span>( poDS );}<span class="comment">/************************************************************************/</span><span class="comment">/* GDALRegister_JDEM() */</span><span class="comment">/************************************************************************/</span><span class="keywordtype">void</span> GDALRegister_JDEM(){ <a class="code" href="classGDALDriver.html">GDALDriver</a> *poDriver; <span class="keywordflow">if</span>( <a class="code" href="gdal_8h.html#e8ae868eef1e4773283d137b0a1adfc4">GDALGetDriverByName</a>( <span class="stringliteral">"JDEM"</span> ) == NULL ) { poDriver = <span class="keyword">new</span> <a class="code" href="classGDALDriver.html">GDALDriver</a>(); poDriver-><a class="code" href="classGDALMajorObject.html#f334bc8d152f130a55783ea36938735b">SetDescription</a>( <span class="stringliteral">"JDEM"</span> ); poDriver-><a class="code" href="classGDALMajorObject.html#3e157735f6ff6e11935c2a2dbcc24c92">SetMetadataItem</a>( GDAL_DMD_LONGNAME, <span class="stringliteral">"Japanese DEM (.mem)"</span> ); poDriver-><a class="code" href="classGDALMajorObject.html#3e157735f6ff6e11935c2a2dbcc24c92">SetMetadataItem</a>( GDAL_DMD_HELPTOPIC, <span class="stringliteral">"frmt_various.html#JDEM"</span> ); poDriver-><a class="code" href="classGDALMajorObject.html#3e157735f6ff6e11935c2a2dbcc24c92">SetMetadataItem</a>( GDAL_DMD_EXTENSION, <span class="stringliteral">"mem"</span> ); poDriver-><a class="code" href="classGDALDriver.html#31420fbca775dab837fc5c242690fbb4">pfnOpen</a> = JDEMDataset::Open; GetGDALDriverManager()-><a class="code" href="classGDALDriverManager.html#a33cc86affa255ac37b463c129fbe49f">RegisterDriver</a>( poDriver ); }}</pre></div> <hr>Generated for GDAL by <a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1.</body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -