本文整理汇总了C++中QgsVectorLayer::dataProvider方法的典型用法代码示例。如果您正苦于以下问题:C++ QgsVectorLayer::dataProvider方法的具体用法?C++ QgsVectorLayer::dataProvider怎么用?C++ QgsVectorLayer::dataProvider使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QgsVectorLayer
的用法示例。
在下文中一共展示了QgsVectorLayer::dataProvider方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: fromLayer
void TestQgsHistogram::fromLayer()
{
QgsHistogram h;
QVERIFY( !h.setValues( 0, QString() ) );
QgsVectorLayer *layer = new QgsVectorLayer( QStringLiteral( "Point?field=col1:real" ), QStringLiteral( "layer" ), QStringLiteral( "memory" ) );
QVERIFY( layer->isValid() );
QgsFeatureList features;
for ( int i = 1; i <= 10; ++i )
{
QgsFeature f( layer->dataProvider()->fields(), i );
f.setAttribute( QStringLiteral( "col1" ), i );
features << f;
}
layer->dataProvider()->addFeatures( features );
QVERIFY( !h.setValues( layer, QString() ) );
QVERIFY( h.setValues( layer, QString( "col1" ) ) );
QList<int>counts = h.counts( 5 );
QList<int> expected;
expected << 2 << 2 << 2 << 2 << 2;
QCOMPARE( counts, expected );
delete layer;
}
示例2: testSnapOnIntersection
void testSnapOnIntersection()
{
// testing with a layer with two crossing linestrings
// (0,1) x x (1,1)
// \/
// /\ .
// (0,0) x x (1,0)
QgsVectorLayer* vl = new QgsVectorLayer( QStringLiteral( "LineString" ), QStringLiteral( "x" ), QStringLiteral( "memory" ) );
QgsPolyline polyline1, polyline2;
polyline1 << QgsPoint( 0, 0 ) << QgsPoint( 1, 1 );
polyline2 << QgsPoint( 1, 0 ) << QgsPoint( 0, 1 );
QgsFeature f1;
QgsGeometry f1g = QgsGeometry::fromPolyline( polyline1 ) ;
f1.setGeometry( f1g );
QgsFeature f2;
QgsGeometry f2g = QgsGeometry::fromPolyline( polyline2 );
f2.setGeometry( f2g );
QgsFeatureList flist;
flist << f1 << f2;
vl->dataProvider()->addFeatures( flist );
QVERIFY( vl->dataProvider()->featureCount() == 2 );
QgsMapSettings mapSettings;
mapSettings.setOutputSize( QSize( 100, 100 ) );
mapSettings.setExtent( QgsRectangle( 0, 0, 1, 1 ) );
QVERIFY( mapSettings.hasValidSettings() );
QgsSnappingUtils u;
u.setMapSettings( mapSettings );
QgsSnappingConfig snappingConfig = u.config();
snappingConfig.setMode( QgsSnappingConfig::AdvancedConfiguration );
QgsSnappingConfig::IndividualLayerSettings layerSettings( true, QgsSnappingConfig::Vertex, 0.1, QgsTolerance::ProjectUnits );
snappingConfig.setIndividualLayerSettings( vl, layerSettings );
u.setConfig( snappingConfig );
// no snapping on intersections by default - should find nothing
QgsPointLocator::Match m = u.snapToMap( QgsPoint( 0.45, 0.5 ) );
QVERIFY( !m.isValid() );
snappingConfig.setIntersectionSnapping( true );
u.setConfig( snappingConfig );
QgsPointLocator::Match m2 = u.snapToMap( QgsPoint( 0.45, 0.5 ) );
QVERIFY( m2.isValid() );
QCOMPARE( m2.type(), QgsPointLocator::Vertex );
QCOMPARE( m2.point(), QgsPoint( 0.5, 0.5 ) );
delete vl;
}
示例3: updateLayerList
void QgsOfflineEditingPluginGui::updateLayerList( bool filterEditableLayers )
{
ui_layerList->clear();
QMap<QString, QgsMapLayer*> mapLayers = QgsMapLayerRegistry::instance()->mapLayers();
for ( QMap<QString, QgsMapLayer*>::iterator layer_it = mapLayers.begin() ; layer_it != mapLayers.end(); ++layer_it )
{
if ( layer_it.value()->type() == QgsMapLayer::VectorLayer )
{
QgsVectorLayer* layer = qobject_cast<QgsVectorLayer*>( layer_it.value() );
bool showLayer = true;
if ( filterEditableLayers )
{
int cap = layer->dataProvider()->capabilities();
showLayer = ( cap & QgsVectorDataProvider::AddFeatures ) &&
( cap & QgsVectorDataProvider::DeleteFeatures ) &&
( cap & QgsVectorDataProvider::ChangeAttributeValues ) &&
( cap & QgsVectorDataProvider::AddAttributes ) &&
( cap & QgsVectorDataProvider::ChangeGeometries );
}
if ( showLayer )
{
QListWidgetItem* item = new QListWidgetItem( layer->name(), ui_layerList );
item->setData( Qt::UserRole, QVariant( layer_it.key() ) );
}
}
}
}
示例4: prefixIsValid
bool QgsZonalStatisticsDialog::prefixIsValid( const QString& prefix ) const
{
QgsVectorLayer* vl = polygonLayer();
if ( !vl )
{
return false;
}
QgsVectorDataProvider* dp = vl->dataProvider();
if ( !dp )
{
return false;
}
const QgsFields& providerFields = dp->fields();
QString currentFieldName;
for ( int idx = 0; idx < providerFields.count(); ++idx )
{
currentFieldName = providerFields[idx].name();
if ( currentFieldName == ( prefix + "mean" ) || currentFieldName == ( prefix + "sum" ) || currentFieldName == ( prefix + "count" ) )
{
return false;
}
}
return true;
}
示例5: insertAvailableLayers
void QgsZonalStatisticsDialog::insertAvailableLayers()
{
//insert available raster layers
//enter available layers into the combo box
QMap<QString, QgsMapLayer*> mapLayers = QgsMapLayerRegistry::instance()->mapLayers();
QMap<QString, QgsMapLayer*>::iterator layer_it = mapLayers.begin();
for ( ; layer_it != mapLayers.end(); ++layer_it )
{
QgsRasterLayer* rl = dynamic_cast<QgsRasterLayer*>( layer_it.value() );
if ( rl )
{
QgsRasterDataProvider* rp = rl->dataProvider();
if ( rp && rp->name() == "gdal" )
{
mRasterLayerComboBox->addItem( rl->name(), QVariant( rl->id() ) );
}
}
else
{
QgsVectorLayer* vl = dynamic_cast<QgsVectorLayer*>( layer_it.value() );
if ( vl && vl->geometryType() == QGis::Polygon )
{
QgsVectorDataProvider* provider = vl->dataProvider();
if ( provider->capabilities() & QgsVectorDataProvider::AddAttributes )
{
mPolygonLayerComboBox->addItem( vl->name(), QVariant( vl->id() ) );
}
}
}
}
}
示例6: on_mcbLayers_selectItem
void RgLineVectorLayerSettingsWidget::on_mcbLayers_selectItem()
{
mcbDirection->clear();
mcbSpeed->clear();
mcbDirection->insertItem( 0, tr( "Always use default" ) );
mcbSpeed->insertItem( 0, tr( "Always use default" ) );
QgsVectorLayer* vl = selectedLayer();
if ( !vl )
return;
QgsVectorDataProvider* provider = vl->dataProvider();
if ( !provider )
return;
const QgsFields& fields = provider->fields();
for ( int idx = 0; idx < fields.count(); ++idx )
{
const QgsField& currentField = fields[idx];
QVariant currentType = currentField.type();
if ( currentType == QVariant::Int || currentType == QVariant::String )
{
mcbDirection->insertItem( 1, currentField.name() );
}
if ( currentType == QVariant::Int || currentType == QVariant::Double )
{
mcbSpeed->insertItem( 1, currentField.name() );
}
}
} // RgDSettingsDlg::on_mcbLayers_selectItem()
示例7: addToPopupMenu
void QgsLegendLayerFile::addToPopupMenu( QMenu& theMenu, QAction* toggleEditingAction )
{
QgsMapLayer* lyr = layer();
// zoom to layer extent
theMenu.addAction( QgisApp::getThemeIcon( "/mActionZoomToLayer.png" ),
tr( "&Zoom to layer extent" ), legend(), SLOT( legendLayerZoom() ) );
// show in overview
QAction* showInOverviewAction = theMenu.addAction( tr( "&Show in overview" ), this, SLOT( showInOverview() ) );
showInOverviewAction->setCheckable( true );
showInOverviewAction->blockSignals( true );
showInOverviewAction->setChecked( mLyr.isInOverview() );
showInOverviewAction->blockSignals( false );
// remove from canvas
theMenu.addAction( QgisApp::getThemeIcon( "/mActionRemove.png" ),
tr( "&Remove" ), legend(), SLOT( legendLayerRemove() ) );
theMenu.addSeparator();
if ( lyr->type() == QgsMapLayer::VectorLayer )
{
QgsVectorLayer* vlayer = dynamic_cast<QgsVectorLayer*>( lyr );
// attribute table
theMenu.addAction( tr( "&Open attribute table" ), this, SLOT( table() ) );
// editing
int cap = vlayer->dataProvider()->capabilities();
if ( cap & QgsVectorDataProvider::EditingCapabilities )
{
if ( toggleEditingAction )
{
theMenu.addAction( toggleEditingAction );
}
}
// save as shapefile
theMenu.addAction( tr( "Save as shapefile..." ), this, SLOT( saveAsShapefile() ) );
QAction* saveSelectionAction = theMenu.addAction( tr( "Save selection as shapefile..." ), this, SLOT( saveSelectionAsShapefile() ) );
if ( vlayer->selectedFeatureCount() == 0 )
{
saveSelectionAction->setEnabled( false );
}
theMenu.addSeparator();
}
else if ( lyr->type() == QgsMapLayer::RasterLayer )
{
// TODO: what was this for?
//QgsRasterLayer* rlayer = dynamic_cast<QgsRasterLayer*>(lyr);
//theMenu.addAction(tr("&Convert to..."), rlayer, SLOT(convertTo()));
}
// properties goes on bottom of menu for consistency with normal ui standards
// e.g. kde stuff
theMenu.addAction( tr( "&Properties" ), legend(), SLOT( legendLayerShowProperties() ) );
}
示例8: mapLayer
QgsVectorLayer* RgExportDlg::mapLayer() const
{
QgsVectorLayer* myLayer = NULL;
QString layerId = mcbLayers->itemData( mcbLayers->currentIndex() ).toString();
if ( layerId == "-1" )
{
// create a temporary layer
myLayer = new QgsVectorLayer( QString( "LineString?crs=epsg:4326&memoryid=%1" ).arg( QUuid::createUuid().toString() ), "shortest path", "memory" );
QgsVectorDataProvider *prov = myLayer->dataProvider();
if ( prov == NULL )
return NULL;
QList<QgsField> attrList;
attrList.append( QgsField( "length", QVariant::Double, "", 20, 8 ) );
attrList.append( QgsField( "time", QVariant::Double, "", 20, 8 ) );
prov->addAttributes( attrList );
myLayer->updateFields();
QList<QgsMapLayer *> myList;
myList << myLayer;
QgsMapLayerRegistry::instance()->addMapLayers( myList );
}
else
{
// return selected layer
myLayer = dynamic_cast<QgsVectorLayer*>( QgsMapLayerRegistry::instance()->mapLayer( layerId ) );
}
return myLayer;
} // QgsVectorLayer* RgExportDlg::vectorLayer() const
示例9: prefixIsValid
bool QgsZonalStatisticsDialog::prefixIsValid( const QString& prefix ) const
{
QgsVectorLayer* vl = polygonLayer();
if ( !vl )
{
return false;
}
QgsVectorDataProvider* dp = vl->dataProvider();
if ( !dp )
{
return false;
}
QgsFieldMap providerFieldMap = dp->fields();
QgsFieldMap::const_iterator it = providerFieldMap.constBegin();
QString currentFieldName;
for ( ; it != providerFieldMap.constEnd(); ++it )
{
currentFieldName = it.value().name();
if ( currentFieldName == ( prefix + "mean" ) || currentFieldName == ( prefix + "sum" ) || currentFieldName == ( prefix + "count" ) )
{
return false;
}
}
return true;
}
示例10: prefixIsValid
bool QgsZonalStatisticsDialog::prefixIsValid( const QString& prefix ) const
{
QgsVectorLayer* vl = polygonLayer();
if ( !vl )
{
return false;
}
QgsVectorDataProvider* dp = vl->dataProvider();
if ( !dp )
{
return false;
}
QString currentFieldName;
Q_FOREACH ( const QgsField& field, dp->fields() )
{
currentFieldName = field.name();
if ( currentFieldName == ( prefix + "mean" ) || currentFieldName == ( prefix + "sum" ) || currentFieldName == ( prefix + "count" ) )
{
return false;
}
}
return true;
}
示例11: boundingBoxOfLayers
QgsRectangle QgsInterpolationDialog::boundingBoxOfLayers()
{
int nLayers = mLayersTreeWidget->topLevelItemCount();
QgsRectangle combinedLayerExtent;
for ( int i = 0; i < nLayers; ++i )
{
QString layerName = mLayersTreeWidget->topLevelItem( i )->text( 0 );
QgsVectorLayer* theVectorLayer = vectorLayerFromName( layerName );
if ( !theVectorLayer )
{
continue;
}
QgsVectorDataProvider* theProvider = theVectorLayer->dataProvider();
if ( !theProvider )
{
continue;
}
//update extent
QgsRectangle currentLayerExtent = theVectorLayer->extent();
if ( combinedLayerExtent.isEmpty() )
{
combinedLayerExtent = currentLayerExtent;
}
else
{
combinedLayerExtent.combineExtentWith( ¤tLayerExtent );
}
}
return combinedLayerExtent;
}
示例12: readXML
int QgsUniqueValueRenderer::readXML( const QDomNode& rnode, QgsVectorLayer& vl )
{
mGeometryType = vl.geometryType();
QDomNode classnode = rnode.namedItem( "classificationfield" );
QString classificationField = classnode.toElement().text();
QgsVectorDataProvider* theProvider = vl.dataProvider();
if ( !theProvider )
{
return 1;
}
int classificationId = vl.fieldNameIndex( classificationField );
if ( classificationId == -1 )
{
//go on. Because with joins, it might be the joined layer is not loaded yet
}
setClassificationField( classificationId );
QDomNode symbolnode = rnode.namedItem( "symbol" );
while ( !symbolnode.isNull() )
{
QgsSymbol* msy = new QgsSymbol( mGeometryType );
msy->readXML( symbolnode, &vl );
insertValue( msy->lowerValue(), msy );
symbolnode = symbolnode.nextSibling();
}
updateSymbolAttributes();
vl.setRenderer( this );
return 0;
}
示例13: snapPolygonToPolygon
void TestQgsGeometrySnapper::snapPolygonToPolygon()
{
QgsVectorLayer* rl = new QgsVectorLayer( QStringLiteral( "Polygon" ), QStringLiteral( "x" ), QStringLiteral( "memory" ) );
QgsFeature ff( 0 );
QgsGeometry refGeom = QgsGeometry::fromWkt( QStringLiteral( "Polygon((0 0, 10 0, 10 10, 0 10, 0 0))" ) );
ff.setGeometry( refGeom );
QgsFeatureList flist;
flist << ff;
rl->dataProvider()->addFeatures( flist );
QgsGeometry polygonGeom = QgsGeometry::fromWkt( QStringLiteral( "Polygon((0.1 -0.1, 10.1 0, 9.9 10.1, 0 10, 0.1 -0.1))" ) );
QgsGeometrySnapper snapper( rl );
QgsGeometry result = snapper.snapGeometry( polygonGeom, 1 );
QCOMPARE( result.exportToWkt(), QStringLiteral( "Polygon ((0 0, 10 0, 10 10, 0 10, 0 0))" ) );
QgsGeometry polygonGeom2 = QgsGeometry::fromWkt( QStringLiteral( "Polygon((0.1 -0.1, 10.1 0, 0 10, 0.1 -0.1))" ) );
result = snapper.snapGeometry( polygonGeom2, 1 );
QCOMPARE( result.exportToWkt(), QStringLiteral( "Polygon ((0 0, 10 0, 0 10, 0 0))" ) );
// insert new vertex
QgsGeometry polygonGeom3 = QgsGeometry::fromWkt( QStringLiteral( "Polygon((0.1 -0.1, 20.5 0.5, 20 10, 0 9.9, 0.1 -0.1))" ) );
result = snapper.snapGeometry( polygonGeom3, 1 );
QCOMPARE( result.exportToWkt(), QStringLiteral( "Polygon ((0 0, 10 0, 20.5 0.5, 20 10, 10 10, 0 10, 0 0))" ) );
// remove vertex
QgsGeometry polygonGeom4 = QgsGeometry::fromWkt( QStringLiteral( "Polygon((0.1 -0.1, 10.1 0, 9.9 10.1, 5 10, 0 10, 0.1 -0.1))" ) );
result = snapper.snapGeometry( polygonGeom4, 1 );
QCOMPARE( result.exportToWkt(), QStringLiteral( "Polygon ((0 0, 10 0, 10 10, 0 10, 0 0))" ) );
}
示例14: director
const RgGraphDirector* RoadGraphPlugin::director() const
{
QString layerId;
QgsVectorLayer *layer = NULL;
QMap< QString, QgsMapLayer* > mapLayers = QgsMapLayerRegistry::instance()->mapLayers();
QMap< QString, QgsMapLayer* >::const_iterator it;
for ( it = mapLayers.begin(); it != mapLayers.end(); ++it )
{
if ( it.value()->name() != mSettings->mLayer )
continue;
layerId = it.key();
layer = dynamic_cast< QgsVectorLayer* >( it.value() );
break;
}
if ( layer == NULL )
return NULL;
QgsVectorDataProvider *provider = dynamic_cast< QgsVectorDataProvider* >( layer->dataProvider() );
if ( provider == NULL )
return NULL;
RgLineVectorLayerDirector * director =
new RgLineVectorLayerDirector( layerId,
provider->fieldNameIndex( mSettings->mDirection ),
mSettings->mFirstPointToLastPointDirectionVal,
mSettings->mLastPointToFirstPointDirectionVal,
mSettings->mBothDirectionVal,
mSettings->mDefaultDirection,
mSettings->mSpeedUnitName,
provider->fieldNameIndex( mSettings->mSpeed ),
mSettings->mDefaultSpeed );
return director;
}
示例15: resetEditActions
void QgsGrassPlugin::resetEditActions()
{
QgsDebugMsg( "Entered" );
QgsGrassProvider* grassProvider = 0;
QgsVectorLayer *vectorLayer = qobject_cast<QgsVectorLayer *>( qGisInterface->activeLayer() );
if ( vectorLayer )
{
grassProvider = dynamic_cast<QgsGrassProvider*>( vectorLayer->dataProvider() );
}
if ( grassProvider && vectorLayer->editBuffer() )
{
mAddFeatureAction->setVisible( false );
mAddPointAction->setVisible( true );
mAddLineAction->setVisible( true );
mAddBoundaryAction->setVisible( true );
mAddCentroidAction->setVisible( true );
mAddAreaAction->setVisible( true );
}
else
{
mAddFeatureAction->setVisible( true );
mAddPointAction->setVisible( false );
mAddLineAction->setVisible( false );
mAddBoundaryAction->setVisible( false );
mAddCentroidAction->setVisible( false );
mAddAreaAction->setVisible( false );
}
}