本文整理汇总了C++中OGRFeature::GetGeometryRef方法的典型用法代码示例。如果您正苦于以下问题:C++ OGRFeature::GetGeometryRef方法的具体用法?C++ OGRFeature::GetGeometryRef怎么用?C++ OGRFeature::GetGeometryRef使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OGRFeature
的用法示例。
在下文中一共展示了OGRFeature::GetGeometryRef方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: while
OGRFeature *OGRGMELayer::GetNextFeature()
{
OGRFeature *poFeature = NULL;
while( TRUE )
{
poFeature = GetNextRawFeature();
if( poFeature == NULL )
break;
// incremeted in GetNextRawFeature()
// m_nFeaturesRead++;
if( (m_poFilterGeom == NULL
|| poFeature->GetGeometryRef() == NULL
|| FilterGeometry( poFeature->GetGeometryRef() ) )
&& (m_poAttrQuery == NULL
|| m_poAttrQuery->Evaluate( poFeature )) )
break;
delete poFeature;
}
return poFeature;
}
示例2: GetNextFeature
OGRFeature* OGRGeoJSONLayer::GetNextFeature()
{
while ( iterCurrent_ != seqFeatures_.end() )
{
OGRFeature* poFeature = (*iterCurrent_);
CPLAssert( NULL != poFeature );
++iterCurrent_;
if((m_poFilterGeom == NULL
|| FilterGeometry( poFeature->GetGeometryRef() ) )
&& (m_poAttrQuery == NULL
|| m_poAttrQuery->Evaluate( poFeature )) )
{
OGRFeature* poFeatureCopy = poFeature->Clone();
CPLAssert( NULL != poFeatureCopy );
if (poFeatureCopy->GetGeometryRef() != NULL && GetSpatialRef() != NULL)
{
poFeatureCopy->GetGeometryRef()->assignSpatialReference( GetSpatialRef() );
}
return poFeatureCopy;
}
}
return NULL;
}
示例3: if
/**********************************************************************
* IMapInfoFile::GetNextFeature()
*
* Standard OGR GetNextFeature implementation. This method is used
* to retrieve the next OGRFeature.
**********************************************************************/
OGRFeature *IMapInfoFile::GetNextFeature()
{
OGRFeature *poFeatureRef;
OGRGeometry *poGeom;
GIntBig nFeatureId;
while( (nFeatureId = GetNextFeatureId(m_nCurFeatureId)) != -1 )
{
poFeatureRef = GetFeatureRef(nFeatureId);
if (poFeatureRef == NULL)
return NULL;
else if( (m_poFilterGeom == NULL ||
((poGeom = poFeatureRef->GetGeometryRef()) != NULL &&
FilterGeometry( poGeom )))
&& (m_poAttrQuery == NULL
|| m_poAttrQuery->Evaluate( poFeatureRef )) )
{
// Avoid cloning feature... return the copy owned by the class
CPLAssert(poFeatureRef == m_poCurFeature);
m_poCurFeature = NULL;
if( poFeatureRef->GetGeometryRef() != NULL )
poFeatureRef->GetGeometryRef()->assignSpatialReference(GetSpatialRef());
return poFeatureRef;
}
}
return NULL;
}
示例4: GetNextFeature
OGRFeature* GTMWaypointLayer::GetNextFeature()
{
if( bError )
return nullptr;
while (poDS->hasNextWaypoint())
{
Waypoint* poWaypoint = poDS->fetchNextWaypoint();
if (poWaypoint == nullptr)
{
CPLError(CE_Failure, CPLE_AppDefined,
"Could not read waypoint. File probably corrupted");
bError = true;
return nullptr;
}
OGRFeature* poFeature = new OGRFeature( poFeatureDefn );
double altitude = poWaypoint->getAltitude();
if (altitude == 0.0)
poFeature->SetGeometryDirectly(new OGRPoint
(poWaypoint->getLongitude(),
poWaypoint->getLatitude()));
else
poFeature->SetGeometryDirectly(new OGRPoint
(poWaypoint->getLongitude(),
poWaypoint->getLatitude(),
altitude));
if (poSRS)
poFeature->GetGeometryRef()->assignSpatialReference(poSRS);
poFeature->SetField( NAME, poWaypoint->getName());
poFeature->SetField( COMMENT, poWaypoint->getComment());
poFeature->SetField( ICON, poWaypoint->getIcon());
GIntBig wptdate = poWaypoint->getDate();
if (wptdate != 0)
{
struct tm brokendownTime;
CPLUnixTimeToYMDHMS(wptdate, &brokendownTime);
poFeature->SetField( DATE,
brokendownTime.tm_year + 1900,
brokendownTime.tm_mon + 1,
brokendownTime.tm_mday,
brokendownTime.tm_hour,
brokendownTime.tm_min,
static_cast<float>(brokendownTime.tm_sec));
}
poFeature->SetFID( nNextFID++ );
delete poWaypoint;
if( (m_poFilterGeom == nullptr
|| FilterGeometry( poFeature->GetGeometryRef() ) )
&& (m_poAttrQuery == nullptr
|| m_poAttrQuery->Evaluate( poFeature )) )
return poFeature;
delete poFeature;
}
return nullptr;
}
示例5: while
OGRFeature *OGRKMLLayer::GetNextFeature()
{
#ifndef HAVE_EXPAT
return NULL;
#else
/* -------------------------------------------------------------------- */
/* Loop till we find a feature matching our criteria. */
/* -------------------------------------------------------------------- */
KML *poKMLFile = poDS_->GetKMLFile();
if( poKMLFile == NULL )
return NULL;
poKMLFile->selectLayer(nLayerNumber_);
while( true )
{
Feature *poFeatureKML = NULL;
poFeatureKML = poKMLFile->getFeature(iNextKMLId_++, nLastAsked, nLastCount);
if(poFeatureKML == NULL)
return NULL;
CPLAssert( poFeatureKML != NULL );
OGRFeature *poFeature = new OGRFeature( poFeatureDefn_ );
if(poFeatureKML->poGeom)
{
poFeature->SetGeometryDirectly(poFeatureKML->poGeom);
poFeatureKML->poGeom = NULL;
}
// Add fields
poFeature->SetField( poFeatureDefn_->GetFieldIndex("Name"), poFeatureKML->sName.c_str() );
poFeature->SetField( poFeatureDefn_->GetFieldIndex("Description"), poFeatureKML->sDescription.c_str() );
poFeature->SetFID( iNextKMLId_ - 1 );
// Clean up
delete poFeatureKML;
if( poFeature->GetGeometryRef() != NULL && poSRS_ != NULL)
{
poFeature->GetGeometryRef()->assignSpatialReference( poSRS_ );
}
/* Check spatial/attribute filters */
if ((m_poFilterGeom == NULL || FilterGeometry( poFeature->GetGeometryRef() ) ) &&
(m_poAttrQuery == NULL || m_poAttrQuery->Evaluate( poFeature )) )
{
// Return the feature
return poFeature;
}
else
{
delete poFeature;
}
}
#endif /* HAVE_EXPAT */
}
示例6: OGR2SQLITE_ogr_geocode_set_result
static
void OGR2SQLITE_ogr_geocode_set_result(sqlite3_context* pContext,
OGRLayerH hLayer,
const char* pszField)
{
if( hLayer == NULL )
sqlite3_result_null (pContext);
else
{
OGRLayer* poLayer = (OGRLayer*)hLayer;
OGRFeatureDefn* poFDefn = poLayer->GetLayerDefn();
OGRFeature* poFeature = poLayer->GetNextFeature();
int nIdx = -1;
if( poFeature == NULL )
sqlite3_result_null (pContext);
else if( strcmp(pszField, "geometry") == 0 &&
poFeature->GetGeometryRef() != NULL )
{
GByte* pabyGeomBLOB = NULL;
int nGeomBLOBLen = 0;
if( OGRSQLiteLayer::ExportSpatiaLiteGeometry(
poFeature->GetGeometryRef(), 4326, wkbNDR, FALSE, FALSE, FALSE,
&pabyGeomBLOB,
&nGeomBLOBLen ) != CE_None )
{
sqlite3_result_null (pContext);
}
else
{
sqlite3_result_blob (pContext, pabyGeomBLOB, nGeomBLOBLen, CPLFree);
}
}
else if( (nIdx = poFDefn->GetFieldIndex(pszField)) >= 0 &&
poFeature->IsFieldSet(nIdx) )
{
OGRFieldType eType = poFDefn->GetFieldDefn(nIdx)->GetType();
if( eType == OFTInteger )
sqlite3_result_int(pContext,
poFeature->GetFieldAsInteger(nIdx));
else if( eType == OFTInteger64 )
sqlite3_result_int64(pContext,
poFeature->GetFieldAsInteger64(nIdx));
else if( eType == OFTReal )
sqlite3_result_double(pContext,
poFeature->GetFieldAsDouble(nIdx));
else
sqlite3_result_text(pContext,
poFeature->GetFieldAsString(nIdx),
-1, SQLITE_TRANSIENT);
}
else
sqlite3_result_null (pContext);
delete poFeature;
OGRGeocodeFreeResult(hLayer);
}
}
示例7: GetNextUnfilteredFeature
OGRFeature *OGRS57Layer::GetNextUnfilteredFeature()
{
OGRFeature *poFeature = NULL;
/* -------------------------------------------------------------------- */
/* Are we out of modules to request features from? */
/* -------------------------------------------------------------------- */
if( nCurrentModule >= poDS->GetModuleCount() )
return NULL;
/* -------------------------------------------------------------------- */
/* Set the current position on the current module and fetch a */
/* feature. */
/* -------------------------------------------------------------------- */
S57Reader *poReader = poDS->GetModule(nCurrentModule);
if( poReader != NULL )
{
poReader->SetNextFEIndex( nNextFEIndex, nRCNM );
poFeature = poReader->ReadNextFeature( poFeatureDefn );
nNextFEIndex = poReader->GetNextFEIndex( nRCNM );
}
/* -------------------------------------------------------------------- */
/* If we didn't get a feature we need to move onto the next file. */
/* -------------------------------------------------------------------- */
if( poFeature == NULL )
{
nCurrentModule++;
poReader = poDS->GetModule(nCurrentModule);
if( poReader != NULL && poReader->GetModule() == NULL )
{
if( !poReader->Open( FALSE ) )
return NULL;
}
return GetNextUnfilteredFeature();
}
else
{
m_nFeaturesRead++;
if( poFeature->GetGeometryRef() != NULL )
poFeature->GetGeometryRef()->assignSpatialReference(
GetSpatialRef() );
}
return poFeature;
}
示例8:
OGRFeature *OGRTigerLayer::GetFeature( GIntBig nFeatureId )
{
if( nFeatureId < 1 || nFeatureId > nFeatureCount )
return NULL;
/* -------------------------------------------------------------------- */
/* If we don't have the current module open for the requested */
/* data, then open it now. */
/* -------------------------------------------------------------------- */
if( iLastModule == -1
|| nFeatureId <= panModuleOffset[iLastModule]
|| nFeatureId > panModuleOffset[iLastModule+1] )
{
for( iLastModule = 0;
iLastModule < poDS->GetModuleCount()
&& nFeatureId > panModuleOffset[iLastModule+1];
iLastModule++ ) {}
if( !poReader->SetModule( poDS->GetModule(iLastModule) ) )
{
return NULL;
}
}
/* -------------------------------------------------------------------- */
/* Fetch the feature associated with the record. */
/* -------------------------------------------------------------------- */
OGRFeature *poFeature;
poFeature =
poReader->GetFeature( (int)nFeatureId-panModuleOffset[iLastModule]-1 );
if( poFeature != NULL )
{
poFeature->SetFID( nFeatureId );
if( poFeature->GetGeometryRef() != NULL )
poFeature->GetGeometryRef()->assignSpatialReference(
poDS->GetSpatialRef() );
poFeature->SetField( 0, poReader->GetShortModule() );
m_nFeaturesRead++;
}
return poFeature;
}
示例9: GetLayerDefn
OGRFeature *OGRGFTLayer::GetNextFeature()
{
GetLayerDefn();
while( true )
{
if (nNextInSeq < nOffset ||
nNextInSeq >= nOffset + static_cast<int>(aosRows.size()))
{
if (bEOF)
return nullptr;
nOffset += static_cast<int>(aosRows.size());
if (!FetchNextRows())
return nullptr;
}
OGRFeature *poFeature = GetNextRawFeature();
if (poFeature == nullptr)
return nullptr;
if((m_poFilterGeom == nullptr
|| FilterGeometry( poFeature->GetGeometryRef() ) )
&& (m_poAttrQuery == nullptr
|| m_poAttrQuery->Evaluate( poFeature )) )
{
return poFeature;
}
else
delete poFeature;
}
}
示例10: GetLayerDefn
OGRFeature *OGRGFTLayer::GetNextFeature()
{
OGRFeature *poFeature;
GetLayerDefn();
while(TRUE)
{
if (nNextInSeq < nOffset ||
nNextInSeq >= nOffset + (int)aosRows.size())
{
if (bEOF)
return NULL;
nOffset += aosRows.size();
if (!FetchNextRows())
return NULL;
}
poFeature = GetNextRawFeature();
if (poFeature == NULL)
return NULL;
if((m_poFilterGeom == NULL
|| FilterGeometry( poFeature->GetGeometryRef() ) )
&& (m_poAttrQuery == NULL
|| m_poAttrQuery->Evaluate( poFeature )) )
{
return poFeature;
}
else
delete poFeature;
}
}
示例11: run
void GDALParceling::run()
{
DM::GDALSystem * city = this->getGDALData("city");
cityblocks.setCurrentGDALSystem(city);
parcels.setCurrentGDALSystem(city);
cityblocks.resetReading();
OGRFeature *poFeature;
int counter = 0;
while( (poFeature = cityblocks.getNextFeature()) != NULL ) {
counter++;
char* geo;
poFeature->GetGeometryRef()->exportToWkt(&geo);
std::auto_ptr< SFCGAL::Geometry > g( SFCGAL::io::readWkt(geo));
switch ( g->geometryTypeId() ) {
case SFCGAL::TYPE_POLYGON:
break;
default:
continue;
}
SFCGAL::Polygon poly = g->as<SFCGAL::Polygon>();
//Transfer to GDAL polygon
Polygon_with_holes_2 p = poly.toPolygon_with_holes_2(true);
splitePoly(p);
}
parcels.syncAlteredFeatures();
DM::Logger(DM::Debug) << this->counter_added;
}
示例12: ResetReading
OGRFeature *OGROGDILayer::GetNextFeature()
{
OGRFeature *poFeature;
/* Reset reading if we are not the current layer */
/* WARNING : this does not allow interleaved reading of layers */
if( m_poODS->GetCurrentLayer() != this )
{
m_poODS->SetCurrentLayer(this);
ResetReading();
}
while( true )
{
poFeature = GetNextRawFeature();
if( poFeature == NULL )
return NULL;
/* -------------------------------------------------------------------- */
/* Do we need to apply an attribute test? */
/* -------------------------------------------------------------------- */
if( (m_poAttrQuery != NULL
&& !m_poAttrQuery->Evaluate( poFeature ) )
|| (m_poFilterGeom != NULL
&& !FilterGeometry( poFeature->GetGeometryRef() ) ) )
{
m_nFilteredOutShapes ++;
delete poFeature;
}
else
return poFeature;
}
}
示例13: while
OGRFeature *OGRHTFLayer::GetNextFeature()
{
OGRFeature *poFeature;
if (fpHTF == NULL || bEOF)
return NULL;
while(!bEOF)
{
poFeature = GetNextRawFeature();
if (poFeature == NULL)
return NULL;
if((m_poFilterGeom == NULL
|| FilterGeometry( poFeature->GetGeometryRef() ) )
&& (m_poAttrQuery == NULL
|| m_poAttrQuery->Evaluate( poFeature )) )
{
return poFeature;
}
else
delete poFeature;
}
return NULL;
}
示例14: while
OGRFeature *OGRPCIDSKLayer::GetNextFeature()
{
OGRFeature *poFeature = NULL;
/* -------------------------------------------------------------------- */
/* Read features till we find one that satisfies our current */
/* spatial criteria. */
/* -------------------------------------------------------------------- */
while( TRUE )
{
poFeature = GetNextUnfilteredFeature();
if( poFeature == NULL )
break;
if( (m_poFilterGeom == NULL
|| FilterGeometry( poFeature->GetGeometryRef() ) )
&& (m_poAttrQuery == NULL
|| m_poAttrQuery->Evaluate( poFeature )) )
break;
delete poFeature;
}
return poFeature;
}
示例15: while
OGRFeature *OGRTigerLayer::GetNextFeature()
{
/* -------------------------------------------------------------------- */
/* Read features till we find one that satisfies our current */
/* spatial criteria. */
/* -------------------------------------------------------------------- */
while( iLastFeatureId < nFeatureCount )
{
OGRFeature *poFeature = GetFeature( ++iLastFeatureId );
if( poFeature == NULL )
break;
if( (m_poFilterGeom == NULL
|| FilterGeometry( poFeature->GetGeometryRef() ) )
&& (m_poAttrQuery == NULL
|| m_poAttrQuery->Evaluate( poFeature )) )
return poFeature;
delete poFeature;
}
return NULL;
}