def test_project_extent(self): p = QgsProject() p.read(sorted(list(projects().values()))[2]) self.assertTrue(QgsServerProjectUtils.wmsExtent(p).isNull()) info = project_info(sorted(list(projects().values()))[2]) self.assertEqual( re.sub(r'(\.\d{2})\d+', r'\1', str(info['geographic_extent'])), '[10.68, 52.41, 10.74, 52.45]')
def project_wms(project, crs): """Calculate the extent from WMS advertized (if defined) or from WMS published layers. :param project: [description] :type project: [type] :returns: a tuple with WMS extent and list of published WMS typenames :rtype: tuple """ wms_typenames = [] extent = '' restricted_wms = QgsServerProjectUtils.wmsRestrictedLayers(project) use_ids = QgsServerProjectUtils.wmsUseLayerIds(project) for l in project.mapLayers().values(): if l.name() not in restricted_wms: lid = l.id() if use_ids else l.name() wms_typenames.append(lid) extent = QgsServerProjectUtils.wmsExtent(project) if extent.isNull(): target_crs = QgsCoordinateReferenceSystem.fromEpsgId( int(crs.split(':')[1])) for l in project.mapLayers().values(): if l.name() not in restricted_wms: l_extent = l.extent() if l.crs() != target_crs: ct = QgsCoordinateTransform(l.crs(), target_crs, project.transformContext()) l_extent = ct.transform(l_extent) if extent.isNull(): extent = l_extent else: extent.combineExtentWith(l_extent) else: if crs != project.crs().authid(): target_crs = QgsCoordinateReferenceSystem.fromEpsgId( int(crs.split(':')[1])) ct = QgsCoordinateTransform(project.crs(), target_crs, project.transformContext()) extent = ct.transform(extent) return extent, wms_typenames