From d3df2c2ef8d253ffa3365d0eec326bb611b9b7e2 Mon Sep 17 00:00:00 2001 From: Guilhem Moulin Date: Wed, 21 May 2025 14:15:12 +0200 Subject: Factor out densification logic from getExtent() into own function. And only densify if needs be. Most sources are already in SWEREF 99 (modulo axis mapping strategy) so in pratice we can use mere rectangles as spatial filters. --- import_source.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) (limited to 'import_source.py') diff --git a/import_source.py b/import_source.py index 6fe4acf..04dea4b 100644 --- a/import_source.py +++ b/import_source.py @@ -43,7 +43,13 @@ from osgeo.gdalconst import ( from osgeo import gdalconst from common import BadConfiguration, escape_identifier, escape_literal_str -from common_gdal import gdalSetOpenExArgs, gdalGetMetadataItem, gdalVersionMin, formatTZFlag +from common_gdal import ( + gdalSetOpenExArgs, + gdalGetMetadataItem, + gdalVersionMin, + formatTZFlag, + getSpatialFilterFromGeometry, +) def openOutputDS(def_dict : dict[str, Any]) -> gdal.Dataset: """Open and return the output DS. It is created if create=False or @@ -692,16 +698,9 @@ def _importSource2(lyr_dst : ogr.Layer, path : str, args : dict[str,Any], count1 = -1 if args.get('spatial-filter', True) and extent is not None: - if extent.GetSpatialReference().IsSame(srs): - extent2 = extent - else: - extent2 = extent.Clone() - if extent2.TransformTo(srs) != ogr.OGRERR_NONE: - raise RuntimeError(f'Could not transform extent {extent.ExportToWkt()} ' - f'to {srs.GetName()}') - - #logging.debug('Applying extent: %s', extent2.ExportToWkt()) - lyr.SetSpatialFilter(extent2) + spatialFilter = getSpatialFilterFromGeometry(extent, srs) + logging.debug('Setting spatial filter to %s', spatialFilter.ExportToWkt()) + lyr.SetSpatialFilter(spatialFilter) if lyr.TestCapability(ogr.OLCFastFeatureCount): count1 = lyr.GetFeatureCount(force=0) -- cgit v1.2.3