[GRASS] distinguish symbol for left/right broken boundary

This commit is contained in:
Radim Blazek 2015-10-16 17:26:52 +02:00
parent 7f731ae309
commit 3c85c7ec95
3 changed files with 23 additions and 15 deletions

View File

@ -38,16 +38,18 @@ QgsGrassEditRenderer::QgsGrassEditRenderer()
QHash<int, QColor> colors;
//colors.insert( QgsGrassVectorMap::TopoUndefined, QColor( 125, 125, 125 ) );
colors.insert( QgsGrassVectorMap::TopoLine, QColor( Qt::black ) );
colors.insert( QgsGrassVectorMap::TopoBoundary0, QColor( Qt::red ) );
colors.insert( QgsGrassVectorMap::TopoBoundary1, QColor( 255, 125, 0 ) );
colors.insert( QgsGrassVectorMap::TopoBoundary2, QColor( Qt::green ) );
colors.insert( QgsGrassVectorMap::TopoBoundaryError, QColor( Qt::red ) );
colors.insert( QgsGrassVectorMap::TopoBoundaryErrorLeft, QColor( 255, 125, 0 ) );
colors.insert( QgsGrassVectorMap::TopoBoundaryErrorRight, QColor( 255, 125, 0 ) );
colors.insert( QgsGrassVectorMap::TopoBoundaryOk, QColor( Qt::green ) );
QHash<int, QString> labels;
//labels.insert( QgsGrassVectorMap::TopoUndefined, "Unknown type" );
labels.insert( QgsGrassVectorMap::TopoLine, "Line" );
labels.insert( QgsGrassVectorMap::TopoBoundary0, "Boundary (isolated)" );
labels.insert( QgsGrassVectorMap::TopoBoundary1, "Boundary (area on one side)" );
labels.insert( QgsGrassVectorMap::TopoBoundary2, "Boundary (areas on both sides)" );
labels.insert( QgsGrassVectorMap::TopoBoundaryError, "Boundary (topological error on both sides)" );
labels.insert( QgsGrassVectorMap::TopoBoundaryErrorLeft, "Boundary (topological error on the left side)" );
labels.insert( QgsGrassVectorMap::TopoBoundaryErrorRight, "Boundary (topological error on the right side)" );
labels.insert( QgsGrassVectorMap::TopoBoundaryOk, "Boundary (correct)" );
QgsCategoryList categoryList;
@ -129,8 +131,9 @@ QgsSymbolV2* QgsGrassEditRenderer::symbolForFeature( QgsFeature& feature, QgsRen
{
symbol = mMarkerRenderer->symbolForFeature( feature, context );
}
else if ( symbolCode == QgsGrassVectorMap::TopoLine || symbolCode == QgsGrassVectorMap::TopoBoundary0 ||
symbolCode == QgsGrassVectorMap::TopoBoundary1 || symbolCode == QgsGrassVectorMap::TopoBoundary2 )
else if ( symbolCode == QgsGrassVectorMap::TopoLine || symbolCode == QgsGrassVectorMap::TopoBoundaryError ||
symbolCode == QgsGrassVectorMap::TopoBoundaryErrorLeft || symbolCode == QgsGrassVectorMap::TopoBoundaryErrorRight ||
symbolCode == QgsGrassVectorMap::TopoBoundaryOk )
{
symbol = mLineRenderer->symbolForFeature( feature, context );
}

View File

@ -782,15 +782,19 @@ QgsGrassVectorMap::TopoSymbol QgsGrassVectorMap::topoSymbol( int lid )
Vect_get_line_areas( mMap, lid, &left, &right );
if ( left != 0 && right != 0 )
{
symbol = TopoBoundary2;
symbol = TopoBoundaryOk;
}
else if ( left == 0 && right == 0 )
{
symbol = TopoBoundary0;
symbol = TopoBoundaryError;
}
else
else if ( left == 0 )
{
symbol = TopoBoundary1;
symbol = TopoBoundaryErrorLeft;
}
else if ( right == 0 )
{
symbol = TopoBoundaryErrorRight;
}
}
QgsDebugMsgLevel( QString( "lid = %1 type = %2 symbol = %3" ).arg( lid ).arg( type ).arg( symbol ), 3 );

View File

@ -34,9 +34,10 @@ class GRASS_LIB_EXPORT QgsGrassVectorMap : public QObject
TopoUndefined = 0,
TopoPoint,
TopoLine,
TopoBoundary0,
TopoBoundary1,
TopoBoundary2,
TopoBoundaryError, // both sides topology broken
TopoBoundaryErrorLeft, // left side topology broken
TopoBoundaryErrorRight, // right side topology broken
TopoBoundaryOk,
TopoCentroidIn,
TopoCentroidOut,
TopoCentroidDupl,