diff options
Diffstat (limited to 'export_mvt.py')
-rw-r--r-- | export_mvt.py | 29 |
1 files changed, 5 insertions, 24 deletions
diff --git a/export_mvt.py b/export_mvt.py index e9b54f4..73d2ac7 100644 --- a/export_mvt.py +++ b/export_mvt.py @@ -164,12 +164,9 @@ def exportSourceLayer(ds_src : gdal.Dataset, if extent is None: spatialFilter = None - clip = None else: # transform extent to source SRS spatialFilter = getSpatialFilterFromGeometry(extent, srs_src) - # ensure clipping geometries remain simple (mere rectangles) - clip = getSpatialFilterFromGeometry(extent, srs_dst, fail_if_srs_not_equivalent = True) transform_geometry = layerdef.get('transform-geometry', None) columns = [ 'm.' + escape_identifier(lyr_src.GetFIDColumn()) ] @@ -198,45 +195,29 @@ def exportSourceLayer(ds_src : gdal.Dataset, logging.debug('Source layer "%s" has %d features, of which %d are to be exported', layername, count0, count1) + feature_count = 0 defn_dst = lyr_dst.GetLayerDefn() - eGType_dst = defn_dst.GetGeomType() - dGeomIsUnknown = ogr.GT_Flatten(eGType_dst) == ogr.wkbUnknown - - count = count_degenerates = 0 feature = lyr_src.GetNextFeature() while feature is not None: geom = feature.GetGeometryRef().Clone() if ct is not None and geom.Transform(ct) != ogr.OGRERR_NONE: raise RuntimeError('Could not apply coordinate transformation') geom.FlattenTo2D() - if clip is not None: - # GDAL generates tiles beyond the tiling scheme extents so we need to - # clip manually - dim = geom.GetDimension() - geom = geom.Intersection(clip) - if geom.GetDimension() != dim: - # degenerate intersection, skip feature - count_degenerates += 1 - feature = lyr_src.GetNextFeature() - continue - if not dGeomIsUnknown: - geom = ogr.ForceTo(geom, eGType_dst) - feature2 = ogr.Feature(defn_dst) feature2.SetGeometryDirectly(geom) feature2.SetFID(feature.GetFID()) if lyr_dst.CreateFeature(feature2) != ogr.OGRERR_NONE: raise RuntimeError(f'Could not transfer source feature #{feature.GetFID()}') - count += 1 + feature_count += 1 feature = lyr_src.GetNextFeature() - logging.info('Exported %d features (%d degenerate skipped) to MVT layer "%s" from "%s"', - count, count_degenerates, lyr_dst.GetName(), layername) + logging.info('Exported %d features to MVT layer "%s" from "%s"', + feature_count, lyr_dst.GetName(), layername) finally: ds_src.ReleaseResultSet(lyr_src) lyr_src = None - return count + return feature_count def list_files(top : str, dir_fd : Optional[int] = None, |