Merge pull request #30071 from lbartoletti/wms_tile_buffer

[server]New parameter for WMS service: tile_buffer
This commit is contained in:
Blottiere Paul 2019-06-28 16:22:05 +02:00 committed by GitHub
commit ee6642477e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
22 changed files with 857 additions and 17 deletions

View File

@ -74,6 +74,25 @@ Set coordinates of the rectangle which should be rendered.
The actual visible extent used for rendering could be slightly different The actual visible extent used for rendering could be slightly different
since the given extent may be expanded in order to fit the aspect ratio since the given extent may be expanded in order to fit the aspect ratio
of output size. Use visibleExtent() to get the resulting extent. of output size. Use visibleExtent() to get the resulting extent.
%End
double extentBuffer() const;
%Docstring
Returns the buffer in map units to use around the visible extent for rendering
symbols whose corresponding geometries are outside the visible extent.
.. seealso:: :py:func:`setExtentBuffer`
.. versionadded:: 3.10
%End
void setExtentBuffer( double buffer );
%Docstring
Sets the buffer in map units to use around the visible extent for rendering
symbols whose corresponding geometries are outside the visible extent. This
is useful when using tiles to avoid cut symbols at tile boundaries.
.. versionadded:: 3.10
%End %End
QSize outputSize() const; QSize outputSize() const;

View File

@ -152,6 +152,17 @@ Returns the quality for WMS images defined in a QGIS project.
:param project: the QGIS project :param project: the QGIS project
:return: quality if defined in project, -1 otherwise. :return: quality if defined in project, -1 otherwise.
%End
int wmsTileBuffer( const QgsProject &project );
%Docstring
Returns the tile buffer in pixels for WMS images defined in a QGIS project.
:param project: the QGIS project
:return: tile buffer if defined in project, 0 otherwise.
.. versionadded:: 3.10
%End %End
int wmsMaxAtlasFeatures( const QgsProject &project ); int wmsMaxAtlasFeatures( const QgsProject &project );

View File

@ -644,6 +644,9 @@ QgsProjectProperties::QgsProjectProperties( QgsMapCanvas *mapCanvas, QWidget *pa
mWMSImageQualitySpinBox->setValue( imageQuality ); mWMSImageQualitySpinBox->setValue( imageQuality );
} }
// WMS tileBuffer
mWMSTileBufferSpinBox->setValue( QgsProject::instance()->readNumEntry( QStringLiteral( "WMSTileBuffer" ), QStringLiteral( "/" ), 0 ) );
mWMSMaxAtlasFeaturesSpinBox->setValue( QgsProject::instance()->readNumEntry( QStringLiteral( "WMSMaxAtlasFeatures" ), QStringLiteral( "/" ), 1 ) ); mWMSMaxAtlasFeaturesSpinBox->setValue( QgsProject::instance()->readNumEntry( QStringLiteral( "WMSMaxAtlasFeatures" ), QStringLiteral( "/" ), 1 ) );
QString defaultValueToolTip = tr( "In case of no other information to evaluate the map unit sized symbols, it uses default scale (on projected CRS) or default map units per mm (on geographic CRS)." ); QString defaultValueToolTip = tr( "In case of no other information to evaluate the map unit sized symbols, it uses default scale (on projected CRS) or default map units per mm (on geographic CRS)." );
@ -1323,6 +1326,9 @@ void QgsProjectProperties::apply()
QgsProject::instance()->writeEntry( QStringLiteral( "WMSImageQuality" ), QStringLiteral( "/" ), imageQualityValue ); QgsProject::instance()->writeEntry( QStringLiteral( "WMSImageQuality" ), QStringLiteral( "/" ), imageQualityValue );
} }
// WMS TileBuffer
QgsProject::instance()->writeEntry( QStringLiteral( "WMSTileBuffer" ), QStringLiteral( "/" ), mWMSTileBufferSpinBox->value() );
int maxAtlasFeatures = mWMSMaxAtlasFeaturesSpinBox->value(); int maxAtlasFeatures = mWMSMaxAtlasFeaturesSpinBox->value();
QgsProject::instance()->writeEntry( QStringLiteral( "WMSMaxAtlasFeatures" ), QStringLiteral( "/" ), maxAtlasFeatures ); QgsProject::instance()->writeEntry( QStringLiteral( "WMSMaxAtlasFeatures" ), QStringLiteral( "/" ), maxAtlasFeatures );

View File

@ -254,6 +254,7 @@ LayerRenderJobs QgsMapRendererJob::prepareJobs( QPainter *painter, QgsLabelingEn
} }
QgsRectangle r1 = mSettings.visibleExtent(), r2; QgsRectangle r1 = mSettings.visibleExtent(), r2;
r1.grow( mSettings.extentBuffer() );
QgsCoordinateTransform ct; QgsCoordinateTransform ct;
ct = mSettings.layerTransform( ml ); ct = mSettings.layerTransform( ml );

View File

@ -87,6 +87,16 @@ void QgsMapSettings::setExtent( const QgsRectangle &extent, bool magnified )
updateDerived(); updateDerived();
} }
double QgsMapSettings::extentBuffer() const
{
return mExtentBuffer;
}
void QgsMapSettings::setExtentBuffer( const double buffer )
{
mExtentBuffer = buffer;
}
double QgsMapSettings::rotation() const double QgsMapSettings::rotation() const
{ {
return mRotation; return mRotation;

View File

@ -102,6 +102,22 @@ class CORE_EXPORT QgsMapSettings
*/ */
void setExtent( const QgsRectangle &rect, bool magnified = true ); void setExtent( const QgsRectangle &rect, bool magnified = true );
/**
* Returns the buffer in map units to use around the visible extent for rendering
* symbols whose corresponding geometries are outside the visible extent.
* \see setExtentBuffer()
* \since QGIS 3.10
*/
double extentBuffer() const;
/**
* Sets the buffer in map units to use around the visible extent for rendering
* symbols whose corresponding geometries are outside the visible extent. This
* is useful when using tiles to avoid cut symbols at tile boundaries.
* \since QGIS 3.10
*/
void setExtentBuffer( double buffer );
//! Returns the size of the resulting map image //! Returns the size of the resulting map image
QSize outputSize() const; QSize outputSize() const;
//! Sets the size of the resulting map image //! Sets the size of the resulting map image
@ -539,6 +555,7 @@ class CORE_EXPORT QgsMapSettings
float mDevicePixelRatio = 1.0; float mDevicePixelRatio = 1.0;
QgsRectangle mExtent; QgsRectangle mExtent;
double mExtentBuffer = 0.0;
double mRotation = 0.0; double mRotation = 0.0;
double mMagnificationFactor = 1.0; double mMagnificationFactor = 1.0;

View File

@ -157,8 +157,10 @@ bool QgsRenderContext::testFlag( QgsRenderContext::Flag flag ) const
QgsRenderContext QgsRenderContext::fromMapSettings( const QgsMapSettings &mapSettings ) QgsRenderContext QgsRenderContext::fromMapSettings( const QgsMapSettings &mapSettings )
{ {
QgsRenderContext ctx; QgsRenderContext ctx;
QgsRectangle extent = mapSettings.visibleExtent();
extent.grow( mapSettings.extentBuffer() );
ctx.setMapToPixel( mapSettings.mapToPixel() ); ctx.setMapToPixel( mapSettings.mapToPixel() );
ctx.setExtent( mapSettings.visibleExtent() ); ctx.setExtent( extent );
ctx.setMapExtent( mapSettings.visibleExtent() ); ctx.setMapExtent( mapSettings.visibleExtent() );
ctx.setFlag( DrawEditingInfo, mapSettings.testFlag( QgsMapSettings::DrawEditingInfo ) ); ctx.setFlag( DrawEditingInfo, mapSettings.testFlag( QgsMapSettings::DrawEditingInfo ) );
ctx.setFlag( ForceVectorOutput, mapSettings.testFlag( QgsMapSettings::ForceVectorOutput ) ); ctx.setFlag( ForceVectorOutput, mapSettings.testFlag( QgsMapSettings::ForceVectorOutput ) );

View File

@ -111,6 +111,11 @@ int QgsServerProjectUtils::wmsImageQuality( const QgsProject &project )
return project.readNumEntry( QStringLiteral( "WMSImageQuality" ), QStringLiteral( "/" ), -1 ); return project.readNumEntry( QStringLiteral( "WMSImageQuality" ), QStringLiteral( "/" ), -1 );
} }
int QgsServerProjectUtils::wmsTileBuffer( const QgsProject &project )
{
return project.readNumEntry( QStringLiteral( "WMSTileBuffer" ), QStringLiteral( "/" ), 0 );
}
int QgsServerProjectUtils::wmsMaxAtlasFeatures( const QgsProject &project ) int QgsServerProjectUtils::wmsMaxAtlasFeatures( const QgsProject &project )
{ {
return project.readNumEntry( QStringLiteral( "WMSMaxAtlasFeatures" ), QStringLiteral( "/" ), 1 ); return project.readNumEntry( QStringLiteral( "WMSMaxAtlasFeatures" ), QStringLiteral( "/" ), 1 );

View File

@ -147,6 +147,14 @@ namespace QgsServerProjectUtils
*/ */
SERVER_EXPORT int wmsImageQuality( const QgsProject &project ); SERVER_EXPORT int wmsImageQuality( const QgsProject &project );
/**
* Returns the tile buffer in pixels for WMS images defined in a QGIS project.
* \param project the QGIS project
* \returns tile buffer if defined in project, 0 otherwise.
* \since QGIS 3.10
*/
SERVER_EXPORT int wmsTileBuffer( const QgsProject &project );
/** /**
* Returns the maximum number of atlas features which can be printed in a request * Returns the maximum number of atlas features which can be printed in a request
* \param project the QGIS project * \param project the QGIS project

View File

@ -44,6 +44,7 @@ namespace QgsWms
context.setFlag( QgsWmsRenderContext::AddHighlightLayers ); context.setFlag( QgsWmsRenderContext::AddHighlightLayers );
context.setFlag( QgsWmsRenderContext::AddExternalLayers ); context.setFlag( QgsWmsRenderContext::AddExternalLayers );
context.setFlag( QgsWmsRenderContext::SetAccessControl ); context.setFlag( QgsWmsRenderContext::SetAccessControl );
context.setFlag( QgsWmsRenderContext::UseTileBuffer );
context.setParameters( parameters ); context.setParameters( parameters );
// rendering // rendering

View File

@ -223,6 +223,11 @@ namespace QgsWms
QVariant( 0 ) ); QVariant( 0 ) );
save( pQuality ); save( pQuality );
const QgsWmsParameter pTiled( QgsWmsParameter::TILED,
QVariant::Bool,
QVariant( false ) );
save( pTiled );
const QgsWmsParameter pBoxSpace( QgsWmsParameter::BOXSPACE, const QgsWmsParameter pBoxSpace( QgsWmsParameter::BOXSPACE,
QVariant::Double, QVariant::Double,
QVariant( 2.0 ) ); QVariant( 2.0 ) );
@ -944,6 +949,16 @@ namespace QgsWms
return mWmsParameters[ QgsWmsParameter::IMAGE_QUALITY ].toInt(); return mWmsParameters[ QgsWmsParameter::IMAGE_QUALITY ].toInt();
} }
QString QgsWmsParameters::tiled() const
{
return mWmsParameters[ QgsWmsParameter::TILED ].toString();
}
bool QgsWmsParameters::tiledAsBool() const
{
return mWmsParameters[ QgsWmsParameter::TILED ].toBool();
}
QString QgsWmsParameters::showFeatureCount() const QString QgsWmsParameters::showFeatureCount() const
{ {
return mWmsParameters[ QgsWmsParameter::SHOWFEATURECOUNT ].toString(); return mWmsParameters[ QgsWmsParameter::SHOWFEATURECOUNT ].toString();

View File

@ -177,7 +177,8 @@ namespace QgsWms
ATLAS_PK, ATLAS_PK,
FORMAT_OPTIONS, FORMAT_OPTIONS,
SRCWIDTH, SRCWIDTH,
SRCHEIGHT SRCHEIGHT,
TILED
}; };
Q_ENUM( Name ) Q_ENUM( Name )
@ -628,6 +629,20 @@ namespace QgsWms
*/ */
int imageQualityAsInt() const; int imageQualityAsInt() const;
/**
* Returns TILED parameter or an empty string if not
* defined.
* \since QGIS 3.10
*/
QString tiled() const;
/**
* Returns TILED parameter as a boolean.
* \throws QgsBadRequestException
* \since QGIS 3.10
*/
bool tiledAsBool() const;
/** /**
* Returns infoFormat. If the INFO_FORMAT parameter is not used, then the * Returns infoFormat. If the INFO_FORMAT parameter is not used, then the
* default value is text/plain. * default value is text/plain.

View File

@ -24,7 +24,6 @@
using namespace QgsWms; using namespace QgsWms;
const double OGC_PX_M = 0.00028; // OGC reference pixel size in meter const double OGC_PX_M = 0.00028; // OGC reference pixel size in meter
QgsWmsRenderContext::QgsWmsRenderContext( const QgsProject *project, QgsServerInterface *interface ) QgsWmsRenderContext::QgsWmsRenderContext( const QgsProject *project, QgsServerInterface *interface )
: mProject( project ) : mProject( project )
, mInterface( interface ) , mInterface( interface )
@ -132,6 +131,18 @@ int QgsWmsRenderContext::imageQuality() const
return imageQuality; return imageQuality;
} }
int QgsWmsRenderContext::tileBuffer() const
{
int tileBuffer = 0;
if ( mParameters.tiledAsBool() )
{
tileBuffer = QgsServerProjectUtils::wmsTileBuffer( *mProject );
}
return tileBuffer;
}
int QgsWmsRenderContext::precision() const int QgsWmsRenderContext::precision() const
{ {
int precision = QgsServerProjectUtils::wmsFeatureInfoPrecision( *mProject ); int precision = QgsServerProjectUtils::wmsFeatureInfoPrecision( *mProject );
@ -638,6 +649,26 @@ bool QgsWmsRenderContext::isValidWidthHeight() const
return true; return true;
} }
double QgsWmsRenderContext::mapTileBuffer( const int mapWidth ) const
{
double buffer;
if ( mFlags & UseTileBuffer )
{
const QgsRectangle extent = mParameters.bboxAsRectangle();
if ( !mParameters.bbox().isEmpty() && extent.isEmpty() )
{
throw QgsBadRequestException( QgsServiceException::QGIS_InvalidParameterValue,
mParameters[QgsWmsParameter::BBOX] );
}
buffer = tileBuffer() * ( extent.width() / mapWidth );
}
else
{
buffer = 0;
}
return buffer;
}
QSize QgsWmsRenderContext::mapSize( const bool aspectRatio ) const QSize QgsWmsRenderContext::mapSize( const bool aspectRatio ) const
{ {
int width = mapWidth(); int width = mapWidth();

View File

@ -47,7 +47,8 @@ namespace QgsWms
AddQueryLayers = 0x80, AddQueryLayers = 0x80,
UseWfsLayersOnly = 0x100, UseWfsLayersOnly = 0x100,
AddExternalLayers = 0x200, AddExternalLayers = 0x200,
UseSrcWidthHeight = 0x400 UseSrcWidthHeight = 0x400,
UseTileBuffer = 0x800
}; };
Q_DECLARE_FLAGS( Flags, Flag ) Q_DECLARE_FLAGS( Flags, Flag )
@ -148,6 +149,13 @@ namespace QgsWms
*/ */
int imageQuality() const; int imageQuality() const;
/**
* Returns the tile buffer value to use for rendering according to the
* current configuration.
* \since QGIS 3.10
*/
int tileBuffer() const;
/** /**
* Returns the precision to use according to the current configuration. * Returns the precision to use according to the current configuration.
*/ */
@ -200,6 +208,12 @@ namespace QgsWms
*/ */
QMap<QString, QList<QgsMapLayer *> > layerGroups() const; QMap<QString, QList<QgsMapLayer *> > layerGroups() const;
/**
* Returns the tile buffer in geographical units for the given map width in pixels.
* \since QGIS 3.10
*/
double mapTileBuffer( int mapWidth ) const;
/** /**
* Returns the size (in pixels) of the map to render, according to width * Returns the size (in pixels) of the map to render, according to width
* and height WMS parameters as well as the \a aspectRatio option. * and height WMS parameters as well as the \a aspectRatio option.

View File

@ -17,7 +17,6 @@
* * * *
***************************************************************************/ ***************************************************************************/
#include "qgswmsutils.h" #include "qgswmsutils.h"
#include "qgsjsonutils.h" #include "qgsjsonutils.h"
#include "qgswmsrenderer.h" #include "qgswmsrenderer.h"
@ -1028,6 +1027,9 @@ namespace QgsWms
mapSettings.setExtent( mapExtent ); mapSettings.setExtent( mapExtent );
// set the extent buffer
mapSettings.setExtentBuffer( mContext.mapTileBuffer( paintDevice->width() ) );
/* Define the background color /* Define the background color
* Transparent or colored * Transparent or colored
*/ */

View File

@ -236,7 +236,7 @@
</sizepolicy> </sizepolicy>
</property> </property>
<property name="currentIndex"> <property name="currentIndex">
<number>4</number> <number>8</number>
</property> </property>
<widget class="QWidget" name="mProjOptsGeneral"> <widget class="QWidget" name="mProjOptsGeneral">
<layout class="QVBoxLayout" name="verticalLayout_6"> <layout class="QVBoxLayout" name="verticalLayout_6">
@ -265,8 +265,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>537</width> <width>535</width>
<height>795</height> <height>740</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_8"> <layout class="QVBoxLayout" name="verticalLayout_8">
@ -863,8 +863,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>546</width> <width>544</width>
<height>164</height> <height>155</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_7"> <layout class="QVBoxLayout" name="verticalLayout_7">
@ -938,8 +938,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>269</width> <width>266</width>
<height>553</height> <height>524</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_12"> <layout class="QVBoxLayout" name="verticalLayout_12">
@ -1514,8 +1514,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>167</width> <width>165</width>
<height>55</height> <height>52</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_17"> <layout class="QVBoxLayout" name="verticalLayout_17">
@ -1575,9 +1575,9 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>-793</y>
<width>598</width> <width>671</width>
<height>2732</height> <height>2614</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_13"> <layout class="QVBoxLayout" name="verticalLayout_13">
@ -2437,6 +2437,23 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="11" column="0" colspan="3">
<layout class="QHBoxLayout" name="horizontalLayout_18">
<item>
<widget class="QLabel" name="label_33">
<property name="toolTip">
<string>When using tiles set this to the size of the larger symbols to avoid cut symbols at tile boundaries. This works by drawing features that are outside the tile extent.</string>
</property>
<property name="text">
<string>Tile buffer in pixels</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="mWMSTileBufferSpinBox"/>
</item>
</layout>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>

View File

@ -40,6 +40,7 @@ class TestQgsMapSettings: public QObject
void testGettersSetters(); void testGettersSetters();
void testLabelingEngineSettings(); void testLabelingEngineSettings();
void visibleExtent(); void visibleExtent();
void extentBuffer();
void mapUnitsPerPixel(); void mapUnitsPerPixel();
void testDevicePixelRatio(); void testDevicePixelRatio();
void visiblePolygon(); void visiblePolygon();
@ -160,6 +161,17 @@ void TestQgsMapSettings::visibleExtent()
QCOMPARE( ms.visibleExtent().toString( 0 ), QString( "-56,-81 : 156,131" ) ); QCOMPARE( ms.visibleExtent().toString( 0 ), QString( "-56,-81 : 156,131" ) );
} }
void TestQgsMapSettings::extentBuffer()
{
QgsMapSettings ms;
ms.setExtent( QgsRectangle( 50, 50, 100, 100 ) );
ms.setOutputSize( QSize( 50, 50 ) );
ms.setExtentBuffer( 10 );
QgsRectangle visibleExtent = ms.visibleExtent();
visibleExtent.grow( ms.extentBuffer() );
QCOMPARE( visibleExtent.toString( 0 ), QString( "40,40 : 110,110" ) );
}
void TestQgsMapSettings::mapUnitsPerPixel() void TestQgsMapSettings::mapUnitsPerPixel()
{ {
QgsMapSettings ms; QgsMapSettings ms;

View File

@ -1578,6 +1578,62 @@ class TestQgsServerWMSGetMap(QgsServerTestBase):
r, h = self._result(self._execute_request(qs)) r, h = self._result(self._execute_request(qs))
self._img_diff_error(r, h, "WMS_GetMap_Group_Layer_Order") self._img_diff_error(r, h, "WMS_GetMap_Group_Layer_Order")
def test_wms_getmap_tile_buffer(self):
"""Test the implementation of tile_map_edge_buffer from mapserver."""
# Check without tiled parameters (default is false)
qs = "?" + "&".join(["%s=%s" % i for i in list({
"MAP": urllib.parse.quote(os.path.join(self.testdata_path, 'wms_tile_buffer.qgs')),
"SERVICE": "WMS",
"VERSION": "1.3.0",
"REQUEST": "GetMap",
"BBOX": "310187,6163153,324347,6177313",
"CRS": "EPSG:3857",
"WIDTH": "512",
"HEIGHT": "512",
"LAYERS": "wms_tile_buffer_data",
"FORMAT": "image/png"
}.items())])
r, h = self._result(self._execute_request(qs))
self._img_diff_error(r, h, "WMS_GetMap_Tiled_False")
# Check with tiled=false
qs = "?" + "&".join(["%s=%s" % i for i in list({
"MAP": urllib.parse.quote(os.path.join(self.testdata_path, 'wms_tile_buffer.qgs')),
"SERVICE": "WMS",
"VERSION": "1.3.0",
"REQUEST": "GetMap",
"BBOX": "310187,6163153,324347,6177313",
"CRS": "EPSG:3857",
"WIDTH": "512",
"HEIGHT": "512",
"LAYERS": "wms_tile_buffer_data",
"FORMAT": "image/png",
"TILED": "false"
}.items())])
r, h = self._result(self._execute_request(qs))
self._img_diff_error(r, h, "WMS_GetMap_Tiled_False")
# Check with tiled=true
qs = "?" + "&".join(["%s=%s" % i for i in list({
"MAP": urllib.parse.quote(os.path.join(self.testdata_path, 'wms_tile_buffer.qgs')),
"SERVICE": "WMS",
"VERSION": "1.3.0",
"REQUEST": "GetMap",
"BBOX": "310187,6163153,324347,6177313",
"CRS": "EPSG:3857",
"WIDTH": "512",
"HEIGHT": "512",
"LAYERS": "wms_tile_buffer_data",
"FORMAT": "image/png",
"TILED": "true"
}.items())])
r, h = self._result(self._execute_request(qs))
self._img_diff_error(r, h, "WMS_GetMap_Tiled_True")
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,598 @@
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
<qgis projectname="" version="3.7.0-Master">
<homePath path=""/>
<title></title>
<autotransaction active="0"/>
<evaluateDefaultValues active="0"/>
<trust active="1"/>
<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="wms_tile_buffer_data" id="wms_tile_buffer_data_fcfdbf36_dd5a_45d6_b770_bdbb3794cf98" providerKey="ogr" checked="Qt::Checked" source="/home/lbartoletti/eleonore-test/wms_tile_buffer_data.gpkg|layername=wms_tile_buffer_data" expanded="1">
<customproperties/>
</layer-tree-layer>
<custom-order enabled="0">
<item>wms_tile_buffer_data_fcfdbf36_dd5a_45d6_b770_bdbb3794cf98</item>
</custom-order>
</layer-tree-group>
<snapping-settings unit="1" type="1" enabled="0" tolerance="12" intersection-snapping="0" mode="2">
<individual-layer-settings>
<layer-setting type="1" enabled="0" tolerance="12" id="wms_tile_buffer_data_fcfdbf36_dd5a_45d6_b770_bdbb3794cf98" units="1"/>
</individual-layer-settings>
</snapping-settings>
<relations/>
<mapcanvas annotationsVisible="1" name="theMapCanvas">
<units>meters</units>
<extent>
<xmin>304918.47943539364496246</xmin>
<ymin>6160178.90903625823557377</ymin>
<xmax>329687.225462922884617</xmax>
<ymax>6174497.13128242827951908</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>
<legend updateDrawingOrder="true">
<legendlayer name="wms_tile_buffer_data" drawingOrder="-1" showFeatureCount="0" checked="Qt::Checked" open="true">
<filegroup open="true" hidden="false">
<legendlayerfile isInOverview="0" layerid="wms_tile_buffer_data_fcfdbf36_dd5a_45d6_b770_bdbb3794cf98" visible="1"/>
</filegroup>
</legendlayer>
</legend>
<mapViewDocks/>
<mapViewDocks3D/>
<projectlayers>
<maplayer hasScaleBasedVisibilityFlag="0" simplifyMaxScale="1" refreshOnNotifyMessage="" simplifyLocal="1" autoRefreshTime="0" simplifyDrawingHints="0" wkbType="Point" minScale="150001" simplifyDrawingTol="1" simplifyAlgorithm="0" geometry="Point" autoRefreshEnabled="0" maxScale="1" refreshOnNotifyEnabled="0" readOnly="0" type="vector" labelsEnabled="0" styleCategories="AllStyleCategories">
<extent>
<xmin>289998</xmin>
<ymin>6156740</ymin>
<xmax>344497</xmax>
<ymax>6188080</ymax>
</extent>
<id>wms_tile_buffer_data_fcfdbf36_dd5a_45d6_b770_bdbb3794cf98</id>
<datasource>./wms_tile_buffer_data.gpkg|layername=wms_tile_buffer_data</datasource>
<keywordList>
<value></value>
</keywordList>
<layername>wms_tile_buffer_data</layername>
<srs>
<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>
</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>true</geographicflag>
</spatialrefsys>
</crs>
<extent/>
</resourceMetadata>
<provider encoding="UTF-8">ogr</provider>
<vectorjoins/>
<layerDependencies/>
<dataDependencies/>
<legend type="default-vector"/>
<expressionfields/>
<map-layer-style-manager current="défaut">
<map-layer-style name="défaut"/>
</map-layer-style-manager>
<auxiliaryLayer/>
<flags>
<Identifiable>1</Identifiable>
<Removable>1</Removable>
<Searchable>1</Searchable>
</flags>
<renderer-v2 enableorderby="0" type="singleSymbol" forceraster="0" symbollevels="0">
<symbols>
<symbol name="0" type="marker" clip_to_extent="1" alpha="1" force_rhr="0">
<layer locked="0" enabled="1" class="SvgMarker" pass="0">
<prop v="0" k="angle"/>
<prop v="190,178,151,255" k="color"/>
<prop v="0" k="fixedAspectRatio"/>
<prop v="1" k="horizontal_anchor_point"/>
<prop v="accommodation/accommodation_bed_and_breakfast.svg" k="name"/>
<prop v="0,-30" k="offset"/>
<prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/>
<prop v="Pixel" k="offset_unit"/>
<prop v="35,35,35,255" k="outline_color"/>
<prop v="0" k="outline_width"/>
<prop v="3x:0,0,0,0,0,0" k="outline_width_map_unit_scale"/>
<prop v="Pixel" k="outline_width_unit"/>
<prop v="diameter" k="scale_method"/>
<prop v="60" k="size"/>
<prop v="3x:0,0,0,0,0,0" k="size_map_unit_scale"/>
<prop v="Pixel" k="size_unit"/>
<prop v="1" k="vertical_anchor_point"/>
<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 value="id" key="dualview/previewExpressions"/>
<property value="0" key="embeddedWidgets/count"/>
<property key="variableNames"/>
<property key="variableValues"/>
</customproperties>
<blendMode>0</blendMode>
<featureBlendMode>0</featureBlendMode>
<layerOpacity>1</layerOpacity>
<SingleCategoryDiagramRenderer attributeLegend="1" diagramType="Histogram">
<DiagramCategory rotationOffset="270" penAlpha="255" backgroundColor="#ffffff" labelPlacementMethod="XHeight" scaleDependency="Area" height="15" width="15" enabled="0" sizeType="MM" lineSizeType="MM" diagramOrientation="Up" penWidth="0" penColor="#000000" sizeScale="3x:0,0,0,0,0,0" backgroundAlpha="255" opacity="1" scaleBasedVisibility="0" barWidth="5" lineSizeScale="3x:0,0,0,0,0,0" maxScaleDenominator="1e+08" minimumSize="0" minScaleDenominator="1">
<fontProperties style="" description=".SF NS Text,13,-1,5,50,0,0,0,0,0"/>
<attribute color="#000000" label="" field=""/>
</DiagramCategory>
</SingleCategoryDiagramRenderer>
<DiagramLayerSettings placement="0" dist="0" showAll="1" obstacle="0" priority="0" linePlacementFlags="18" zIndex="0">
<properties>
<Option type="Map">
<Option name="name" type="QString" value=""/>
<Option name="properties"/>
<Option name="type" type="QString" value="collection"/>
</Option>
</properties>
</DiagramLayerSettings>
<geometryOptions geometryPrecision="0" removeDuplicateNodes="0">
<activeChecks/>
<checkConfiguration/>
</geometryOptions>
<fieldConfiguration>
<field name="fid">
<editWidget type="">
<config>
<Option/>
</config>
</editWidget>
</field>
<field name="id">
<editWidget type="TextEdit">
<config>
<Option/>
</config>
</editWidget>
</field>
</fieldConfiguration>
<aliases>
<alias name="" field="fid" index="0"/>
<alias name="" field="id" index="1"/>
</aliases>
<excludeAttributesWMS/>
<excludeAttributesWFS/>
<defaults>
<default field="fid" applyOnUpdate="0" expression=""/>
<default field="id" applyOnUpdate="0" expression=""/>
</defaults>
<constraints>
<constraint unique_strength="1" field="fid" constraints="3" exp_strength="0" notnull_strength="1"/>
<constraint unique_strength="1" field="id" constraints="3" exp_strength="0" notnull_strength="1"/>
</constraints>
<constraintExpressions>
<constraint exp="" field="fid" desc=""/>
<constraint exp="" field="id" desc=""/>
</constraintExpressions>
<expressionfields/>
<attributeactions>
<defaultAction value="{00000000-0000-0000-0000-000000000000}" key="Canvas"/>
</attributeactions>
<attributetableconfig actionWidgetStyle="dropDown" sortExpression="" sortOrder="0">
<columns>
<column name="id" type="field" width="-1" hidden="0"/>
<column name="contract_code" type="field" width="-1" hidden="0"/>
<column name="contract_name" type="field" width="-1" hidden="0"/>
<column type="actions" width="-1" hidden="1"/>
<column name="asset_uid" type="field" width="-1" hidden="0"/>
<column name="bu_id" type="field" width="-1" hidden="0"/>
<column name="bu_name" type="field" width="-1" hidden="0"/>
<column name="country_name" type="field" width="-1" hidden="0"/>
<column name="community_id" type="field" width="-1" hidden="0"/>
<column name="community_name" type="field" width="-1" hidden="0"/>
<column name="time_zone" type="field" width="-1" hidden="0"/>
<column name="insertion_time" type="field" width="-1" hidden="0"/>
<column name="reception_time" type="field" width="-1" hidden="0"/>
<column name="asset_id" type="field" width="-1" hidden="0"/>
<column name="gis_asset_id" type="field" width="-1" hidden="0"/>
<column name="gis_asset_uuid" type="field" width="-1" hidden="0"/>
<column name="local_activity_level1" type="field" width="-1" hidden="0"/>
<column name="asset_post_code_local" type="field" width="-1" hidden="0"/>
<column name="asset_town" type="field" width="-1" hidden="0"/>
<column name="asset_street_name" type="field" width="-1" hidden="0"/>
<column name="asset_data_source" type="field" width="-1" hidden="0"/>
<column name="asset_domain" type="field" width="-1" hidden="0"/>
<column name="asset_operator" type="field" width="-1" hidden="0"/>
<column name="asset_owner" type="field" width="-1" hidden="0"/>
<column name="asset_precision_class" type="field" width="-1" hidden="0"/>
<column name="asset_status" type="field" width="-1" hidden="0"/>
<column name="asset_type_text" type="field" width="-1" hidden="0"/>
<column name="asset_subtype" type="field" width="-1" hidden="0"/>
<column name="asset_function" type="field" width="-1" hidden="0"/>
<column name="cmms_asset_id" type="field" width="-1" hidden="0"/>
<column name="asset_name" type="field" width="-1" hidden="0"/>
<column name="asset_street_name_added_information" type="field" width="-1" hidden="0"/>
<column name="asset_commissioning_date" type="field" width="-1" hidden="0"/>
<column name="asset_closure_date" type="field" width="-1" hidden="0"/>
<column name="tank_vessels_number" type="field" width="-1" hidden="0"/>
<column name="tank_vessels_volume_capacity" type="field" width="-1" hidden="0"/>
<column name="installation_invert_altitude" type="field" width="-1" hidden="0"/>
<column name="installation_overflow_altitude" type="field" width="-1" hidden="0"/>
<column name="installation_land_altitude" type="field" width="-1" hidden="0"/>
<column name="asset_longitude" type="field" width="-1" hidden="0"/>
<column name="asset_latitude" type="field" width="-1" hidden="0"/>
<column name="angle" type="field" width="-1" hidden="0"/>
</columns>
</attributetableconfig>
<conditionalstyles>
<rowstyles/>
<fieldstyles/>
</conditionalstyles>
<editform tolerant="1">.</editform>
<editforminit/>
<editforminitcodesource>0</editforminitcodesource>
<editforminitfilepath></editforminitfilepath>
<editforminitcode></editforminitcode>
<featformsuppress>0</featformsuppress>
<editorlayout>generatedlayout</editorlayout>
<editable>
<field name="activity_code" editable="1"/>
<field name="activity_name" editable="1"/>
<field name="activity_type" editable="1"/>
<field name="address" editable="1"/>
<field name="angle" editable="1"/>
<field name="asset_closure_date" editable="1"/>
<field name="asset_commissioning_date" editable="1"/>
<field name="asset_data_source" editable="1"/>
<field name="asset_domain" editable="1"/>
<field name="asset_function" editable="1"/>
<field name="asset_id" editable="1"/>
<field name="asset_latitude" editable="1"/>
<field name="asset_longitude" editable="1"/>
<field name="asset_name" editable="1"/>
<field name="asset_operator" editable="1"/>
<field name="asset_owner" editable="1"/>
<field name="asset_post_code_local" editable="1"/>
<field name="asset_precision_class" editable="1"/>
<field name="asset_status" editable="1"/>
<field name="asset_street_name" editable="1"/>
<field name="asset_street_name_added_information" editable="1"/>
<field name="asset_subtype" editable="1"/>
<field name="asset_town" editable="1"/>
<field name="asset_type_text" editable="1"/>
<field name="asset_uid" editable="1"/>
<field name="bottom_slab_level" editable="1"/>
<field name="bu_id" editable="1"/>
<field name="bu_name" editable="1"/>
<field name="capacity" editable="1"/>
<field name="city_code" editable="1"/>
<field name="city_name" editable="1"/>
<field name="cmms_asset_id" editable="1"/>
<field name="code" editable="1"/>
<field name="community_id" editable="1"/>
<field name="community_name" editable="1"/>
<field name="contract_code" editable="1"/>
<field name="contract_name" editable="1"/>
<field name="country_name" editable="1"/>
<field name="data_source" editable="1"/>
<field name="date_insert" editable="1"/>
<field name="date_maj_ddesk" editable="1"/>
<field name="date_update" editable="1"/>
<field name="default" editable="1"/>
<field name="district_name" editable="1"/>
<field name="ditrict_code" editable="1"/>
<field name="ditrict_name" editable="1"/>
<field name="end_of_operation_date" editable="1"/>
<field name="flow_daily" editable="1"/>
<field name="flow_peak" editable="1"/>
<field name="gis_asset_id" editable="1"/>
<field name="gis_asset_uuid" editable="1"/>
<field name="ground_level" editable="1"/>
<field name="id" editable="1"/>
<field name="insertion_time" editable="1"/>
<field name="installation_invert_altitude" editable="1"/>
<field name="installation_land_altitude" editable="1"/>
<field name="installation_overflow_altitude" editable="1"/>
<field name="local_activity_level1" editable="1"/>
<field name="name" editable="1"/>
<field name="num_tanks" editable="1"/>
<field name="operator" editable="1"/>
<field name="overflow_level" editable="1"/>
<field name="owner" editable="1"/>
<field name="power" editable="1"/>
<field name="precision_class" editable="1"/>
<field name="pressure_zone_name" editable="1"/>
<field name="pressure_zone_type" editable="1"/>
<field name="pump_nb" editable="1"/>
<field name="reception_time" editable="1"/>
<field name="service_date" editable="1"/>
<field name="service_year" editable="1"/>
<field name="source_id" editable="1"/>
<field name="status" editable="1"/>
<field name="street_name" editable="1"/>
<field name="tank_vessels_number" editable="1"/>
<field name="tank_vessels_volume_capacity" editable="1"/>
<field name="time_zone" editable="1"/>
<field name="type" editable="1"/>
</editable>
<labelOnTop>
<field name="activity_code" labelOnTop="0"/>
<field name="activity_name" labelOnTop="0"/>
<field name="activity_type" labelOnTop="0"/>
<field name="address" labelOnTop="0"/>
<field name="angle" labelOnTop="0"/>
<field name="asset_closure_date" labelOnTop="0"/>
<field name="asset_commissioning_date" labelOnTop="0"/>
<field name="asset_data_source" labelOnTop="0"/>
<field name="asset_domain" labelOnTop="0"/>
<field name="asset_function" labelOnTop="0"/>
<field name="asset_id" labelOnTop="0"/>
<field name="asset_latitude" labelOnTop="0"/>
<field name="asset_longitude" labelOnTop="0"/>
<field name="asset_name" labelOnTop="0"/>
<field name="asset_operator" labelOnTop="0"/>
<field name="asset_owner" labelOnTop="0"/>
<field name="asset_post_code_local" labelOnTop="0"/>
<field name="asset_precision_class" labelOnTop="0"/>
<field name="asset_status" labelOnTop="0"/>
<field name="asset_street_name" labelOnTop="0"/>
<field name="asset_street_name_added_information" labelOnTop="0"/>
<field name="asset_subtype" labelOnTop="0"/>
<field name="asset_town" labelOnTop="0"/>
<field name="asset_type_text" labelOnTop="0"/>
<field name="asset_uid" labelOnTop="0"/>
<field name="bottom_slab_level" labelOnTop="0"/>
<field name="bu_id" labelOnTop="0"/>
<field name="bu_name" labelOnTop="0"/>
<field name="capacity" labelOnTop="0"/>
<field name="city_code" labelOnTop="0"/>
<field name="city_name" labelOnTop="0"/>
<field name="cmms_asset_id" labelOnTop="0"/>
<field name="code" labelOnTop="0"/>
<field name="community_id" labelOnTop="0"/>
<field name="community_name" labelOnTop="0"/>
<field name="contract_code" labelOnTop="0"/>
<field name="contract_name" labelOnTop="0"/>
<field name="country_name" labelOnTop="0"/>
<field name="data_source" labelOnTop="0"/>
<field name="date_insert" labelOnTop="0"/>
<field name="date_maj_ddesk" labelOnTop="0"/>
<field name="date_update" labelOnTop="0"/>
<field name="default" labelOnTop="0"/>
<field name="district_name" labelOnTop="0"/>
<field name="ditrict_code" labelOnTop="0"/>
<field name="ditrict_name" labelOnTop="0"/>
<field name="end_of_operation_date" labelOnTop="0"/>
<field name="flow_daily" labelOnTop="0"/>
<field name="flow_peak" labelOnTop="0"/>
<field name="gis_asset_id" labelOnTop="0"/>
<field name="gis_asset_uuid" labelOnTop="0"/>
<field name="ground_level" labelOnTop="0"/>
<field name="id" labelOnTop="0"/>
<field name="insertion_time" labelOnTop="0"/>
<field name="installation_invert_altitude" labelOnTop="0"/>
<field name="installation_land_altitude" labelOnTop="0"/>
<field name="installation_overflow_altitude" labelOnTop="0"/>
<field name="local_activity_level1" labelOnTop="0"/>
<field name="name" labelOnTop="0"/>
<field name="num_tanks" labelOnTop="0"/>
<field name="operator" labelOnTop="0"/>
<field name="overflow_level" labelOnTop="0"/>
<field name="owner" labelOnTop="0"/>
<field name="power" labelOnTop="0"/>
<field name="precision_class" labelOnTop="0"/>
<field name="pressure_zone_name" labelOnTop="0"/>
<field name="pressure_zone_type" labelOnTop="0"/>
<field name="pump_nb" labelOnTop="0"/>
<field name="reception_time" labelOnTop="0"/>
<field name="service_date" labelOnTop="0"/>
<field name="service_year" labelOnTop="0"/>
<field name="source_id" labelOnTop="0"/>
<field name="status" labelOnTop="0"/>
<field name="street_name" labelOnTop="0"/>
<field name="tank_vessels_number" labelOnTop="0"/>
<field name="tank_vessels_volume_capacity" labelOnTop="0"/>
<field name="time_zone" labelOnTop="0"/>
<field name="type" labelOnTop="0"/>
</labelOnTop>
<widgets/>
<previewExpression>id</previewExpression>
<mapTip></mapTip>
</maplayer>
</projectlayers>
<layerorder>
<layer id="wms_tile_buffer_data_fcfdbf36_dd5a_45d6_b770_bdbb3794cf98"/>
</layerorder>
<properties>
<DefaultStyles>
<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>
<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>
<Legend>
<filterByMap type="bool">false</filterByMap>
</Legend>
<Macros>
<pythonCode type="QString"></pythonCode>
</Macros>
<Measure>
<Ellipsoid type="QString">WGS84</Ellipsoid>
</Measure>
<Measurement>
<AreaUnits type="QString">&lt;unknown></AreaUnits>
<DistanceUnits type="QString">meters</DistanceUnits>
</Measurement>
<PAL>
<CandidatesLine type="int">50</CandidatesLine>
<CandidatesPoint type="int">16</CandidatesPoint>
<CandidatesPolygon type="int">30</CandidatesPolygon>
<DrawOutlineLabels type="bool">true</DrawOutlineLabels>
<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>
<ProjectionsEnabled type="int">1</ProjectionsEnabled>
</SpatialRefSys>
<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">true</WMSAddWktGeometry>
<WMSContactMail type="QString"></WMSContactMail>
<WMSContactOrganization type="QString"></WMSContactOrganization>
<WMSContactPerson type="QString"></WMSContactPerson>
<WMSContactPhone type="QString"></WMSContactPhone>
<WMSContactPosition type="QString"></WMSContactPosition>
<WMSDefaultMapUnitsPerMm type="double">1</WMSDefaultMapUnitsPerMm>
<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>
<WMSRequestDefinedDataSources type="bool">false</WMSRequestDefinedDataSources>
<WMSRootName type="QString"></WMSRootName>
<WMSSegmentizeFeatureInfoGeometry type="bool">false</WMSSegmentizeFeatureInfoGeometry>
<WMSServiceAbstract type="QString"></WMSServiceAbstract>
<WMSServiceCapabilities type="bool">false</WMSServiceCapabilities>
<WMSServiceTitle type="QString"></WMSServiceTitle>
<WMSTileBuffer type="int">60</WMSTileBuffer>
<WMSUrl type="QString"></WMSUrl>
<WMSUseLayerIDs type="bool">false</WMSUseLayerIDs>
<WMTSGrids>
<CRS type="QStringList"/>
<Config type="QStringList"/>
</WMTSGrids>
<WMTSJpegLayers>
<Group type="QStringList"/>
<Layer type="QStringList">
<value>wms_tile_buffer_data_fcfdbf36_dd5a_45d6_b770_bdbb3794cf98</value>
</Layer>
<Project type="bool">true</Project>
</WMTSJpegLayers>
<WMTSLayers>
<Group type="QStringList"/>
<Layer type="QStringList">
<value>wms_tile_buffer_data_fcfdbf36_dd5a_45d6_b770_bdbb3794cf98</value>
</Layer>
<Project type="bool">true</Project>
</WMTSLayers>
<WMTSMinScale type="int">5000</WMTSMinScale>
<WMTSPngLayers>
<Group type="QStringList"/>
<Layer type="QStringList">
<value>wms_tile_buffer_data_fcfdbf36_dd5a_45d6_b770_bdbb3794cf98</value>
</Layer>
<Project type="bool">true</Project>
</WMTSPngLayers>
<WMTSUrl type="QString"></WMTSUrl>
</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>SALSE Alice</author>
<creation>2019-02-13T15:29:32</creation>
</projectMetadata>
<Annotations/>
<Layouts/>
</qgis>

Binary file not shown.