diff --git a/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/app/FeatureEncoderMVT.java b/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/app/FeatureEncoderMVT.java index 44f35631d..5857fc847 100644 --- a/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/app/FeatureEncoderMVT.java +++ b/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/app/FeatureEncoderMVT.java @@ -12,6 +12,7 @@ import de.ii.xtraplatform.features.domain.transform.FeatureEncoderSfFlat; import de.ii.xtraplatform.features.domain.transform.FeatureSfFlat; import de.ii.xtraplatform.tiles.domain.LevelTransformation; +import de.ii.xtraplatform.tiles.domain.TileBuilder; import de.ii.xtraplatform.tiles.domain.TileCoordinates; import de.ii.xtraplatform.tiles.domain.TileGenerationContext; import de.ii.xtraplatform.tiles.domain.TileGenerationOptions; @@ -70,7 +71,7 @@ public FeatureEncoderMVT(TileGenerationContext encodingContext) { this.geometryFactoryWorld = new GeometryFactory(); final int size = tile.getTileMatrixSet().getTileSize(); - final int buffer = 8; + final int buffer = TileBuilder.BUFFER_SIZE_FORMAL; CoordinateXY[] coords = new CoordinateXY[5]; coords[0] = new CoordinateXY(-buffer, size + buffer); coords[1] = new CoordinateXY(size + buffer, size + buffer); diff --git a/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/app/TileBuilderPgisAsMvt.java b/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/app/TileBuilderPgisAsMvt.java index d8403bf46..421fc2f25 100644 --- a/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/app/TileBuilderPgisAsMvt.java +++ b/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/app/TileBuilderPgisAsMvt.java @@ -290,12 +290,19 @@ private String queryToSql( .map(FeatureSchema::getName); String filter = filtersToSql(providerId, tileset, schema, tms.getId(), level); + int buffer = (tms.getTileExtent() / tms.getTileSize()) * TileBuilder.BUFFER_SIZE_FORMAL; String bounds = "bounds AS (SELECT %1$s AS geom, %2$s::box2d AS b2d)"; String mvtgeom = String.format( - "mvtgeom AS (SELECT ST_AsMVTGeom(ST_Transform(A.%1$s, %%3$s), bounds.b2d, %6$d, 8) AS geom, %2$s FROM %3$s A, bounds WHERE (%5$s AND ST_Intersects(A.%1$s, ST_Transform(bounds.geom, %4$s))))", - geomColumn, attrColumns, table, nativeCrs.getCode(), filter, tms.getTileExtent()); + "mvtgeom AS (SELECT ST_AsMVTGeom(ST_Transform(A.%1$s, %%3$s), bounds.b2d, %6$d, %7$d) AS geom, %2$s FROM %3$s A, bounds WHERE (%5$s AND ST_Intersects(A.%1$s, ST_Transform(bounds.geom, %4$s))))", + geomColumn, + attrColumns, + table, + nativeCrs.getCode(), + filter, + tms.getTileExtent(), + buffer); String template = String.format( diff --git a/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/domain/TileBuilder.java b/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/domain/TileBuilder.java index ca5891298..96b3e5cb6 100644 --- a/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/domain/TileBuilder.java +++ b/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/domain/TileBuilder.java @@ -19,6 +19,9 @@ @AutoMultiBind public interface TileBuilder { + // buffer in relation to the "formal" tile size (256 for WMQ) + int BUFFER_SIZE_FORMAL = 8; + int getPriority(); boolean isApplicable(String featureProviderId);