diff options
author | Guilhem Moulin <guilhem@fripost.org> | 2025-05-21 14:15:12 +0200 |
---|---|---|
committer | Guilhem Moulin <guilhem@fripost.org> | 2025-05-21 14:26:38 +0200 |
commit | d3df2c2ef8d253ffa3365d0eec326bb611b9b7e2 (patch) | |
tree | 9e82668a3015558ee7e8a773d7e0c275f25806f6 /import_source.py | |
parent | 41118a39c0123505487b43697fa411df33467b90 (diff) |
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.
Diffstat (limited to 'import_source.py')
-rw-r--r-- | import_source.py | 21 |
1 files changed, 10 insertions, 11 deletions
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) |