本文整理汇总了C++中OGRGeometry::getCoordinateDimension方法的典型用法代码示例。如果您正苦于以下问题:C++ OGRGeometry::getCoordinateDimension方法的具体用法?C++ OGRGeometry::getCoordinateDimension怎么用?C++ OGRGeometry::getCoordinateDimension使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OGRGeometry
的用法示例。
在下文中一共展示了OGRGeometry::getCoordinateDimension方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ICreateFeature
OGRErr OGRGeoJSONWriteLayer::ICreateFeature( OGRFeature* poFeature )
{
VSILFILE* fp = poDS_->GetOutputFile();
if( NULL == poFeature )
{
CPLDebug( "GeoJSON", "Feature is null" );
return OGRERR_INVALID_HANDLE;
}
json_object* poObj = OGRGeoJSONWriteFeature( poFeature, bWriteBBOX, nCoordPrecision );
CPLAssert( NULL != poObj );
if( nOutCounter_ > 0 )
{
/* Separate "Feature" entries in "FeatureCollection" object. */
VSIFPrintfL( fp, ",\n" );
}
VSIFPrintfL( fp, "%s", json_object_to_json_string( poObj ) );
json_object_put( poObj );
++nOutCounter_;
OGRGeometry* poGeometry = poFeature->GetGeometryRef();
if ( bWriteBBOX && !poGeometry->IsEmpty() )
{
OGREnvelope3D sEnvelope;
poGeometry->getEnvelope(&sEnvelope);
if( poGeometry->getCoordinateDimension() == 3 )
bBBOX3D = TRUE;
sEnvelopeLayer.Merge(sEnvelope);
}
return OGRERR_NONE;
}
示例2: OGRGeoJSONWriteFeature
json_object* OGRGeoJSONWriteFeature( OGRFeature* poFeature, int bWriteBBOX, int nCoordPrecision )
{
CPLAssert( NULL != poFeature );
json_object* poObj = json_object_new_object();
CPLAssert( NULL != poObj );
json_object_object_add( poObj, "type",
json_object_new_string("Feature") );
/* -------------------------------------------------------------------- */
/* Write FID if available */
/* -------------------------------------------------------------------- */
if ( poFeature->GetFID() != OGRNullFID )
{
json_object_object_add( poObj, "id",
json_object_new_int64(poFeature->GetFID()) );
}
/* -------------------------------------------------------------------- */
/* Write feature attributes to GeoJSON "properties" object. */
/* -------------------------------------------------------------------- */
json_object* poObjProps = NULL;
poObjProps = OGRGeoJSONWriteAttributes( poFeature );
json_object_object_add( poObj, "properties", poObjProps );
/* -------------------------------------------------------------------- */
/* Write feature geometry to GeoJSON "geometry" object. */
/* Null geometries are allowed, according to the GeoJSON Spec. */
/* -------------------------------------------------------------------- */
json_object* poObjGeom = NULL;
OGRGeometry* poGeometry = poFeature->GetGeometryRef();
if ( NULL != poGeometry )
{
poObjGeom = OGRGeoJSONWriteGeometry( poGeometry, nCoordPrecision );
if ( bWriteBBOX && !poGeometry->IsEmpty() )
{
OGREnvelope3D sEnvelope;
poGeometry->getEnvelope(&sEnvelope);
json_object* poObjBBOX = json_object_new_array();
json_object_array_add(poObjBBOX,
json_object_new_double_with_precision(sEnvelope.MinX, nCoordPrecision));
json_object_array_add(poObjBBOX,
json_object_new_double_with_precision(sEnvelope.MinY, nCoordPrecision));
if (poGeometry->getCoordinateDimension() == 3)
json_object_array_add(poObjBBOX,
json_object_new_double_with_precision(sEnvelope.MinZ, nCoordPrecision));
json_object_array_add(poObjBBOX,
json_object_new_double_with_precision(sEnvelope.MaxX, nCoordPrecision));
json_object_array_add(poObjBBOX,
json_object_new_double_with_precision(sEnvelope.MaxY, nCoordPrecision));
if (poGeometry->getCoordinateDimension() == 3)
json_object_array_add(poObjBBOX,
json_object_new_double_with_precision(sEnvelope.MaxZ, nCoordPrecision));
json_object_object_add( poObj, "bbox", poObjBBOX );
}
}
json_object_object_add( poObj, "geometry", poObjGeom );
return poObj;
}
示例3: CreateFeature
OGRErr OGRGeoconceptLayer::CreateFeature( OGRFeature* poFeature )
{
OGRwkbGeometryType eGt;
OGRGeometry* poGeom;
int nextField, iGeom, nbGeom, isSingle;
poGeom= poFeature->GetGeometryRef();
if (poGeom == NULL)
{
CPLError( CE_Warning, CPLE_NotSupported,
"NULL geometry not supported in Geoconcept, feature skipped.\n");
return OGRERR_NONE;
}
eGt= poGeom->getGeometryType();
switch( eGt ) {
case wkbPoint :
case wkbPoint25D :
case wkbMultiPoint :
case wkbMultiPoint25D :
if( GetSubTypeKind_GCIO(_gcFeature)==vUnknownItemType_GCIO )
{
SetSubTypeKind_GCIO(_gcFeature,vPoint_GCIO);
}
else if( GetSubTypeKind_GCIO(_gcFeature)!=vPoint_GCIO )
{
CPLError( CE_Failure, CPLE_NotSupported,
"Can't write non ponctual feature in a ponctual Geoconcept layer %s.\n",
_poFeatureDefn->GetName());
return OGRERR_FAILURE;
}
break;
case wkbLineString :
case wkbLineString25D :
case wkbMultiLineString :
case wkbMultiLineString25D :
if( GetSubTypeKind_GCIO(_gcFeature)==vUnknownItemType_GCIO )
{
SetSubTypeKind_GCIO(_gcFeature,vLine_GCIO);
}
else if( GetSubTypeKind_GCIO(_gcFeature)!=vLine_GCIO )
{
CPLError( CE_Failure, CPLE_NotSupported,
"Can't write non linear feature in a linear Geoconcept layer %s.\n",
_poFeatureDefn->GetName());
return OGRERR_FAILURE;
}
break;
case wkbPolygon :
case wkbPolygon25D :
case wkbMultiPolygon :
case wkbMultiPolygon25D :
if( GetSubTypeKind_GCIO(_gcFeature)==vUnknownItemType_GCIO )
{
SetSubTypeKind_GCIO(_gcFeature,vPoly_GCIO);
}
else if( GetSubTypeKind_GCIO(_gcFeature)!=vPoly_GCIO )
{
CPLError( CE_Failure, CPLE_NotSupported,
"Can't write non polygonal feature in a polygonal Geoconcept layer %s.\n",
_poFeatureDefn->GetName());
return OGRERR_FAILURE;
}
break;
case wkbUnknown :
case wkbGeometryCollection :
case wkbGeometryCollection25D :
case wkbNone :
case wkbLinearRing :
default :
CPLError( CE_Warning, CPLE_AppDefined,
"Geometry type %s not supported in Geoconcept, feature skipped.\n",
OGRGeometryTypeToName(eGt) );
return OGRERR_NONE;
}
if( GetSubTypeDim_GCIO(_gcFeature)==vUnknown3D_GCIO )
{
if( poGeom->getCoordinateDimension()==3 )
{
SetSubTypeDim_GCIO(_gcFeature,v3D_GCIO);
}
else
{
SetSubTypeDim_GCIO(_gcFeature,v2D_GCIO);
}
}
switch( eGt ) {
case wkbPoint :
case wkbPoint25D :
nbGeom= 1;
isSingle= TRUE;
break;
case wkbMultiPoint :
case wkbMultiPoint25D :
nbGeom= ((OGRGeometryCollection*)poGeom)->getNumGeometries();
isSingle= FALSE;
break;
//.........这里部分代码省略.........
示例4: ICreateFeature
OGRErr OGRGeoJSONWriteLayer::ICreateFeature( OGRFeature* poFeature )
{
VSILFILE* fp = poDS_->GetOutputFile();
OGRFeature* poFeatureToWrite;
if( poCT_ != nullptr || bRFC7946_ )
{
poFeatureToWrite = new OGRFeature(poFeatureDefn_);
poFeatureToWrite->SetFrom( poFeature );
poFeatureToWrite->SetFID( poFeature->GetFID() );
OGRGeometry* poGeometry = poFeatureToWrite->GetGeometryRef();
if( poGeometry )
{
const char* const apszOptions[] = { "WRAPDATELINE=YES", nullptr };
OGRGeometry* poNewGeom =
OGRGeometryFactory::transformWithOptions(
poGeometry, poCT_, const_cast<char**>(apszOptions),
oTransformCache_);
if( poNewGeom == nullptr )
{
delete poFeatureToWrite;
return OGRERR_FAILURE;
}
OGREnvelope sEnvelope;
poNewGeom->getEnvelope(&sEnvelope);
if( sEnvelope.MinX < -180.0 || sEnvelope.MaxX > 180.0 ||
sEnvelope.MinY < -90.0 || sEnvelope.MaxY > 90.0 )
{
CPLError(CE_Failure, CPLE_AppDefined,
"Geometry extent outside of [-180.0,180.0]x[-90.0,90.0] bounds");
delete poFeatureToWrite;
return OGRERR_FAILURE;
}
poFeatureToWrite->SetGeometryDirectly( poNewGeom );
}
}
else
{
poFeatureToWrite = poFeature;
}
json_object* poObj =
OGRGeoJSONWriteFeature( poFeatureToWrite, oWriteOptions_ );
CPLAssert( nullptr != poObj );
if( nOutCounter_ > 0 )
{
/* Separate "Feature" entries in "FeatureCollection" object. */
VSIFPrintfL( fp, ",\n" );
}
VSIFPrintfL( fp, "%s", json_object_to_json_string( poObj ) );
json_object_put( poObj );
++nOutCounter_;
OGRGeometry* poGeometry = poFeatureToWrite->GetGeometryRef();
if( bWriteFC_BBOX && poGeometry != nullptr && !poGeometry->IsEmpty() )
{
OGREnvelope3D sEnvelope = OGRGeoJSONGetBBox( poGeometry,
oWriteOptions_ );
if( poGeometry->getCoordinateDimension() == 3 )
bBBOX3D = true;
if( !sEnvelopeLayer.IsInit() )
{
sEnvelopeLayer = sEnvelope;
}
else if( oWriteOptions_.bBBOXRFC7946 )
{
const bool bEnvelopeCrossAM = ( sEnvelope.MinX > sEnvelope.MaxX );
const bool bEnvelopeLayerCrossAM =
( sEnvelopeLayer.MinX > sEnvelopeLayer.MaxX );
if( bEnvelopeCrossAM )
{
if( bEnvelopeLayerCrossAM )
{
sEnvelopeLayer.MinX = std::min(sEnvelopeLayer.MinX,
sEnvelope.MinX);
sEnvelopeLayer.MaxX = std::max(sEnvelopeLayer.MaxX,
sEnvelope.MaxX);
}
else
{
if( sEnvelopeLayer.MinX > 0 )
{
sEnvelopeLayer.MinX = std::min(sEnvelopeLayer.MinX,
sEnvelope.MinX);
sEnvelopeLayer.MaxX = sEnvelope.MaxX;
}
else if( sEnvelopeLayer.MaxX < 0 )
{
sEnvelopeLayer.MaxX = std::max(sEnvelopeLayer.MaxX,
sEnvelope.MaxX);
sEnvelopeLayer.MinX = sEnvelope.MinX;
}
else
{
//.........这里部分代码省略.........
示例5: ICreateFeature
//.........这里部分代码省略.........
{
poDS->PrintLine( fp, "%s fid=\"F" CPL_FRMT_GIB "\">",
poFeatureDefn->GetName(),
poFeature->GetFID() );
}
else if (nGMLIdIndex >= 0 && poFeature->IsFieldSet( nGMLIdIndex ) )
{
poDS->PrintLine( fp, "%s fid=\"%s\">",
poFeatureDefn->GetName(),
poFeature->GetFieldAsString(nGMLIdIndex) );
}
else
{
poDS->PrintLine( fp, "%s fid=\"%s." CPL_FRMT_GIB "\">",
poFeatureDefn->GetName(),
poFeatureDefn->GetName(),
poFeature->GetFID() );
}
}
for( int iGeomField = 0; iGeomField < poFeatureDefn->GetGeomFieldCount(); iGeomField++ )
{
OGRGeomFieldDefn *poFieldDefn = poFeatureDefn->GetGeomFieldDefn(iGeomField);
// Write out Geometry - for now it isn't indented properly.
/* GML geometries don't like very much the concept of empty geometry */
OGRGeometry* poGeom = poFeature->GetGeomFieldRef(iGeomField);
if( poGeom != NULL && !poGeom->IsEmpty())
{
char *pszGeometry;
OGREnvelope3D sGeomBounds;
int nCoordDimension = poGeom->getCoordinateDimension();
poGeom->getEnvelope( &sGeomBounds );
if( bSameSRS )
poDS->GrowExtents( &sGeomBounds, nCoordDimension );
if (poGeom->getSpatialReference() == NULL && poFieldDefn->GetSpatialRef() != NULL)
poGeom->assignSpatialReference(poFieldDefn->GetSpatialRef());
if (bIsGML3Output && poDS->WriteFeatureBoundedBy())
{
bool bCoordSwap;
char* pszSRSName = GML_GetSRSName(poGeom->getSpatialReference(), poDS->IsLongSRSRequired(), &bCoordSwap);
char szLowerCorner[75], szUpperCorner[75];
if (bCoordSwap)
{
OGRMakeWktCoordinate(szLowerCorner, sGeomBounds.MinY, sGeomBounds.MinX, sGeomBounds.MinZ, nCoordDimension);
OGRMakeWktCoordinate(szUpperCorner, sGeomBounds.MaxY, sGeomBounds.MaxX, sGeomBounds.MaxZ, nCoordDimension);
}
else
{
OGRMakeWktCoordinate(szLowerCorner, sGeomBounds.MinX, sGeomBounds.MinY, sGeomBounds.MinZ, nCoordDimension);
OGRMakeWktCoordinate(szUpperCorner, sGeomBounds.MaxX, sGeomBounds.MaxY, sGeomBounds.MaxZ, nCoordDimension);
}
if (bWriteSpaceIndentation)
VSIFPrintfL(fp, " ");
poDS->PrintLine( fp, "<gml:boundedBy><gml:Envelope%s%s><gml:lowerCorner>%s</gml:lowerCorner><gml:upperCorner>%s</gml:upperCorner></gml:Envelope></gml:boundedBy>",
(nCoordDimension == 3) ? " srsDimension=\"3\"" : "",pszSRSName, szLowerCorner, szUpperCorner);
CPLFree(pszSRSName);
}
char** papszOptions = (bIsGML3Output) ? CSLAddString(NULL, "FORMAT=GML3") : NULL;