Add test for XYZ Tiles algorithm

This commit is contained in:
Martin Dobias 2019-04-25 22:14:08 +02:00
parent 285d4e0da0
commit fdb6a2b79a
9 changed files with 760 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@ -7524,5 +7524,21 @@ tests:
name: expected/join_to_nearest_no_matches.gml
type: vector
- name: Generate XYZ tiles
algorithm: qgis:tilesxyz
project: ../../../../../tests/testdata/xyztiles.qgs
project_crs: EPSG:3857
params:
EXTENT: -12535000,-9883000,3360000,5349000 [EPSG:3857]
ZOOM_MIN: 1
ZOOM_MAX: 3
TILE_FORMAT: 0 # png
OUTPUT_FORMAT: 0 # directory
results:
OUTPUT_DIRECTORY:
type: directory
name: expected/xyztiles
# See ../README.md for a description of the file format

744
tests/testdata/xyztiles.qgs vendored Normal file
View File

@ -0,0 +1,744 @@
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
<qgis version="3.7.0-Master" projectname="">
<homePath path=""/>
<title></title>
<autotransaction active="0"/>
<evaluateDefaultValues active="0"/>
<trust active="0"/>
<projectCrs>
<spatialrefsys>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</projectCrs>
<layer-tree-group>
<customproperties/>
<layer-tree-layer name="Land" checked="Qt::Checked" expanded="1" source="./polys.shp" providerKey="ogr" id="polys20151123133114244">
<customproperties/>
</layer-tree-layer>
<layer-tree-layer name="Roads" checked="Qt::Checked" expanded="1" source="./lines.shp" providerKey="ogr" id="lines20151123133101198">
<customproperties/>
</layer-tree-layer>
<custom-order enabled="0">
<item>polys20151123133114244</item>
<item>lines20151123133101198</item>
</custom-order>
</layer-tree-group>
<snapping-settings mode="1" type="2" unit="1" intersection-snapping="0" enabled="1" tolerance="20">
<individual-layer-settings>
<layer-setting type="2" units="1" enabled="1" tolerance="20" id="polys20151123133114244"/>
<layer-setting type="2" units="1" enabled="1" tolerance="20" id="lines20151123133101198"/>
</individual-layer-settings>
</snapping-settings>
<relations/>
<mapcanvas name="theMapCanvas" annotationsVisible="1">
<units>meters</units>
<extent>
<xmin>-12244360.81901275180280209</xmin>
<ymin>3360185.32420947728678584</ymin>
<xmax>-10173775.61578787304461002</xmax>
<ymax>5348862.70644816849380732</ymax>
</extent>
<rotation>0</rotation>
<destinationsrs>
<spatialrefsys>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</destinationsrs>
<rendermaptile>0</rendermaptile>
<expressionContextScope/>
</mapcanvas>
<projectModels/>
<legend updateDrawingOrder="true">
<legendlayer checked="Qt::Checked" name="Land" showFeatureCount="0" drawingOrder="-1" open="true">
<filegroup hidden="false" open="true">
<legendlayerfile layerid="polys20151123133114244" visible="1" isInOverview="0"/>
</filegroup>
</legendlayer>
<legendlayer checked="Qt::Checked" name="Roads" showFeatureCount="0" drawingOrder="-1" open="true">
<filegroup hidden="false" open="true">
<legendlayerfile layerid="lines20151123133101198" visible="1" isInOverview="0"/>
</filegroup>
</legendlayer>
</legend>
<mapViewDocks/>
<mapViewDocks3D/>
<projectlayers>
<maplayer styleCategories="AllStyleCategories" minScale="1e+8" hasScaleBasedVisibilityFlag="0" simplifyAlgorithm="0" simplifyLocal="1" readOnly="0" type="vector" autoRefreshTime="0" autoRefreshEnabled="0" simplifyMaxScale="1" simplifyDrawingTol="1" refreshOnNotifyEnabled="0" geometry="Line" simplifyDrawingHints="1" labelsEnabled="1" refreshOnNotifyMessage="" maxScale="1">
<extent>
<xmin>-117.62319839219053108</xmin>
<ymin>23.20820580488508966</ymin>
<xmax>-82.32264950769274492</xmax>
<ymax>46.18290982947509349</ymax>
</extent>
<id>lines20151123133101198</id>
<datasource>./lines.shp</datasource>
<keywordList>
<value></value>
</keywordList>
<layername>Roads</layername>
<srs>
<spatialrefsys>
<proj4>+proj=longlat +datum=WGS84 +no_defs</proj4>
<srsid>3452</srsid>
<srid>4326</srid>
<authid>EPSG:4326</authid>
<description>WGS 84</description>
<projectionacronym>longlat</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>true</geographicflag>
</spatialrefsys>
</srs>
<resourceMetadata>
<identifier></identifier>
<parentidentifier></parentidentifier>
<language></language>
<type></type>
<title></title>
<abstract></abstract>
<links/>
<fees></fees>
<encoding></encoding>
<crs>
<spatialrefsys>
<proj4></proj4>
<srsid>0</srsid>
<srid>0</srid>
<authid></authid>
<description></description>
<projectionacronym></projectionacronym>
<ellipsoidacronym></ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</crs>
<extent/>
</resourceMetadata>
<provider encoding="UTF-8">ogr</provider>
<vectorjoins/>
<layerDependencies/>
<dataDependencies/>
<legend type="default-vector"/>
<expressionfields/>
<map-layer-style-manager current="default">
<map-layer-style name="default"/>
</map-layer-style-manager>
<auxiliaryLayer/>
<flags>
<Identifiable>1</Identifiable>
<Removable>1</Removable>
<Searchable>1</Searchable>
</flags>
<renderer-v2 type="categorizedSymbol" forceraster="0" symbollevels="0" attr="Name" enableorderby="0">
<categories>
<category symbol="0" label="Arterial" render="true" value="Arterial"/>
<category symbol="1" label="Highway" render="true" value="Highway"/>
</categories>
<symbols>
<symbol name="0" clip_to_extent="1" type="line" alpha="1" force_rhr="0">
<layer locked="0" pass="0" class="SimpleLine" enabled="1">
<prop v="square" k="capstyle"/>
<prop v="5;2" k="customdash"/>
<prop v="3x:0,0,0,0,0,0" k="customdash_map_unit_scale"/>
<prop v="MM" k="customdash_unit"/>
<prop v="0" k="draw_inside_polygon"/>
<prop v="bevel" k="joinstyle"/>
<prop v="154,139,116,255" k="line_color"/>
<prop v="dash dot dot" k="line_style"/>
<prop v="1" k="line_width"/>
<prop v="MM" k="line_width_unit"/>
<prop v="0" k="offset"/>
<prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/>
<prop v="MM" k="offset_unit"/>
<prop v="0" k="ring_filter"/>
<prop v="0" k="use_custom_dash"/>
<prop v="3x:0,0,0,0,0,0" k="width_map_unit_scale"/>
<data_defined_properties>
<Option type="Map">
<Option name="name" type="QString" value=""/>
<Option name="properties"/>
<Option name="type" type="QString" value="collection"/>
</Option>
</data_defined_properties>
</layer>
</symbol>
<symbol name="1" clip_to_extent="1" type="line" alpha="1" force_rhr="0">
<layer locked="0" pass="0" class="SimpleLine" enabled="1">
<prop v="square" k="capstyle"/>
<prop v="5;2" k="customdash"/>
<prop v="3x:0,0,0,0,0,0" k="customdash_map_unit_scale"/>
<prop v="MM" k="customdash_unit"/>
<prop v="0" k="draw_inside_polygon"/>
<prop v="bevel" k="joinstyle"/>
<prop v="94,89,55,255" k="line_color"/>
<prop v="solid" k="line_style"/>
<prop v="1.3" k="line_width"/>
<prop v="MM" k="line_width_unit"/>
<prop v="0" k="offset"/>
<prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/>
<prop v="MM" k="offset_unit"/>
<prop v="0" k="ring_filter"/>
<prop v="0" k="use_custom_dash"/>
<prop v="3x:0,0,0,0,0,0" k="width_map_unit_scale"/>
<data_defined_properties>
<Option type="Map">
<Option name="name" type="QString" value=""/>
<Option name="properties"/>
<Option name="type" type="QString" value="collection"/>
</Option>
</data_defined_properties>
</layer>
</symbol>
</symbols>
<rotation/>
<sizescale/>
</renderer-v2>
<customproperties>
<property key="embeddedWidgets/count" value="0"/>
<property key="variableNames"/>
<property key="variableValues"/>
</customproperties>
<blendMode>0</blendMode>
<featureBlendMode>0</featureBlendMode>
<layerOpacity>1</layerOpacity>
<SingleCategoryDiagramRenderer attributeLegend="1" diagramType="Pie">
<DiagramCategory minScaleDenominator="1" width="15" rotationOffset="270" lineSizeType="MM" minimumSize="0" scaleBasedVisibility="0" scaleDependency="Area" lineSizeScale="3x:0,0,0,0,0,0" penAlpha="255" enabled="0" maxScaleDenominator="1e+8" diagramOrientation="Up" barWidth="5" penColor="#000000" opacity="1" backgroundAlpha="255" sizeType="MM" penWidth="0" sizeScale="3x:0,0,0,0,0,0" backgroundColor="#ffffff" labelPlacementMethod="XHeight" height="15">
<fontProperties description="Ubuntu,13,-1,5,50,0,0,0,0,0" style=""/>
<attribute color="#000000" label="" field=""/>
</DiagramCategory>
</SingleCategoryDiagramRenderer>
<DiagramLayerSettings obstacle="0" dist="0" zIndex="0" linePlacementFlags="10" showAll="1" placement="2" priority="0">
<properties>
<Option type="Map">
<Option name="name" type="QString" value=""/>
<Option name="properties" type="Map">
<Option name="show" type="Map">
<Option name="active" type="bool" value="true"/>
<Option name="field" type="QString" value="Name"/>
<Option name="type" type="int" value="2"/>
</Option>
</Option>
<Option name="type" type="QString" value="collection"/>
</Option>
</properties>
</DiagramLayerSettings>
<geometryOptions removeDuplicateNodes="0" geometryPrecision="0">
<activeChecks/>
<checkConfiguration/>
</geometryOptions>
<fieldConfiguration>
<field name="Name">
<editWidget type="TextEdit">
<config>
<Option type="Map">
<Option name="IsMultiline" type="QString" value="0"/>
<Option name="UseHtml" type="QString" value="0"/>
</Option>
</config>
</editWidget>
</field>
<field name="Value">
<editWidget type="TextEdit">
<config>
<Option type="Map">
<Option name="IsMultiline" type="QString" value="0"/>
<Option name="UseHtml" type="QString" value="0"/>
</Option>
</config>
</editWidget>
</field>
</fieldConfiguration>
<aliases>
<alias name="" index="0" field="Name"/>
<alias name="" index="1" field="Value"/>
</aliases>
<excludeAttributesWMS/>
<excludeAttributesWFS/>
<defaults>
<default expression="" field="Name" applyOnUpdate="0"/>
<default expression="" field="Value" applyOnUpdate="0"/>
</defaults>
<constraints>
<constraint unique_strength="0" notnull_strength="0" field="Name" constraints="0" exp_strength="0"/>
<constraint unique_strength="0" notnull_strength="0" field="Value" constraints="0" exp_strength="0"/>
</constraints>
<constraintExpressions>
<constraint desc="" field="Name" exp=""/>
<constraint desc="" field="Value" exp=""/>
</constraintExpressions>
<expressionfields/>
<attributeactions/>
<attributetableconfig sortOrder="0" actionWidgetStyle="dropDown" sortExpression="">
<columns>
<column name="Name" type="field" hidden="0" width="-1"/>
<column name="Value" type="field" hidden="0" width="-1"/>
<column type="actions" hidden="1" width="-1"/>
<column name="Blocked" type="field" hidden="0" width="-1"/>
<column name="Situation" type="field" hidden="0" width="-1"/>
<column name="BlockStart" type="field" hidden="0" width="-1"/>
</columns>
</attributetableconfig>
<conditionalstyles>
<rowstyles/>
<fieldstyles/>
</conditionalstyles>
<editform tolerant="1"></editform>
<editforminit/>
<editforminitcodesource>0</editforminitcodesource>
<editforminitfilepath>../src/quickgui/app/qgis-data</editforminitfilepath>
<editforminitcode><![CDATA[# -*- coding: utf-8 -*-
"""
QGIS forms can have a Python function that is called when the form is
opened.
Use this function to add extra logic to your forms.
Enter the name of the function in the "Python Init function"
field.
An example follows:
"""
from qgis.PyQt.QtWidgets import QWidget
def my_form_open(dialog, layer, feature):
geom = feature.geometry()
control = dialog.findChild(QWidget, "MyLineEdit")
]]></editforminitcode>
<featformsuppress>0</featformsuppress>
<editorlayout>generatedlayout</editorlayout>
<editable/>
<labelOnTop/>
<widgets/>
<previewExpression>COALESCE( "Name", '&lt;NULL>' )</previewExpression>
<mapTip></mapTip>
</maplayer>
<maplayer styleCategories="AllStyleCategories" minScale="1e+8" hasScaleBasedVisibilityFlag="0" simplifyAlgorithm="0" simplifyLocal="1" readOnly="0" type="vector" autoRefreshTime="0" autoRefreshEnabled="0" simplifyMaxScale="1" simplifyDrawingTol="1" refreshOnNotifyEnabled="0" geometry="Polygon" simplifyDrawingHints="1" labelsEnabled="1" refreshOnNotifyMessage="" maxScale="1">
<extent>
<xmin>-118.92286230599032137</xmin>
<ymin>24.50786971868489061</ymin>
<xmax>-83.79001199101509201</xmax>
<ymax>46.72617265077044379</ymax>
</extent>
<id>polys20151123133114244</id>
<datasource>./polys.shp</datasource>
<keywordList>
<value></value>
</keywordList>
<layername>Land</layername>
<srs>
<spatialrefsys>
<proj4>+proj=longlat +datum=WGS84 +no_defs</proj4>
<srsid>3452</srsid>
<srid>4326</srid>
<authid>EPSG:4326</authid>
<description>WGS 84</description>
<projectionacronym>longlat</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>true</geographicflag>
</spatialrefsys>
</srs>
<resourceMetadata>
<identifier></identifier>
<parentidentifier></parentidentifier>
<language></language>
<type></type>
<title></title>
<abstract></abstract>
<links/>
<fees></fees>
<encoding></encoding>
<crs>
<spatialrefsys>
<proj4></proj4>
<srsid>0</srsid>
<srid>0</srid>
<authid></authid>
<description></description>
<projectionacronym></projectionacronym>
<ellipsoidacronym></ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</crs>
<extent/>
</resourceMetadata>
<provider encoding="UTF-8">ogr</provider>
<vectorjoins/>
<layerDependencies/>
<dataDependencies/>
<legend type="default-vector"/>
<expressionfields/>
<map-layer-style-manager current="default">
<map-layer-style name="default"/>
</map-layer-style-manager>
<auxiliaryLayer/>
<flags>
<Identifiable>1</Identifiable>
<Removable>1</Removable>
<Searchable>1</Searchable>
</flags>
<renderer-v2 type="categorizedSymbol" forceraster="0" symbollevels="0" attr="Name" enableorderby="0">
<categories>
<category symbol="0" label="Dam" render="true" value="Dam"/>
<category symbol="1" label="Lake" render="true" value="Lake"/>
</categories>
<symbols>
<symbol name="0" clip_to_extent="1" type="fill" alpha="1" force_rhr="0">
<layer locked="0" pass="0" class="SimpleFill" enabled="1">
<prop v="3x:0,0,0,0,0,0" k="border_width_map_unit_scale"/>
<prop v="118,191,227,132" k="color"/>
<prop v="bevel" k="joinstyle"/>
<prop v="0,0" k="offset"/>
<prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/>
<prop v="MM" k="offset_unit"/>
<prop v="31,120,180,255" k="outline_color"/>
<prop v="solid" k="outline_style"/>
<prop v="0.66" k="outline_width"/>
<prop v="MM" k="outline_width_unit"/>
<prop v="solid" k="style"/>
<data_defined_properties>
<Option type="Map">
<Option name="name" type="QString" value=""/>
<Option name="properties"/>
<Option name="type" type="QString" value="collection"/>
</Option>
</data_defined_properties>
</layer>
</symbol>
<symbol name="1" clip_to_extent="1" type="fill" alpha="1" force_rhr="0">
<layer locked="0" pass="0" class="SimpleFill" enabled="1">
<prop v="3x:0,0,0,0,0,0" k="border_width_map_unit_scale"/>
<prop v="110,194,217,255" k="color"/>
<prop v="bevel" k="joinstyle"/>
<prop v="0,0" k="offset"/>
<prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/>
<prop v="MM" k="offset_unit"/>
<prop v="144,144,144,255" k="outline_color"/>
<prop v="solid" k="outline_style"/>
<prop v="0.66" k="outline_width"/>
<prop v="MM" k="outline_width_unit"/>
<prop v="solid" k="style"/>
<data_defined_properties>
<Option type="Map">
<Option name="name" type="QString" value=""/>
<Option name="properties"/>
<Option name="type" type="QString" value="collection"/>
</Option>
</data_defined_properties>
</layer>
</symbol>
</symbols>
<rotation/>
<sizescale/>
</renderer-v2>
<customproperties>
<property key="embeddedWidgets/count" value="0"/>
<property key="variableNames"/>
<property key="variableValues"/>
</customproperties>
<blendMode>0</blendMode>
<featureBlendMode>0</featureBlendMode>
<layerOpacity>1</layerOpacity>
<SingleCategoryDiagramRenderer attributeLegend="1" diagramType="Pie">
<DiagramCategory minScaleDenominator="1" width="15" rotationOffset="270" lineSizeType="MM" minimumSize="0" scaleBasedVisibility="0" scaleDependency="Area" lineSizeScale="3x:0,0,0,0,0,0" penAlpha="255" enabled="0" maxScaleDenominator="1e+8" diagramOrientation="Up" barWidth="5" penColor="#000000" opacity="1" backgroundAlpha="255" sizeType="MM" penWidth="0" sizeScale="3x:0,0,0,0,0,0" backgroundColor="#ffffff" labelPlacementMethod="XHeight" height="15">
<fontProperties description="Ubuntu,13,-1,5,50,0,0,0,0,0" style=""/>
<attribute color="#000000" label="" field=""/>
</DiagramCategory>
</SingleCategoryDiagramRenderer>
<DiagramLayerSettings obstacle="0" dist="0" zIndex="0" linePlacementFlags="10" showAll="1" placement="0" priority="0">
<properties>
<Option type="Map">
<Option name="name" type="QString" value=""/>
<Option name="properties" type="Map">
<Option name="show" type="Map">
<Option name="active" type="bool" value="true"/>
<Option name="field" type="QString" value="Name"/>
<Option name="type" type="int" value="2"/>
</Option>
</Option>
<Option name="type" type="QString" value="collection"/>
</Option>
</properties>
</DiagramLayerSettings>
<geometryOptions removeDuplicateNodes="0" geometryPrecision="0">
<activeChecks/>
<checkConfiguration/>
</geometryOptions>
<fieldConfiguration>
<field name="Name">
<editWidget type="ValueMap">
<config>
<Option type="Map">
<Option name="map" type="Map">
<Option name="Dam" type="QString" value="Dam"/>
<Option name="Lake" type="QString" value="Lake"/>
</Option>
</Option>
</config>
</editWidget>
</field>
<field name="Value">
<editWidget type="TextEdit">
<config>
<Option type="Map">
<Option name="IsMultiline" type="QString" value="0"/>
<Option name="UseHtml" type="QString" value="0"/>
</Option>
</config>
</editWidget>
</field>
</fieldConfiguration>
<aliases>
<alias name="" index="0" field="Name"/>
<alias name="" index="1" field="Value"/>
</aliases>
<excludeAttributesWMS/>
<excludeAttributesWFS/>
<defaults>
<default expression="" field="Name" applyOnUpdate="0"/>
<default expression="" field="Value" applyOnUpdate="0"/>
</defaults>
<constraints>
<constraint unique_strength="0" notnull_strength="0" field="Name" constraints="0" exp_strength="0"/>
<constraint unique_strength="0" notnull_strength="0" field="Value" constraints="0" exp_strength="0"/>
</constraints>
<constraintExpressions>
<constraint desc="" field="Name" exp=""/>
<constraint desc="" field="Value" exp=""/>
</constraintExpressions>
<expressionfields/>
<attributeactions>
<defaultAction key="Canvas" value="{00000000-0000-0000-0000-000000000000}"/>
</attributeactions>
<attributetableconfig sortOrder="0" actionWidgetStyle="dropDown" sortExpression="">
<columns>
<column name="Name" type="field" hidden="0" width="-1"/>
<column name="Value" type="field" hidden="0" width="-1"/>
<column type="actions" hidden="1" width="-1"/>
</columns>
</attributetableconfig>
<conditionalstyles>
<rowstyles/>
<fieldstyles/>
</conditionalstyles>
<editform tolerant="1"></editform>
<editforminit/>
<editforminitcodesource>0</editforminitcodesource>
<editforminitfilepath>../src/quickgui/app/qgis-data</editforminitfilepath>
<editforminitcode><![CDATA[# -*- coding: utf-8 -*-
"""
QGIS forms can have a Python function that is called when the form is
opened.
Use this function to add extra logic to your forms.
Enter the name of the function in the "Python Init function"
field.
An example follows:
"""
from qgis.PyQt.QtWidgets import QWidget
def my_form_open(dialog, layer, feature):
geom = feature.geometry()
control = dialog.findChild(QWidget, "MyLineEdit")
]]></editforminitcode>
<featformsuppress>0</featformsuppress>
<editorlayout>generatedlayout</editorlayout>
<editable/>
<labelOnTop/>
<widgets/>
<previewExpression>COALESCE( "Name", '&lt;NULL>' )</previewExpression>
<mapTip></mapTip>
</maplayer>
</projectlayers>
<layerorder>
<layer id="polys20151123133114244"/>
<layer id="lines20151123133101198"/>
</layerorder>
<properties>
<DefaultStyles>
<AlphaInt type="int">255</AlphaInt>
<ColorRamp type="QString"></ColorRamp>
<Fill type="QString"></Fill>
<Line type="QString"></Line>
<Marker type="QString"></Marker>
<Opacity type="double">1</Opacity>
<RandomColors type="bool">true</RandomColors>
</DefaultStyles>
<Digitizing>
<AvoidIntersectionsList type="QStringList"/>
<DefaultSnapTolerance type="double">20</DefaultSnapTolerance>
<DefaultSnapToleranceUnit type="int">1</DefaultSnapToleranceUnit>
<DefaultSnapType type="QString">to vertex and segment</DefaultSnapType>
<LayerSnapToList type="QStringList">
<value>to_vertex_and_segment</value>
<value>to_vertex_and_segment</value>
<value>to_vertex_and_segment</value>
</LayerSnapToList>
<LayerSnappingEnabledList type="QStringList">
<value>enabled</value>
<value>enabled</value>
<value>enabled</value>
</LayerSnappingEnabledList>
<LayerSnappingList type="QStringList">
<value>lines20151123133101198</value>
<value>points20151123133104693</value>
<value>polys20151123133114244</value>
</LayerSnappingList>
<LayerSnappingToleranceList type="QStringList">
<value>20.000000</value>
<value>20.000000</value>
<value>20.000000</value>
</LayerSnappingToleranceList>
<LayerSnappingToleranceUnitList type="QStringList">
<value>1</value>
<value>1</value>
<value>1</value>
</LayerSnappingToleranceUnitList>
<SnappingMode type="QString">current_layer</SnappingMode>
</Digitizing>
<Gui>
<CanvasColorBluePart type="int">255</CanvasColorBluePart>
<CanvasColorGreenPart type="int">255</CanvasColorGreenPart>
<CanvasColorRedPart type="int">255</CanvasColorRedPart>
<SelectionColorAlphaPart type="int">255</SelectionColorAlphaPart>
<SelectionColorBluePart type="int">0</SelectionColorBluePart>
<SelectionColorGreenPart type="int">255</SelectionColorGreenPart>
<SelectionColorRedPart type="int">255</SelectionColorRedPart>
</Gui>
<Identify>
<disabledLayers type="QStringList"/>
</Identify>
<Legend>
<filterByMap type="bool">false</filterByMap>
</Legend>
<Macros>
<pythonCode type="QString"></pythonCode>
</Macros>
<Measure>
<Ellipsoid type="QString">WGS84</Ellipsoid>
</Measure>
<Measurement>
<AreaUnits type="QString">m2</AreaUnits>
<DistanceUnits type="QString">meters</DistanceUnits>
</Measurement>
<PAL>
<CandidatesLine type="int">50</CandidatesLine>
<CandidatesPoint type="int">16</CandidatesPoint>
<CandidatesPolygon type="int">30</CandidatesPolygon>
<DrawRectOnly type="bool">false</DrawRectOnly>
<SearchMethod type="int">0</SearchMethod>
<ShowingAllLabels type="bool">false</ShowingAllLabels>
<ShowingCandidates type="bool">false</ShowingCandidates>
<ShowingPartialsLabels type="bool">true</ShowingPartialsLabels>
<TextFormat type="int">0</TextFormat>
</PAL>
<Paths>
<Absolute type="bool">false</Absolute>
</Paths>
<PositionPrecision>
<Automatic type="bool">true</Automatic>
<DecimalPlaces type="int">2</DecimalPlaces>
<DegreeFormat type="QString">MU</DegreeFormat>
</PositionPrecision>
<SpatialRefSys>
<ProjectCRSID type="int">3452</ProjectCRSID>
<ProjectCRSProj4String type="QString">+proj=longlat +datum=WGS84 +no_defs</ProjectCRSProj4String>
<ProjectCrs type="QString">EPSG:4326</ProjectCrs>
<ProjectionsEnabled type="int">1</ProjectionsEnabled>
</SpatialRefSys>
<Variables>
<variableNames type="QStringList"/>
<variableValues type="QStringList"/>
</Variables>
<WCSLayers type="QStringList"/>
<WCSUrl type="QString"></WCSUrl>
<WFSLayers type="QStringList"/>
<WFSTLayers>
<Delete type="QStringList"/>
<Insert type="QStringList"/>
<Update type="QStringList"/>
</WFSTLayers>
<WFSUrl type="QString"></WFSUrl>
<WMSAccessConstraints type="QString">None</WMSAccessConstraints>
<WMSAddWktGeometry type="bool">false</WMSAddWktGeometry>
<WMSContactMail type="QString"></WMSContactMail>
<WMSContactOrganization type="QString"></WMSContactOrganization>
<WMSContactPerson type="QString"></WMSContactPerson>
<WMSContactPhone type="QString"></WMSContactPhone>
<WMSContactPosition type="QString"></WMSContactPosition>
<WMSFees type="QString">conditions unknown</WMSFees>
<WMSImageQuality type="int">90</WMSImageQuality>
<WMSKeywordList type="QStringList">
<value></value>
</WMSKeywordList>
<WMSMaxAtlasFeatures type="int">1</WMSMaxAtlasFeatures>
<WMSOnlineResource type="QString"></WMSOnlineResource>
<WMSPrecision type="QString">8</WMSPrecision>
<WMSRootName type="QString"></WMSRootName>
<WMSSegmentizeFeatureInfoGeometry type="bool">false</WMSSegmentizeFeatureInfoGeometry>
<WMSServiceAbstract type="QString"></WMSServiceAbstract>
<WMSServiceCapabilities type="bool">false</WMSServiceCapabilities>
<WMSServiceTitle type="QString"></WMSServiceTitle>
<WMSUrl type="QString"></WMSUrl>
<WMSUseLayerIDs type="bool">false</WMSUseLayerIDs>
<WMTSGrids>
<CRS type="QStringList"/>
<Config type="QStringList"/>
</WMTSGrids>
<WMTSJpegLayers>
<Group type="QStringList"/>
<Layer type="QStringList"/>
<Project type="bool">false</Project>
</WMTSJpegLayers>
<WMTSLayers>
<Group type="QStringList"/>
<Layer type="QStringList"/>
<Project type="bool">false</Project>
</WMTSLayers>
<WMTSMinScale type="int">5000</WMTSMinScale>
<WMTSPngLayers>
<Group type="QStringList"/>
<Layer type="QStringList"/>
<Project type="bool">false</Project>
</WMTSPngLayers>
<WMTSUrl type="QString"></WMTSUrl>
<ddt2>
<designs type="QString"></designs>
</ddt2>
</properties>
<visibility-presets/>
<transformContext/>
<projectMetadata>
<identifier></identifier>
<parentidentifier></parentidentifier>
<language></language>
<type></type>
<title></title>
<abstract></abstract>
<contact>
<name></name>
<organization></organization>
<position></position>
<voice></voice>
<fax></fax>
<email></email>
<role></role>
</contact>
<links/>
<author></author>
<creation>2000-01-01T00:00:00</creation>
</projectMetadata>
<Annotations/>
<Layouts/>
</qgis>