void QXmppStreamFeatures::parse(const QDomElement &element) { m_bindMode = readFeature(element, "bind", ns_bind); m_sessionMode = readFeature(element, "session", ns_session); m_nonSaslAuthMode = readFeature(element, "auth", ns_authFeature); m_tlsMode = readFeature(element, "starttls", ns_tls); m_streamManagementMode = readFeature(element, "sm", ns_stream_management); // parse advertised compression methods QDomElement compression = element.firstChildElement("compression"); if (compression.namespaceURI() == ns_compressFeature) { QDomElement subElement = compression.firstChildElement("method"); while(!subElement.isNull()) { m_compressionMethods << subElement.text(); subElement = subElement.nextSiblingElement("method"); } } // parse advertised SASL Authentication mechanisms QDomElement mechs = element.firstChildElement("mechanisms"); if (mechs.namespaceURI() == ns_sasl) { QDomElement subElement = mechs.firstChildElement("mechanism"); while(!subElement.isNull()) { m_authMechanisms << subElement.text(); subElement = subElement.nextSiblingElement("mechanism"); } } }
osg::Group* readLayer(OGRLayer* ogrLayer, const std::string& name, bool useRandomColorByFeature, bool addGroupPerFeature) const { if (!ogrLayer) return 0; osg::Group* layer = new osg::Group; layer->setName(ogrLayer->GetLayerDefn()->GetName()); ogrLayer->ResetReading(); OGRFeature* ogrFeature = NULL; while ((ogrFeature = ogrLayer->GetNextFeature()) != NULL) { osg::Geode* feature = readFeature(ogrFeature, useRandomColorByFeature); if (feature) { if (addGroupPerFeature) { osg::Group* featureGroup = new osg::Group; featureGroup->addChild(feature); layer->addChild(featureGroup); } else { layer->addChild(feature); } } OGRFeature::DestroyFeature( ogrFeature ); } return layer; }
void readFeature(const char *name, std::vector<float> &feature ){ std::vector< std::vector<float> > features; readFeature( name, features ); if( features.size() != 1 ) std::cerr << "Warning in readFeature(): the number of features in " << name << " is not 1. (" << features.size() << ")" << std::endl; feature = features[0]; }
bool QgsOgrFeatureIterator::fetchFeature( QgsFeature& feature ) { feature.setValid( false ); if ( mClosed ) return false; if ( !P->mRelevantFieldsForNextFeature ) ensureRelevantFields(); if ( mRequest.filterType() == QgsFeatureRequest::FilterFid ) { OGRFeatureH fet = OGR_L_GetFeature( ogrLayer, FID_TO_NUMBER( mRequest.filterFid() ) ); if ( !fet ) { close(); return false; } if ( readFeature( fet, feature ) ) OGR_F_Destroy( fet ); feature.setValid( true ); close(); // the feature has been read: we have finished here return true; } OGRFeatureH fet; while (( fet = OGR_L_GetNextFeature( ogrLayer ) ) ) { if ( !readFeature( fet, feature ) ) continue; // we have a feature, end this cycle feature.setValid( true ); OGR_F_Destroy( fet ); return true; } // while QgsDebugMsg( "Feature is null" ); close(); return false; }
bool QgsOgrFeatureIterator::fetchFeatureWithId( QgsFeatureId id, QgsFeature &feature ) const { feature.setValid( false ); gdal::ogr_feature_unique_ptr fet; #if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(2,2,0) if ( !QgsOgrProviderUtils::canDriverShareSameDatasetAmongLayers( mSource->mDriverName ) ) { OGRLayerH nextFeatureBelongingLayer; bool found = false; // First pass: try to read from the last feature, in the hope the dataset // returns them in increasing feature id number (and as we use a std::set // for mFilterFids, we get them in increasing number by the iterator) // Second pass: reset before reading for ( int passNumber = 0; passNumber < 2; passNumber++ ) { while ( fet.reset( GDALDatasetGetNextFeature( mConn->ds, &nextFeatureBelongingLayer, nullptr, nullptr, nullptr ) ), fet ) { if ( nextFeatureBelongingLayer == mOgrLayer ) { if ( OGR_F_GetFID( fet.get() ) == FID_TO_NUMBER( id ) ) { found = true; break; } } } if ( found || passNumber == 1 ) { break; } GDALDatasetResetReading( mConn->ds ); } if ( !found ) { return false; } } else #endif { fet.reset( OGR_L_GetFeature( mOgrLayer, FID_TO_NUMBER( id ) ) ); } if ( !fet ) { return false; } if ( !readFeature( std::move( fet ), feature ) ) return false; feature.setValid( true ); geometryToDestinationCrs( feature, mTransform ); return true; }
bool QgsOgrFeatureIterator::fetchFeature( QgsFeature& feature ) { feature.setValid( false ); if ( mClosed ) return false; if ( mRequest.filterType() == QgsFeatureRequest::FilterFid ) { OGRFeatureH fet = OGR_L_GetFeature( ogrLayer, FID_TO_NUMBER( mRequest.filterFid() ) ); if ( !fet ) { close(); return false; } if ( readFeature( fet, feature ) ) OGR_F_Destroy( fet ); feature.setValid( true ); close(); // the feature has been read: we have finished here return true; } OGRFeatureH fet; while (( fet = OGR_L_GetNextFeature( ogrLayer ) ) ) { if ( !readFeature( fet, feature ) ) continue; if ( !mRequest.filterRect().isNull() && !feature.constGeometry() ) continue; // we have a feature, end this cycle feature.setValid( true ); OGR_F_Destroy( fet ); return true; } // while close(); return false; }
void QXmppStreamFeatures::parse(const QDomElement &element) { m_bindMode = readFeature(element, "bind", ns_bind); m_sessionMode = readFeature(element, "session", ns_session); m_nonSaslAuthMode = readFeature(element, "auth", ns_authFeature); m_tlsMode = readFeature(element, "starttls", ns_tls); // parse advertised compression methods QDomElement compression = element.firstChildElement("compression"); if (compression.namespaceURI() == ns_compressFeature) { QDomElement subElement = compression.firstChildElement("method"); while(!subElement.isNull()) { if (subElement.text() == QLatin1String("zlib")) m_compressionMethods << QXmppConfiguration::ZlibCompression; subElement = subElement.nextSiblingElement("method"); } } // parse advertised SASL Authentication mechanisms QDomElement mechs = element.firstChildElement("mechanisms"); if (mechs.namespaceURI() == ns_sasl) { QDomElement subElement = mechs.firstChildElement("mechanism"); while(!subElement.isNull()) { if (subElement.text() == QLatin1String("PLAIN")) m_authMechanisms << QXmppConfiguration::SASLPlain; else if (subElement.text() == QLatin1String("DIGEST-MD5")) m_authMechanisms << QXmppConfiguration::SASLDigestMD5; else if (subElement.text() == QLatin1String("ANONYMOUS")) m_authMechanisms << QXmppConfiguration::SASLAnonymous; else if (subElement.text() == QLatin1String("X-FACEBOOK-PLATFORM")) m_authMechanisms << QXmppConfiguration::SASLXFacebookPlatform; subElement = subElement.nextSiblingElement("mechanism"); } } }
bool QgsOgrFeatureIterator::checkFeature( gdal::ogr_feature_unique_ptr &fet, QgsFeature &feature ) { if ( !readFeature( std::move( fet ), feature ) ) return false; if ( !mFilterRect.isNull() && ( !feature.hasGeometry() || feature.geometry().isEmpty() ) ) return false; // we have a feature, end this cycle feature.setValid( true ); geometryToDestinationCrs( feature, mTransform ); return true; }
bool QgsOgrFeatureIterator::fetchFeatureWithId( QgsFeatureId id, QgsFeature& feature ) const { feature.setValid( false ); OGRFeatureH fet = OGR_L_GetFeature( ogrLayer, FID_TO_NUMBER( id ) ); if ( !fet ) { return false; } if ( readFeature( fet, feature ) ) OGR_F_Destroy( fet ); feature.setValid( true ); return true; }
bool QgsOgrFeatureIterator::fetchFeature( QgsFeature& feature ) { feature.setValid( false ); if ( mClosed || !ogrLayer ) return false; if ( mRequest.filterType() == QgsFeatureRequest::FilterFid ) { bool result = fetchFeatureWithId( mRequest.filterFid(), feature ); close(); // the feature has been read or was not found: we have finished here return result; } else if ( mRequest.filterType() == QgsFeatureRequest::FilterFids ) { while ( mFilterFidsIt != mFilterFids.constEnd() ) { QgsFeatureId nextId = *mFilterFidsIt; mFilterFidsIt++; if ( fetchFeatureWithId( nextId, feature ) ) return true; } close(); return false; } OGRFeatureH fet; while (( fet = OGR_L_GetNextFeature( ogrLayer ) ) ) { if ( !readFeature( fet, feature ) ) continue; else OGR_F_Destroy( fet ); if ( !mRequest.filterRect().isNull() && !feature.hasGeometry() ) continue; // we have a feature, end this cycle feature.setValid( true ); return true; } // while close(); return false; }
bool QgsOgrFeatureIterator::nextFeature( QgsFeature& feature ) { feature.setValid( false ); if ( mClosed ) return false; if ( !P->mRelevantFieldsForNextFeature ) ensureRelevantFields(); if ( mRequest.filterType() == QgsFeatureRequest::FilterFid ) { OGRFeatureH fet = OGR_L_GetFeature( P->ogrLayer, FID_TO_NUMBER( mRequest.filterFid() ) ); if ( !fet ) { close(); return false; } // skip features without geometry if ( !OGR_F_GetGeometryRef( fet ) && !P->mFetchFeaturesWithoutGeom ) { OGR_F_Destroy( fet ); close(); return false; } readFeature( fet, feature ); feature.setValid( true ); close(); // the feature has been read: we have finished here return true; } OGRFeatureH fet; QgsRectangle selectionRect; while (( fet = OGR_L_GetNextFeature( P->ogrLayer ) ) ) { // skip features without geometry if ( !P->mFetchFeaturesWithoutGeom && !OGR_F_GetGeometryRef( fet ) ) { OGR_F_Destroy( fet ); continue; } readFeature( fet, feature ); if ( mRequest.flags() & QgsFeatureRequest::ExactIntersect ) { //precise test for intersection with search rectangle //first make QgsRectangle from OGRPolygon OGREnvelope env; memset( &env, 0, sizeof( env ) ); if ( mSelectionRectangle ) OGR_G_GetEnvelope( mSelectionRectangle, &env ); if ( env.MinX != 0 || env.MinY != 0 || env.MaxX != 0 || env.MaxY != 0 ) //if envelope is invalid, skip the precise intersection test { selectionRect.set( env.MinX, env.MinY, env.MaxX, env.MaxY ); if ( !feature.geometry() || !feature.geometry()->intersects( selectionRect ) ) { OGR_F_Destroy( fet ); continue; } } } // we have a feature, end this cycle feature.setValid( true ); OGR_F_Destroy( fet ); return true; } // while QgsDebugMsg( "Feature is null" ); close(); return false; }
int main(int argc, char** argv){ if( argc != 3 ){ std::cerr << "usage: " << argv[0] << " [path] <registration_num>" << std::endl; exit( EXIT_FAILURE ); } const int file_num = atoi( argv[2] ); char tmpname[ 1000 ]; PCA pca( false ); std::vector< std::vector<float> > feature; for( int i=0; i<file_num; i++ ){ sprintf( tmpname, "%s/scene/Features/%05d.pcd", argv[1], i ); readFeature( tmpname, feature ); const int hist_num = feature.size(); for( int h=0; h<hist_num; h++ ){ //if( !if_zero_vec( feature[ h ] ) ){ pca.addData( feature[ h ] ); // std::vector<float> feature_rotate; // std::vector<float> feature_rotate_pre = feature[ h ]; // std::vector<float> feature_rotate_pre2; // for(int t=0;t<3;t++){ // rotateFeature90( feature_rotate,feature_rotate_pre,R_MODE_2); // pca.addData( feature_rotate ); // feature_rotate_pre = feature_rotate; // } // rotateFeature90( feature_rotate,feature[ h ],R_MODE_3); // pca.addData( feature_rotate ); // feature_rotate_pre = feature_rotate; // feature_rotate_pre2 = feature_rotate; // for(int t=0;t<3;t++){ // rotateFeature90( feature_rotate,feature_rotate_pre,R_MODE_2); // pca.addData( feature_rotate ); // feature_rotate_pre = feature_rotate; // } // rotateFeature90( feature_rotate,feature_rotate_pre2,R_MODE_3); // pca.addData( feature_rotate ); // feature_rotate_pre = feature_rotate; // feature_rotate_pre2 = feature_rotate; // for(int t=0;t<3;t++){ // rotateFeature90( feature_rotate,feature_rotate_pre,R_MODE_2); // pca.addData( feature_rotate ); // feature_rotate_pre = feature_rotate; // } // rotateFeature90( feature_rotate,feature_rotate_pre2,R_MODE_3); // pca.addData( feature_rotate ); // feature_rotate_pre = feature_rotate; // for(int t=0;t<3;t++){ // rotateFeature90( feature_rotate,feature_rotate_pre,R_MODE_2); // pca.addData( feature_rotate ); // feature_rotate_pre = feature_rotate; // } // rotateFeature90( feature_rotate,feature[ h ],R_MODE_1); // pca.addData( feature_rotate ); // feature_rotate_pre = feature_rotate; // for(int t=0;t<3;t++){ // rotateFeature90( feature_rotate,feature_rotate_pre,R_MODE_2); // pca.addData( feature_rotate ); // feature_rotate_pre = feature_rotate; // } // rotateFeature90( feature_rotate,feature[ h ],R_MODE_4); // pca.addData( feature_rotate ); // feature_rotate_pre = feature_rotate; // for(int t=0;t<3;t++){ // rotateFeature90( feature_rotate,feature_rotate_pre,R_MODE_2); // pca.addData( feature_rotate ); // feature_rotate_pre = feature_rotate; // } //} } } //* solve PCA and write results pca.solve(); sprintf( tmpname, "%s/scene/pca_result", argv[1] ); pca.write( tmpname, ASCII_MODE_P ); return 0; }