Run this runner.
Returns:
A JobResult with the content_type and image_data (bytes) of the rendered image.
Source code in src/qgis_server_light/worker/runner/render.py
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 | def run(self):
"""Run this runner.
Returns:
A JobResult with the content_type and image_data (bytes) of the rendered image.
"""
logging.info(f"Executing job: {self.job_info}")
feature_filter = QgsFeatureFilter()
for job_layer_definition in self.job_info.job.layers:
self._provide_layer(job_layer_definition)
map_settings = self._get_map_settings(self.map_layers)
filter_providers = QgsFeatureFilterProviderGroup()
filter_providers.addProvider(feature_filter)
renderer = QgsMapRendererParallelJob(map_settings)
renderer.setFeatureFilterProvider(filter_providers)
event_loop = QEventLoop(self.qgis)
renderer.finished.connect(event_loop.quit)
renderer.start()
event_loop.exec_()
img = renderer.renderedImage()
img.setDotsPerMeterX(int(map_settings.outputDpi() * 39.37))
img.setDotsPerMeterY(int(map_settings.outputDpi() * 39.37))
content_type, image_data = self._encode_image(img, self.job_info.job.format)
return JobResult(
id=self.job_info.id, data=image_data, content_type=content_type
)
|