📄 gdalinfo.c.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: Simple C Example: gdalinfo.c</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="gdalinfo.c">Simple C Example: gdalinfo.c</a></h1><div class="fragment"><pre class="fragment"><span class="comment">/******************************************************************************</span><span class="comment"> * $Id: gdalinfo.c 10646 2007-01-18 02:38:10Z warmerdam $</span><span class="comment"> *</span><span class="comment"> * Project: GDAL Utilities</span><span class="comment"> * Purpose: Commandline application to list info about a file.</span><span class="comment"> * Author: Frank Warmerdam, warmerdam@pobox.com</span><span class="comment"> *</span><span class="comment"> * ****************************************************************************</span><span class="comment"> * Copyright (c) 1998, Frank Warmerdam</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 "<a class="code" href="gdal_8h.html">gdal.h</a>"</span><span class="preprocessor">#include "ogr_srs_api.h"</span><span class="preprocessor">#include "<a class="code" href="cpl__string_8h.html">cpl_string.h</a>"</span><span class="preprocessor">#include "<a class="code" href="cpl__conv_8h.html">cpl_conv.h</a>"</span><span class="preprocessor">#include "cpl_multiproc.h"</span>CPL_CVSID(<span class="stringliteral">"$Id: gdalinfo.c 10646 2007-01-18 02:38:10Z warmerdam $"</span>);<span class="keyword">static</span> <span class="keywordtype">int</span> GDALInfoReportCorner( GDALDatasetH hDataset, <span class="keyword">const</span> <span class="keywordtype">char</span> * corner_name, <span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y );<span class="comment">/************************************************************************/</span><span class="comment">/* Usage() */</span><span class="comment">/************************************************************************/</span><span class="keywordtype">void</span> Usage(){ printf( <span class="stringliteral">"Usage: gdalinfo [--help-general] [-mm] [-stats] [-nogcp] [-nomd]\n"</span> <span class="stringliteral">" [-mdd domain]* datasetname\n"</span> ); exit( 1 );}<span class="comment">/************************************************************************/</span><span class="comment">/* main() */</span><span class="comment">/************************************************************************/</span><span class="keywordtype">int</span> main( <span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> ** argv ){ GDALDatasetH hDataset; GDALRasterBandH hBand; <span class="keywordtype">int</span> i, iBand; <span class="keywordtype">double</span> adfGeoTransform[6]; GDALDriverH hDriver; <span class="keywordtype">char</span> **papszMetadata; <span class="keywordtype">int</span> bComputeMinMax = FALSE, bSample = FALSE; <span class="keywordtype">int</span> bShowGCPs = TRUE, bShowMetadata = TRUE ; <span class="keywordtype">int</span> bStats = FALSE, iMDD; <span class="keyword">const</span> <span class="keywordtype">char</span> *pszFilename = NULL; <span class="keywordtype">char</span> **papszExtraMDDomains = NULL; <a class="code" href="gdal_8h.html#9d40bc998bd6ed07ccde96028e85ae26">GDALAllRegister</a>(); argc = <a class="code" href="gdal_8h.html#2b7575efeff58aeafc3d8e9170ff902b">GDALGeneralCmdLineProcessor</a>( argc, &argv, 0 ); <span class="keywordflow">if</span>( argc < 1 ) exit( -argc );<span class="comment">/* -------------------------------------------------------------------- */</span><span class="comment">/* Parse arguments. */</span><span class="comment">/* -------------------------------------------------------------------- */</span> <span class="keywordflow">for</span>( i = 1; i < argc; i++ ) { <span class="keywordflow">if</span>( EQUAL(argv[i], <span class="stringliteral">"-mm"</span>) ) bComputeMinMax = TRUE; <span class="keywordflow">else</span> <span class="keywordflow">if</span>( EQUAL(argv[i], <span class="stringliteral">"-stats"</span>) ) bStats = TRUE; <span class="keywordflow">else</span> <span class="keywordflow">if</span>( EQUAL(argv[i], <span class="stringliteral">"-sample"</span>) ) bSample = TRUE; <span class="keywordflow">else</span> <span class="keywordflow">if</span>( EQUAL(argv[i], <span class="stringliteral">"-nogcp"</span>) ) bShowGCPs = FALSE; <span class="keywordflow">else</span> <span class="keywordflow">if</span>( EQUAL(argv[i], <span class="stringliteral">"-nomd"</span>) ) bShowMetadata = FALSE; <span class="keywordflow">else</span> <span class="keywordflow">if</span>( EQUAL(argv[i], <span class="stringliteral">"-mdd"</span>) && i < argc-1 ) papszExtraMDDomains = CSLAddString( papszExtraMDDomains, argv[++i] ); <span class="keywordflow">else</span> <span class="keywordflow">if</span>( argv[i][0] == <span class="charliteral">'-'</span> ) Usage(); <span class="keywordflow">else</span> <span class="keywordflow">if</span>( pszFilename == NULL ) pszFilename = argv[i]; <span class="keywordflow">else</span> Usage(); } <span class="keywordflow">if</span>( pszFilename == NULL ) Usage();<span class="comment">/* -------------------------------------------------------------------- */</span><span class="comment">/* Open dataset. */</span><span class="comment">/* -------------------------------------------------------------------- */</span> hDataset = <a class="code" href="gdal_8h.html#e97be045eb4701183ad332ffce29745b">GDALOpen</a>( pszFilename, <a class="code" href="gdal_8h.html#045e3967c208993f70257bfd40c9f1d75a021a550b9d5640307d3c0e7e35b732">GA_ReadOnly</a> ); <span class="keywordflow">if</span>( hDataset == NULL ) { fprintf( stderr, <span class="stringliteral">"GDALOpen failed - %d\n%s\n"</span>, CPLGetLastErrorNo(), CPLGetLastErrorMsg() ); CSLDestroy( argv ); <a class="code" href="gdal_8h.html#2cdae7717eedb8be9a501eea37a2bbc9">GDALDumpOpenDatasets</a>( stderr ); <a class="code" href="gdal_8h.html#4769d3eda338f797b30405062deb9180">GDALDestroyDriverManager</a>(); CPLDumpSharedList( NULL ); exit( 1 ); } <span class="comment">/* -------------------------------------------------------------------- */</span><span class="comment">/* Report general info. */</span><span class="comment">/* -------------------------------------------------------------------- */</span> hDriver = <a class="code" href="gdal_8h.html#115e56894fda0a51ad99820b1bc38391">GDALGetDatasetDriver</a>( hDataset ); printf( <span class="stringliteral">"Driver: %s/%s\n"</span>, GDALGetDriverShortName( hDriver ), GDALGetDriverLongName( hDriver ) ); printf( <span class="stringliteral">"Size is %d, %d\n"</span>, <a class="code" href="gdal_8h.html#4ef08b38a70b6e04f25a81bd82ef0138">GDALGetRasterXSize</a>( hDataset ), <a class="code" href="gdal_8h.html#e0c0af31441c6bac994f35ac26c82f99">GDALGetRasterYSize</a>( hDataset ) );<span class="comment">/* -------------------------------------------------------------------- */</span><span class="comment">/* Report projection. */</span><span class="comment">/* -------------------------------------------------------------------- */</span> <span class="keywordflow">if</span>( <a class="code" href="gdal_8h.html#639a11014cf6c4ff30df6f21d5db9da2">GDALGetProjectionRef</a>( hDataset ) != NULL ) { OGRSpatialReferenceH hSRS; <span class="keywordtype">char</span> *pszProjection; pszProjection = (<span class="keywordtype">char</span> *) <a class="code" href="gdal_8h.html#639a11014cf6c4ff30df6f21d5db9da2">GDALGetProjectionRef</a>( hDataset ); hSRS = OSRNewSpatialReference(NULL); <span class="keywordflow">if</span>( OSRImportFromWkt( hSRS, &pszProjection ) == CE_None ) { <span class="keywordtype">char</span> *pszPrettyWkt = NULL; OSRExportToPrettyWkt( hSRS, &pszPrettyWkt, FALSE ); printf( <span class="stringliteral">"Coordinate System is:\n%s\n"</span>, pszPrettyWkt ); CPLFree( pszPrettyWkt ); } <span class="keywordflow">else</span> printf( <span class="stringliteral">"Coordinate System is `%s'\n"</span>, <a class="code" href="gdal_8h.html#639a11014cf6c4ff30df6f21d5db9da2">GDALGetProjectionRef</a>( hDataset ) ); OSRDestroySpatialReference( hSRS ); }<span class="comment">/* -------------------------------------------------------------------- */</span><span class="comment">/* Report Geotransform. */</span><span class="comment">/* -------------------------------------------------------------------- */</span> <span class="keywordflow">if</span>( <a class="code" href="gdal_8h.html#df94718221d264fc798043e13adf8c8f">GDALGetGeoTransform</a>( hDataset, adfGeoTransform ) == CE_None ) { <span class="keywordflow">if</span>( adfGeoTransform[2] == 0.0 && adfGeoTransform[4] == 0.0 ) { printf( <span class="stringliteral">"Origin = (%.15f,%.15f)\n"</span>, adfGeoTransform[0], adfGeoTransform[3] ); printf( <span class="stringliteral">"Pixel Size = (%.15f,%.15f)\n"</span>, adfGeoTransform[1], adfGeoTransform[5] ); } <span class="keywordflow">else</span> printf( <span class="stringliteral">"GeoTransform =\n"</span> <span class="stringliteral">" %.16g, %.16g, %.16g\n"</span>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -