aboutsummaryrefslogtreecommitdiffstats
path: root/import_source.py
diff options
context:
space:
mode:
authorGuilhem Moulin <guilhem@fripost.org>2025-05-21 14:15:12 +0200
committerGuilhem Moulin <guilhem@fripost.org>2025-05-21 14:26:38 +0200
commitd3df2c2ef8d253ffa3365d0eec326bb611b9b7e2 (patch)
tree9e82668a3015558ee7e8a773d7e0c275f25806f6 /import_source.py
parent41118a39c0123505487b43697fa411df33467b90 (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.py21
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)