Beispiel #1
0
 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]')
Beispiel #2
0
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