本文整理汇总了C++中OGR_SRSNode::GetNode方法的典型用法代码示例。如果您正苦于以下问题:C++ OGR_SRSNode::GetNode方法的具体用法?C++ OGR_SRSNode::GetNode怎么用?C++ OGR_SRSNode::GetNode使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OGR_SRSNode
的用法示例。
在下文中一共展示了OGR_SRSNode::GetNode方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Validate
//.........这里部分代码省略.........
}
}
else if( EQUAL(poNode->GetValue(),"AUTHORITY") )
{
OGRErr eErr = ValidateAuthority(poNode);
if (eErr != OGRERR_NONE)
return eErr;
}
else if( EQUAL(poNode->GetValue(),"AXIS") )
{
OGRErr eErr = ValidateAxis(poNode);
if (eErr != OGRERR_NONE)
return eErr;
}
else if( EQUAL(poNode->GetValue(),"EXTENSION") )
{
// We do not try to control the sub-organization of
// EXTENSION nodes.
}
else
{
CPLDebug( "OGRSpatialReference::Validate",
"Unexpected child for PROJCS `%s'.\n",
poNode->GetValue() );
return OGRERR_CORRUPT_DATA;
}
}
}
/* -------------------------------------------------------------------- */
/* Validate GEOGCS if found. */
/* -------------------------------------------------------------------- */
OGR_SRSNode *poGEOGCS = poRoot->GetNode( "GEOGCS" );
if( poGEOGCS != NULL )
{
OGR_SRSNode *poNode;
int i;
for( i = 1; i < poGEOGCS->GetChildCount(); i++ )
{
poNode = poGEOGCS->GetChild(i);
if( EQUAL(poNode->GetValue(),"DATUM") )
{
/* validated elsewhere */
}
else if( EQUAL(poNode->GetValue(),"PRIMEM") )
{
if( poNode->GetChildCount() < 2
|| poNode->GetChildCount() > 3 )
{
CPLDebug( "OGRSpatialReference::Validate",
"PRIMEM has wrong number of children (%d),"
"not 2 or 3 as expected.\n",
poNode->GetChildCount() );
return OGRERR_CORRUPT_DATA;
}
}
else if( EQUAL(poNode->GetValue(),"UNIT") )
{
OGRErr eErr = ValidateUnit(poNode);
if (eErr != OGRERR_NONE)
return eErr;
示例2: ValidateProjection
/**
* \brief Validate the current PROJECTION's arguments.
*
* @return OGRERR_NONE if the PROJECTION's arguments validate, an error code
* otherwise
*/
OGRErr OGRSpatialReference::ValidateProjection(OGR_SRSNode *poRoot)
{
OGR_SRSNode *poPROJCS = poRoot->GetNode( "PROJCS" );
if( poPROJCS == NULL )
return OGRERR_NONE;
if( poPROJCS->GetNode( "PROJECTION" ) == NULL )
{
CPLDebug( "OGRSpatialReference::Validate",
"PROJCS does not have PROJECTION subnode." );
return OGRERR_CORRUPT_DATA;
}
/* -------------------------------------------------------------------- */
/* Find the matching group in the proj and parms table. */
/* -------------------------------------------------------------------- */
const char *pszProjection;
int iOffset;
pszProjection = poPROJCS->GetNode("PROJECTION")->GetChild(0)->GetValue();
for( iOffset = 0;
papszProjWithParms[iOffset] != NULL
&& !EQUAL(papszProjWithParms[iOffset],pszProjection); )
{
while( papszProjWithParms[iOffset] != NULL )
iOffset++;
iOffset++;
}
if( papszProjWithParms[iOffset] == NULL )
return OGRERR_UNSUPPORTED_SRS;
iOffset++;
/* -------------------------------------------------------------------- */
/* Check all parameters, and verify they are in the permitted */
/* list. */
/* -------------------------------------------------------------------- */
int iNode;
for( iNode = 0; iNode < poPROJCS->GetChildCount(); iNode++ )
{
OGR_SRSNode *poParm = poPROJCS->GetChild(iNode);
int i;
const char *pszParmName;
if( !EQUAL(poParm->GetValue(),"PARAMETER") )
continue;
pszParmName = poParm->GetChild(0)->GetValue();
for( i = iOffset; papszProjWithParms[i] != NULL; i++ )
{
if( EQUAL(papszProjWithParms[i],pszParmName) )
break;
}
/* This parameter is not an exact match, is it an alias? */
if( papszProjWithParms[i] == NULL )
{
for( i = iOffset; papszProjWithParms[i] != NULL; i++ )
{
if( IsAliasFor(papszProjWithParms[i],pszParmName) )
break;
}
if( papszProjWithParms[i] == NULL )
{
CPLDebug( "OGRSpatialReference::Validate",
"PARAMETER %s for PROJECTION %s is not permitted.",
pszParmName, pszProjection );
return OGRERR_CORRUPT_DATA;
}
else
{
CPLDebug( "OGRSpatialReference::Validate",
"PARAMETER %s for PROJECTION %s is an alias for %s.",
pszParmName, pszProjection,
papszProjWithParms[i] );
return OGRERR_CORRUPT_DATA;
}
}
}
return OGRERR_NONE;
}