mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-25 00:58:06 -05:00
[pal] Improved test for candidate against polygon obstacles
Previous test was just checking point in polygon for the corner, mid points and center. This test was not sufficient for narrow or small polygons which were not covered by these points but were still covering parts of the label candidate. Now, the area of the intersection between the obstacle polygon and the label candidate is used to calculate the obstacle cost.
This commit is contained in:
parent
fe3e07eadb
commit
f9fa9793f0
@ -61,7 +61,7 @@ namespace pal
|
||||
{
|
||||
case PolygonInterior:
|
||||
// n ranges from 0 -> 12
|
||||
n = lp->getNumPointsInPolygon( obstacle );
|
||||
n = lp->polygonIntersectionCost( obstacle );
|
||||
break;
|
||||
case PolygonBoundary:
|
||||
// penalty may need tweaking, given that interior mode ranges up to 12
|
||||
|
@ -574,36 +574,52 @@ namespace pal
|
||||
return false;
|
||||
}
|
||||
|
||||
int LabelPosition::getNumPointsInPolygon( PointSet *polygon ) const
|
||||
int LabelPosition::polygonIntersectionCost( PointSet *polygon ) const
|
||||
{
|
||||
int a, k, count = 0;
|
||||
double px, py;
|
||||
if ( !mGeos )
|
||||
createGeosGeom();
|
||||
|
||||
// check each corner
|
||||
for ( k = 0; k < 4; k++ )
|
||||
if ( !polygon->mGeos )
|
||||
polygon->createGeosGeom();
|
||||
|
||||
GEOSContextHandle_t geosctxt = geosContext();
|
||||
|
||||
int cost = 0;
|
||||
//check the label center. if covered by polygon, initial cost of 4
|
||||
if ( polygon->containsPoint(( x[0] + x[2] ) / 2.0, ( y[0] + y[2] ) / 2.0 ) )
|
||||
cost += 4;
|
||||
|
||||
try
|
||||
{
|
||||
px = x[k];
|
||||
py = y[k];
|
||||
//calculate proportion of label candidate which is covered by polygon
|
||||
GEOSGeometry* intersectionGeom = GEOSIntersection_r( geosctxt, mGeos, polygon->mGeos );
|
||||
if ( !intersectionGeom )
|
||||
return cost;
|
||||
|
||||
for ( a = 0; a < 2; a++ ) // and each middle of segment
|
||||
double positionArea = 0;
|
||||
if ( GEOSArea_r( geosctxt, mGeos, &positionArea ) != 1 )
|
||||
{
|
||||
if ( polygon->containsPoint( px, py ) )
|
||||
count++;
|
||||
px = ( x[k] + x[( k+1 ) %4] ) / 2.0;
|
||||
py = ( y[k] + y[( k+1 ) %4] ) / 2.0;
|
||||
GEOSGeom_destroy_r( geosctxt, intersectionGeom );
|
||||
return cost;
|
||||
}
|
||||
|
||||
double intersectionArea = 0;
|
||||
if ( GEOSArea_r( geosctxt, intersectionGeom, &intersectionArea ) != 1 )
|
||||
{
|
||||
intersectionArea = 0;
|
||||
}
|
||||
|
||||
GEOSGeom_destroy_r( geosctxt, intersectionGeom );
|
||||
|
||||
double portionCovered = intersectionArea / positionArea;
|
||||
cost += ceil( portionCovered * 8.0 ); //cost of 8 if totally covered
|
||||
return cost;
|
||||
}
|
||||
catch ( GEOSException &e )
|
||||
{
|
||||
QgsMessageLog::logMessage( QObject::tr( "Exception: %1" ).arg( e.what() ), QObject::tr( "GEOS" ) );
|
||||
return cost;
|
||||
}
|
||||
|
||||
px = ( x[0] + x[2] ) / 2.0;
|
||||
py = ( y[0] + y[2] ) / 2.0;
|
||||
|
||||
// and the label center
|
||||
if ( polygon->containsPoint( px, py ) )
|
||||
count += 4; // virtually 4 points
|
||||
|
||||
// TODO: count with nextFeature
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
} // end namespace
|
||||
|
@ -133,8 +133,10 @@ namespace pal
|
||||
/** Returns true if this label crosses the boundary of the specified polygon */
|
||||
bool crossesBoundary( PointSet* polygon ) const;
|
||||
|
||||
/** Returns number of intersections with polygon (testing border and center) */
|
||||
int getNumPointsInPolygon( PointSet* polygon ) const;
|
||||
/** Returns cost of position intersection with polygon (testing area of intersection and center).
|
||||
* Cost ranges between 0 and 12, with extra cost if center of label position is covered.
|
||||
*/
|
||||
int polygonIntersectionCost( PointSet* polygon ) const;
|
||||
|
||||
/** Shift the label by specified offset */
|
||||
void offsetPosition( double xOffset, double yOffset );
|
||||
|
@ -123,6 +123,16 @@ class TestPointPlacement(TestPlacementBase):
|
||||
self.removeMapLayer(self.layer)
|
||||
self.layer = None
|
||||
|
||||
def test_point_placement_narrow_polygon_obstacle(self):
|
||||
# Default point label placement with narrow polygon obstacle
|
||||
self.layer = TestQgsPalLabeling.loadFeatureLayer('point')
|
||||
polyLayer = TestQgsPalLabeling.loadFeatureLayer('narrow_polygon')
|
||||
self._TestMapSettings = self.cloneMapSettings(self._MapSettings)
|
||||
self.checkTest()
|
||||
self.removeMapLayer(self.layer)
|
||||
self.removeMapLayer(polyLayer)
|
||||
self.layer = None
|
||||
|
||||
if __name__ == '__main__':
|
||||
# NOTE: unless PAL_SUITE env var is set all test class methods will be run
|
||||
# SEE: test_qgspallabeling_tests.suiteTests() to define suite
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 2.6 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
336
tests/testdata/labeling/narrow_polygon.qml
vendored
Normal file
336
tests/testdata/labeling/narrow_polygon.qml
vendored
Normal file
@ -0,0 +1,336 @@
|
||||
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
|
||||
<qgis version="2.11.0-Master" minimumScale="0" maximumScale="1e+08" simplifyDrawingHints="1" minLabelScale="0" maxLabelScale="1e+08" simplifyDrawingTol="1" simplifyMaxScale="1" hasScaleBasedVisibilityFlag="0" simplifyLocal="1" scaleBasedLabelVisibilityFlag="0">
|
||||
<edittypes>
|
||||
<edittype widgetv2type="TextEdit" name="pkuid">
|
||||
<widgetv2config IsMultiline="0" fieldEditable="1" UseHtml="0" labelOnTop="0"/>
|
||||
</edittype>
|
||||
<edittype widgetv2type="TextEdit" name="text">
|
||||
<widgetv2config IsMultiline="0" fieldEditable="1" UseHtml="0" labelOnTop="0"/>
|
||||
</edittype>
|
||||
</edittypes>
|
||||
<renderer-v2 forceraster="0" symbollevels="0" type="singleSymbol">
|
||||
<symbols>
|
||||
<symbol alpha="1" clip_to_extent="1" type="fill" name="0">
|
||||
<layer pass="0" class="SimpleFill" locked="0">
|
||||
<prop k="border_width_map_unit_scale" v="0,0"/>
|
||||
<prop k="color" v="0,0,0,255"/>
|
||||
<prop k="joinstyle" v="bevel"/>
|
||||
<prop k="offset" v="0,0"/>
|
||||
<prop k="offset_map_unit_scale" v="0,0"/>
|
||||
<prop k="offset_unit" v="MM"/>
|
||||
<prop k="outline_color" v="0,0,0,255"/>
|
||||
<prop k="outline_style" v="no"/>
|
||||
<prop k="outline_width" v="0.26"/>
|
||||
<prop k="outline_width_unit" v="MM"/>
|
||||
<prop k="style" v="solid"/>
|
||||
<effect enabled="0" type="effectStack">
|
||||
<effect type="dropShadow">
|
||||
<prop k="blend_mode" v="13"/>
|
||||
<prop k="blur_level" v="10"/>
|
||||
<prop k="color" v="0,0,0,255"/>
|
||||
<prop k="draw_mode" v="2"/>
|
||||
<prop k="enabled" v="0"/>
|
||||
<prop k="offset_angle" v="135"/>
|
||||
<prop k="offset_distance" v="2"/>
|
||||
<prop k="offset_unit" v="MM"/>
|
||||
<prop k="offset_unit_scale" v="0,0"/>
|
||||
<prop k="transparency" v="0"/>
|
||||
</effect>
|
||||
<effect type="outerGlow">
|
||||
<prop k="blend_mode" v="0"/>
|
||||
<prop k="blur_level" v="3"/>
|
||||
<prop k="color_type" v="0"/>
|
||||
<prop k="draw_mode" v="2"/>
|
||||
<prop k="enabled" v="0"/>
|
||||
<prop k="single_color" v="255,255,255,255"/>
|
||||
<prop k="spread" v="2"/>
|
||||
<prop k="spread_unit" v="MM"/>
|
||||
<prop k="spread_unit_scale" v="0,0"/>
|
||||
<prop k="transparency" v="0.5"/>
|
||||
</effect>
|
||||
<effect type="drawSource">
|
||||
<prop k="blend_mode" v="0"/>
|
||||
<prop k="draw_mode" v="2"/>
|
||||
<prop k="enabled" v="1"/>
|
||||
<prop k="transparency" v="0"/>
|
||||
</effect>
|
||||
<effect type="innerShadow">
|
||||
<prop k="blend_mode" v="13"/>
|
||||
<prop k="blur_level" v="10"/>
|
||||
<prop k="color" v="0,0,0,255"/>
|
||||
<prop k="draw_mode" v="2"/>
|
||||
<prop k="enabled" v="0"/>
|
||||
<prop k="offset_angle" v="135"/>
|
||||
<prop k="offset_distance" v="2"/>
|
||||
<prop k="offset_unit" v="MM"/>
|
||||
<prop k="offset_unit_scale" v="0,0"/>
|
||||
<prop k="transparency" v="0"/>
|
||||
</effect>
|
||||
<effect type="innerGlow">
|
||||
<prop k="blend_mode" v="0"/>
|
||||
<prop k="blur_level" v="3"/>
|
||||
<prop k="color_type" v="0"/>
|
||||
<prop k="draw_mode" v="2"/>
|
||||
<prop k="enabled" v="0"/>
|
||||
<prop k="single_color" v="255,255,255,255"/>
|
||||
<prop k="spread" v="2"/>
|
||||
<prop k="spread_unit" v="MM"/>
|
||||
<prop k="spread_unit_scale" v="0,0"/>
|
||||
<prop k="transparency" v="0.5"/>
|
||||
</effect>
|
||||
</effect>
|
||||
</layer>
|
||||
</symbol>
|
||||
</symbols>
|
||||
<rotation/>
|
||||
<sizescale scalemethod="diameter"/>
|
||||
<effect enabled="0" type="effectStack">
|
||||
<effect type="dropShadow">
|
||||
<prop k="blend_mode" v="13"/>
|
||||
<prop k="blur_level" v="10"/>
|
||||
<prop k="color" v="0,0,0,255"/>
|
||||
<prop k="draw_mode" v="2"/>
|
||||
<prop k="enabled" v="0"/>
|
||||
<prop k="offset_angle" v="135"/>
|
||||
<prop k="offset_distance" v="2"/>
|
||||
<prop k="offset_unit" v="MM"/>
|
||||
<prop k="offset_unit_scale" v="0,0"/>
|
||||
<prop k="transparency" v="0"/>
|
||||
</effect>
|
||||
<effect type="outerGlow">
|
||||
<prop k="blend_mode" v="0"/>
|
||||
<prop k="blur_level" v="3"/>
|
||||
<prop k="color_type" v="0"/>
|
||||
<prop k="draw_mode" v="2"/>
|
||||
<prop k="enabled" v="0"/>
|
||||
<prop k="single_color" v="255,255,255,255"/>
|
||||
<prop k="spread" v="2"/>
|
||||
<prop k="spread_unit" v="MM"/>
|
||||
<prop k="spread_unit_scale" v="0,0"/>
|
||||
<prop k="transparency" v="0.5"/>
|
||||
</effect>
|
||||
<effect type="drawSource">
|
||||
<prop k="blend_mode" v="0"/>
|
||||
<prop k="draw_mode" v="2"/>
|
||||
<prop k="enabled" v="1"/>
|
||||
<prop k="transparency" v="0"/>
|
||||
</effect>
|
||||
<effect type="innerShadow">
|
||||
<prop k="blend_mode" v="13"/>
|
||||
<prop k="blur_level" v="10"/>
|
||||
<prop k="color" v="0,0,0,255"/>
|
||||
<prop k="draw_mode" v="2"/>
|
||||
<prop k="enabled" v="0"/>
|
||||
<prop k="offset_angle" v="135"/>
|
||||
<prop k="offset_distance" v="2"/>
|
||||
<prop k="offset_unit" v="MM"/>
|
||||
<prop k="offset_unit_scale" v="0,0"/>
|
||||
<prop k="transparency" v="0"/>
|
||||
</effect>
|
||||
<effect type="innerGlow">
|
||||
<prop k="blend_mode" v="0"/>
|
||||
<prop k="blur_level" v="3"/>
|
||||
<prop k="color_type" v="0"/>
|
||||
<prop k="draw_mode" v="2"/>
|
||||
<prop k="enabled" v="0"/>
|
||||
<prop k="single_color" v="255,255,255,255"/>
|
||||
<prop k="spread" v="2"/>
|
||||
<prop k="spread_unit" v="MM"/>
|
||||
<prop k="spread_unit_scale" v="0,0"/>
|
||||
<prop k="transparency" v="0.5"/>
|
||||
</effect>
|
||||
</effect>
|
||||
</renderer-v2>
|
||||
<customproperties>
|
||||
<property key="labeling" value="pal"/>
|
||||
<property key="labeling/addDirectionSymbol" value="false"/>
|
||||
<property key="labeling/angleOffset" value="0"/>
|
||||
<property key="labeling/blendMode" value="0"/>
|
||||
<property key="labeling/bufferBlendMode" value="0"/>
|
||||
<property key="labeling/bufferColorA" value="255"/>
|
||||
<property key="labeling/bufferColorB" value="255"/>
|
||||
<property key="labeling/bufferColorG" value="255"/>
|
||||
<property key="labeling/bufferColorR" value="255"/>
|
||||
<property key="labeling/bufferDraw" value="false"/>
|
||||
<property key="labeling/bufferJoinStyle" value="64"/>
|
||||
<property key="labeling/bufferNoFill" value="false"/>
|
||||
<property key="labeling/bufferSize" value="1"/>
|
||||
<property key="labeling/bufferSizeInMapUnits" value="false"/>
|
||||
<property key="labeling/bufferSizeMapUnitMaxScale" value="0"/>
|
||||
<property key="labeling/bufferSizeMapUnitMinScale" value="0"/>
|
||||
<property key="labeling/bufferTransp" value="0"/>
|
||||
<property key="labeling/centroidInside" value="false"/>
|
||||
<property key="labeling/centroidWhole" value="false"/>
|
||||
<property key="labeling/decimals" value="3"/>
|
||||
<property key="labeling/displayAll" value="false"/>
|
||||
<property key="labeling/dist" value="0"/>
|
||||
<property key="labeling/distInMapUnits" value="false"/>
|
||||
<property key="labeling/distMapUnitMaxScale" value="0"/>
|
||||
<property key="labeling/distMapUnitMinScale" value="0"/>
|
||||
<property key="labeling/drawLabels" value="false"/>
|
||||
<property key="labeling/enabled" value="true"/>
|
||||
<property key="labeling/fieldName" value=""/>
|
||||
<property key="labeling/fitInPolygonOnly" value="false"/>
|
||||
<property key="labeling/fontBold" value="true"/>
|
||||
<property key="labeling/fontCapitals" value="0"/>
|
||||
<property key="labeling/fontFamily" value="Ubuntu"/>
|
||||
<property key="labeling/fontItalic" value="false"/>
|
||||
<property key="labeling/fontLetterSpacing" value="0"/>
|
||||
<property key="labeling/fontLimitPixelSize" value="false"/>
|
||||
<property key="labeling/fontMaxPixelSize" value="10000"/>
|
||||
<property key="labeling/fontMinPixelSize" value="3"/>
|
||||
<property key="labeling/fontSize" value="11"/>
|
||||
<property key="labeling/fontSizeInMapUnits" value="false"/>
|
||||
<property key="labeling/fontSizeMapUnitMaxScale" value="0"/>
|
||||
<property key="labeling/fontSizeMapUnitMinScale" value="0"/>
|
||||
<property key="labeling/fontStrikeout" value="false"/>
|
||||
<property key="labeling/fontUnderline" value="false"/>
|
||||
<property key="labeling/fontWeight" value="63"/>
|
||||
<property key="labeling/fontWordSpacing" value="0"/>
|
||||
<property key="labeling/formatNumbers" value="false"/>
|
||||
<property key="labeling/isExpression" value="true"/>
|
||||
<property key="labeling/labelOffsetInMapUnits" value="true"/>
|
||||
<property key="labeling/labelOffsetMapUnitMaxScale" value="0"/>
|
||||
<property key="labeling/labelOffsetMapUnitMinScale" value="0"/>
|
||||
<property key="labeling/labelPerPart" value="false"/>
|
||||
<property key="labeling/leftDirectionSymbol" value="<"/>
|
||||
<property key="labeling/limitNumLabels" value="false"/>
|
||||
<property key="labeling/maxCurvedCharAngleIn" value="20"/>
|
||||
<property key="labeling/maxCurvedCharAngleOut" value="-20"/>
|
||||
<property key="labeling/maxNumLabels" value="2000"/>
|
||||
<property key="labeling/mergeLines" value="false"/>
|
||||
<property key="labeling/minFeatureSize" value="0"/>
|
||||
<property key="labeling/multilineAlign" value="0"/>
|
||||
<property key="labeling/multilineHeight" value="1"/>
|
||||
<property key="labeling/namedStyle" value="Medium"/>
|
||||
<property key="labeling/obstacle" value="true"/>
|
||||
<property key="labeling/obstacleFactor" value="1"/>
|
||||
<property key="labeling/obstacleType" value="0"/>
|
||||
<property key="labeling/placeDirectionSymbol" value="0"/>
|
||||
<property key="labeling/placement" value="1"/>
|
||||
<property key="labeling/placementFlags" value="10"/>
|
||||
<property key="labeling/plussign" value="false"/>
|
||||
<property key="labeling/preserveRotation" value="true"/>
|
||||
<property key="labeling/previewBkgrdColor" value="#ffffff"/>
|
||||
<property key="labeling/priority" value="5"/>
|
||||
<property key="labeling/quadOffset" value="4"/>
|
||||
<property key="labeling/repeatDistance" value="0"/>
|
||||
<property key="labeling/repeatDistanceMapUnitMaxScale" value="0"/>
|
||||
<property key="labeling/repeatDistanceMapUnitMinScale" value="0"/>
|
||||
<property key="labeling/repeatDistanceUnit" value="1"/>
|
||||
<property key="labeling/reverseDirectionSymbol" value="false"/>
|
||||
<property key="labeling/rightDirectionSymbol" value=">"/>
|
||||
<property key="labeling/scaleMax" value="10000000"/>
|
||||
<property key="labeling/scaleMin" value="1"/>
|
||||
<property key="labeling/scaleVisibility" value="false"/>
|
||||
<property key="labeling/shadowBlendMode" value="6"/>
|
||||
<property key="labeling/shadowColorB" value="0"/>
|
||||
<property key="labeling/shadowColorG" value="0"/>
|
||||
<property key="labeling/shadowColorR" value="0"/>
|
||||
<property key="labeling/shadowDraw" value="false"/>
|
||||
<property key="labeling/shadowOffsetAngle" value="135"/>
|
||||
<property key="labeling/shadowOffsetDist" value="1"/>
|
||||
<property key="labeling/shadowOffsetGlobal" value="true"/>
|
||||
<property key="labeling/shadowOffsetMapUnitMaxScale" value="0"/>
|
||||
<property key="labeling/shadowOffsetMapUnitMinScale" value="0"/>
|
||||
<property key="labeling/shadowOffsetUnits" value="1"/>
|
||||
<property key="labeling/shadowRadius" value="1.5"/>
|
||||
<property key="labeling/shadowRadiusAlphaOnly" value="false"/>
|
||||
<property key="labeling/shadowRadiusMapUnitMaxScale" value="0"/>
|
||||
<property key="labeling/shadowRadiusMapUnitMinScale" value="0"/>
|
||||
<property key="labeling/shadowRadiusUnits" value="1"/>
|
||||
<property key="labeling/shadowScale" value="100"/>
|
||||
<property key="labeling/shadowTransparency" value="30"/>
|
||||
<property key="labeling/shadowUnder" value="0"/>
|
||||
<property key="labeling/shapeBlendMode" value="0"/>
|
||||
<property key="labeling/shapeBorderColorA" value="255"/>
|
||||
<property key="labeling/shapeBorderColorB" value="128"/>
|
||||
<property key="labeling/shapeBorderColorG" value="128"/>
|
||||
<property key="labeling/shapeBorderColorR" value="128"/>
|
||||
<property key="labeling/shapeBorderWidth" value="0"/>
|
||||
<property key="labeling/shapeBorderWidthMapUnitMaxScale" value="0"/>
|
||||
<property key="labeling/shapeBorderWidthMapUnitMinScale" value="0"/>
|
||||
<property key="labeling/shapeBorderWidthUnits" value="1"/>
|
||||
<property key="labeling/shapeDraw" value="false"/>
|
||||
<property key="labeling/shapeFillColorA" value="255"/>
|
||||
<property key="labeling/shapeFillColorB" value="255"/>
|
||||
<property key="labeling/shapeFillColorG" value="255"/>
|
||||
<property key="labeling/shapeFillColorR" value="255"/>
|
||||
<property key="labeling/shapeJoinStyle" value="64"/>
|
||||
<property key="labeling/shapeOffsetMapUnitMaxScale" value="0"/>
|
||||
<property key="labeling/shapeOffsetMapUnitMinScale" value="0"/>
|
||||
<property key="labeling/shapeOffsetUnits" value="1"/>
|
||||
<property key="labeling/shapeOffsetX" value="0"/>
|
||||
<property key="labeling/shapeOffsetY" value="0"/>
|
||||
<property key="labeling/shapeRadiiMapUnitMaxScale" value="0"/>
|
||||
<property key="labeling/shapeRadiiMapUnitMinScale" value="0"/>
|
||||
<property key="labeling/shapeRadiiUnits" value="1"/>
|
||||
<property key="labeling/shapeRadiiX" value="0"/>
|
||||
<property key="labeling/shapeRadiiY" value="0"/>
|
||||
<property key="labeling/shapeRotation" value="0"/>
|
||||
<property key="labeling/shapeRotationType" value="0"/>
|
||||
<property key="labeling/shapeSVGFile" value=""/>
|
||||
<property key="labeling/shapeSizeMapUnitMaxScale" value="0"/>
|
||||
<property key="labeling/shapeSizeMapUnitMinScale" value="0"/>
|
||||
<property key="labeling/shapeSizeType" value="0"/>
|
||||
<property key="labeling/shapeSizeUnits" value="1"/>
|
||||
<property key="labeling/shapeSizeX" value="0"/>
|
||||
<property key="labeling/shapeSizeY" value="0"/>
|
||||
<property key="labeling/shapeTransparency" value="0"/>
|
||||
<property key="labeling/shapeType" value="0"/>
|
||||
<property key="labeling/textColorA" value="255"/>
|
||||
<property key="labeling/textColorB" value="0"/>
|
||||
<property key="labeling/textColorG" value="0"/>
|
||||
<property key="labeling/textColorR" value="0"/>
|
||||
<property key="labeling/textTransp" value="0"/>
|
||||
<property key="labeling/upsidedownLabels" value="0"/>
|
||||
<property key="labeling/wrapChar" value=""/>
|
||||
<property key="labeling/xOffset" value="0"/>
|
||||
<property key="labeling/yOffset" value="0"/>
|
||||
<property key="variableNames" value="_fields_"/>
|
||||
<property key="variableValues" value=""/>
|
||||
</customproperties>
|
||||
<blendMode>0</blendMode>
|
||||
<featureBlendMode>0</featureBlendMode>
|
||||
<layerTransparency>0</layerTransparency>
|
||||
<displayfield>pkuid</displayfield>
|
||||
<label>0</label>
|
||||
<labelattributes>
|
||||
<label fieldname="" text="Label"/>
|
||||
<family fieldname="" name="Ubuntu"/>
|
||||
<size fieldname="" units="pt" value="12"/>
|
||||
<bold fieldname="" on="0"/>
|
||||
<italic fieldname="" on="0"/>
|
||||
<underline fieldname="" on="0"/>
|
||||
<strikeout fieldname="" on="0"/>
|
||||
<color fieldname="" red="0" blue="0" green="0"/>
|
||||
<x fieldname=""/>
|
||||
<y fieldname=""/>
|
||||
<offset x="0" y="0" units="pt" yfieldname="" xfieldname=""/>
|
||||
<angle fieldname="" value="0" auto="0"/>
|
||||
<alignment fieldname="" value="center"/>
|
||||
<buffercolor fieldname="" red="255" blue="255" green="255"/>
|
||||
<buffersize fieldname="" units="pt" value="1"/>
|
||||
<bufferenabled fieldname="" on=""/>
|
||||
<multilineenabled fieldname="" on=""/>
|
||||
<selectedonly on=""/>
|
||||
</labelattributes>
|
||||
<SingleCategoryDiagramRenderer diagramType="Pie">
|
||||
<DiagramCategory penColor="#000000" labelPlacementMethod="XHeight" penWidth="0" diagramOrientation="Up" minimumSize="0" barWidth="5" penAlpha="255" maxScaleDenominator="1e+08" backgroundColor="#ffffff" transparency="0" width="15" scaleDependency="Area" backgroundAlpha="255" angleOffset="1440" scaleBasedVisibility="0" enabled="0" height="15" sizeType="MM" minScaleDenominator="0">
|
||||
<fontProperties description="Ubuntu,11,-1,5,50,0,0,0,0,0" style=""/>
|
||||
</DiagramCategory>
|
||||
</SingleCategoryDiagramRenderer>
|
||||
<DiagramLayerSettings yPosColumn="-1" linePlacementFlags="10" placement="0" dist="0" xPosColumn="-1" priority="0" obstacle="0" showAll="1"/>
|
||||
<editform></editform>
|
||||
<editforminit/>
|
||||
<featformsuppress>0</featformsuppress>
|
||||
<annotationform></annotationform>
|
||||
<editorlayout>generatedlayout</editorlayout>
|
||||
<excludeAttributesWMS/>
|
||||
<excludeAttributesWFS/>
|
||||
<attributeactions/>
|
||||
<conditionalstyles>
|
||||
<rowstyles/>
|
||||
<fieldstyles/>
|
||||
</conditionalstyles>
|
||||
</qgis>
|
BIN
tests/testdata/labeling/pal_features_v3.sqlite
vendored
BIN
tests/testdata/labeling/pal_features_v3.sqlite
vendored
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user