Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 5bbeced

Browse files
nyalldawsongithub-actions[bot]
authored andcommittedJan 7, 2022
When creating simple vector tile rules, default to using a
geometry_type($geometry)='Polygon' (or line, or marker) filter rule The vector tile specs don't mandate that a marker or line is only used to render a point/line feature, and instead convey that a marker should be rendered at the center of a polygon and a line should be used for the outline of a polygon. So in order to restrict markers/lines to ONLY being rendered for point/line features, we need to use an explicit filter
1 parent a9c699a commit 5bbeced

File tree

3 files changed

+34
-0
lines changed

3 files changed

+34
-0
lines changed
 

‎src/core/vectortile/qgsvectortilebasicrenderer.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,12 +324,15 @@ QList<QgsVectorTileBasicRendererStyle> QgsVectorTileBasicRenderer::simpleStyle(
324324
QgsMarkerSymbol *markerSymbol = new QgsMarkerSymbol( QgsSymbolLayerList() << markerSymbolLayer );
325325

326326
QgsVectorTileBasicRendererStyle st1( QStringLiteral( "Polygons" ), QString(), QgsWkbTypes::PolygonGeometry );
327+
st1.setFilterExpression( QStringLiteral( "geometry_type($geometry)='Polygon'" ) );
327328
st1.setSymbol( fillSymbol );
328329

329330
QgsVectorTileBasicRendererStyle st2( QStringLiteral( "Lines" ), QString(), QgsWkbTypes::LineGeometry );
331+
st2.setFilterExpression( QStringLiteral( "geometry_type($geometry)='Line'" ) );
330332
st2.setSymbol( lineSymbol );
331333

332334
QgsVectorTileBasicRendererStyle st3( QStringLiteral( "Points" ), QString(), QgsWkbTypes::PointGeometry );
335+
st3.setFilterExpression( QStringLiteral( "geometry_type($geometry)='Point'" ) );
333336
st3.setSymbol( markerSymbol );
334337

335338
QList<QgsVectorTileBasicRendererStyle> lst;

‎src/gui/vectortile/qgsvectortilebasiclabelingwidget.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,21 @@ void QgsVectorTileBasicLabelingWidget::addStyle( QgsWkbTypes::GeometryType geomT
380380
{
381381
QgsVectorTileBasicLabelingStyle style;
382382
style.setGeometryType( geomType );
383+
switch ( geomType )
384+
{
385+
case QgsWkbTypes::PointGeometry:
386+
style.setFilterExpression( QStringLiteral( "geometry_type($geometry)='Point'" ) );
387+
break;
388+
case QgsWkbTypes::LineGeometry:
389+
style.setFilterExpression( QStringLiteral( "geometry_type($geometry)='Line'" ) );
390+
break;
391+
case QgsWkbTypes::PolygonGeometry:
392+
style.setFilterExpression( QStringLiteral( "geometry_type($geometry)='Polygon'" ) );
393+
break;
394+
case QgsWkbTypes::UnknownGeometry:
395+
case QgsWkbTypes::NullGeometry:
396+
break;
397+
}
383398

384399
const int rows = mModel->rowCount();
385400
mModel->insertStyle( rows, style );

‎src/gui/vectortile/qgsvectortilebasicrendererwidget.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,22 @@ void QgsVectorTileBasicRendererWidget::addStyle( QgsWkbTypes::GeometryType geomT
383383
QgsVectorTileBasicRendererStyle style( QString(), QString(), geomType );
384384
style.setSymbol( QgsSymbol::defaultSymbol( geomType ) );
385385

386+
switch ( geomType )
387+
{
388+
case QgsWkbTypes::PointGeometry:
389+
style.setFilterExpression( QStringLiteral( "geometry_type($geometry)='Point'" ) );
390+
break;
391+
case QgsWkbTypes::LineGeometry:
392+
style.setFilterExpression( QStringLiteral( "geometry_type($geometry)='Line'" ) );
393+
break;
394+
case QgsWkbTypes::PolygonGeometry:
395+
style.setFilterExpression( QStringLiteral( "geometry_type($geometry)='Polygon'" ) );
396+
break;
397+
case QgsWkbTypes::UnknownGeometry:
398+
case QgsWkbTypes::NullGeometry:
399+
break;
400+
}
401+
386402
const int rows = mModel->rowCount();
387403
mModel->insertStyle( rows, style );
388404
viewStyles->selectionModel()->setCurrentIndex( mProxyModel->mapFromSource( mModel->index( rows, 0 ) ), QItemSelectionModel::ClearAndSelect );

0 commit comments

Comments
 (0)
Please sign in to comment.