Skip to content

Commit 687e96e

Browse files
committed
Add custom extent paramter to be used as default extent for generated projects
1 parent 6e5cc7c commit 687e96e

File tree

2 files changed

+30
-9
lines changed

2 files changed

+30
-9
lines changed

xlsformconverter/XLSFormConverter.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ class XLSFormConverter(QObject):
8585
preferred_language = None
8686
basemap = None
8787
crs = QgsCoordinateReferenceSystem("EPSG:3857")
88+
extent = QgsRectangle()
8889
geometries = None
8990
groups_as_tabs = False
9091

@@ -1020,7 +1021,13 @@ def set_basemap(self, basemap):
10201021
self.basemap = basemap
10211022

10221023
def set_crs(self, crs):
1023-
self.crs = crs
1024+
if crs.isValid():
1025+
self.crs = crs
1026+
else:
1027+
self.crs = QgsCoordinateReferenceSystem("EPSG:3857")
1028+
1029+
def set_extent(self, extent):
1030+
self.extent = extent
10241031

10251032
def set_geometries(self, geometries):
10261033
self.geometries = geometries
@@ -1647,7 +1654,9 @@ def convert(
16471654
)
16481655
)
16491656

1650-
if survey_extent:
1657+
if not self.extent.isEmpty():
1658+
survey_extent = self.extent
1659+
elif survey_extent:
16511660
transform = QgsCoordinateTransform(
16521661
current_layer[0].crs(),
16531662
self.output_project.crs(),
@@ -1676,8 +1685,6 @@ def convert(
16761685
survey_extent = None
16771686

16781687
if not survey_extent:
1679-
print("...")
1680-
print(self.output_project.crs().authid())
16811688
if self.output_project.crs().authid() == "EPSG:3857":
16821689
survey_extent = QgsRectangle(-9.88, 33.41, 40.97, 61.11)
16831690
else:
@@ -1710,10 +1717,7 @@ def convert(
17101717
self.output_project.crs(),
17111718
self.output_project.transformContext(),
17121719
)
1713-
print(survey_extent)
17141720
survey_extent = transform.transformBoundingBox(survey_extent)
1715-
print(survey_extent)
1716-
print("---")
17171721

17181722
self.output_extent = survey_extent
17191723

xlsformconverter/XLSFormConverterAlgorithms.py

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
QgsProcessingParameterCrs,
88
QgsProcessingParameterDefinition,
99
QgsProcessingParameterEnum,
10+
QgsProcessingParameterExtent,
1011
QgsProcessingParameterFeatureSource,
1112
QgsProcessingParameterFile,
1213
QgsProcessingParameterFolderDestination,
@@ -37,6 +38,7 @@ class XLSFormConverterAlgorithm(QgsProcessingAlgorithm):
3738
GROUPS_AS_TABS = "GROUPS_AS_TABS"
3839
UPLOAD_TO_QFIELDCLOUD = "UPLOAD_TO_QFIELDCLOUD"
3940
CRS = "CRS"
41+
EXTENT = "EXTENT"
4042
GEOMETRIES = "GEOMETRIES"
4143
OUTPUT = "OUTPUT"
4244

@@ -133,6 +135,14 @@ def initAlgorithm(self, config=None):
133135
param.setFlags(param.flags() | QgsProcessingParameterDefinition.Flag.Advanced)
134136
self.addParameter(param)
135137

138+
param = QgsProcessingParameterExtent(
139+
self.EXTENT,
140+
self.tr("Project extent"),
141+
optional=True,
142+
)
143+
param.setFlags(param.flags() | QgsProcessingParameterDefinition.Flag.Advanced)
144+
self.addParameter(param)
145+
136146
param = QgsProcessingParameterFeatureSource(
137147
self.GEOMETRIES,
138148
self.tr(
@@ -156,6 +166,7 @@ def processAlgorithm(self, parameters, context, feedback):
156166
title = self.parameterAsString(parameters, self.TITLE, context)
157167
language = self.parameterAsString(parameters, self.LANGUAGE, context)
158168
crs = self.parameterAsCrs(parameters, self.CRS, context)
169+
extent = self.parameterAsExtent(parameters, self.EXTENT, context, crs)
159170
geometries = self.parameterAsSource(parameters, self.GEOMETRIES, context)
160171

161172
basemap = "OpenStreetMap"
@@ -185,8 +196,14 @@ def processAlgorithm(self, parameters, context, feedback):
185196
converter.set_basemap(basemap)
186197
converter.set_geometries(geometries)
187198
converter.set_groups_as_tabs(groups_as_tabs)
188-
if crs.isValid():
189-
converter.set_crs(crs)
199+
converter.set_crs(crs)
200+
converter.set_extent(extent)
201+
if not crs.isValid() and not extent.isEmpty():
202+
feedback.pushWarning(
203+
self.tr(
204+
"Project extent parameter ignored, a required project CRS parameter is missing."
205+
)
206+
)
190207

191208
project_file = converter.convert(output_directory)
192209

0 commit comments

Comments
 (0)