kopia lustrzana https://github.com/onthegomap/planetiler
Filter out points when min size is set (#1132)
rodzic
581824ac97
commit
f0e3d0cc0b
|
@ -83,7 +83,7 @@ public class FeatureRenderer implements Consumer<FeatureCollector.Feature>, Clos
|
||||||
} else {
|
} else {
|
||||||
if (minSize > 0) {
|
if (minSize > 0) {
|
||||||
if (geometry instanceof Puntal) {
|
if (geometry instanceof Puntal) {
|
||||||
if (!feature.source().isPoint() && feature.getSourceFeaturePixelSizeAtZoom(zoom) < minSize) {
|
if (feature.getSourceFeaturePixelSizeAtZoom(zoom) < minSize) {
|
||||||
// don't emit points if the line or polygon feature it came from was too small
|
// don't emit points if the line or polygon feature it came from was too small
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -430,6 +430,47 @@ class PlanetilerTests {
|
||||||
), results.tiles);
|
), results.tiles);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testMinSize() throws Exception {
|
||||||
|
double x = 0.5 + Z14_WIDTH / 4;
|
||||||
|
double y = 0.5 + Z14_WIDTH / 4;
|
||||||
|
double lat = GeoUtils.getWorldLat(y);
|
||||||
|
double lng = GeoUtils.getWorldLon(x);
|
||||||
|
double delta = 5e-5;
|
||||||
|
|
||||||
|
var results = runWithReaderFeatures(
|
||||||
|
Map.of("threads", "1", "maxzoom", "15"),
|
||||||
|
List.of(
|
||||||
|
newReaderFeature(newPoint(lng, lat), Map.of(
|
||||||
|
"type", "point"
|
||||||
|
)),
|
||||||
|
newReaderFeature(rectangle(lng - delta, lat - delta, lng + delta, lat + delta), Map.of(
|
||||||
|
"type", "poly"
|
||||||
|
)),
|
||||||
|
newReaderFeature(newLineString(lng - delta, lat, lng + delta, lat), Map.of(
|
||||||
|
"type", "line"
|
||||||
|
))
|
||||||
|
),
|
||||||
|
(in, features) -> features.centroid("layer")
|
||||||
|
.setZoomRange(13, 15)
|
||||||
|
.setMinPixelSizeAtAllZooms(1)
|
||||||
|
.inheritAttrFromSource("type")
|
||||||
|
);
|
||||||
|
|
||||||
|
assertEquals(Map.of(
|
||||||
|
TileCoord.ofXYZ(Z15_TILES / 2, Z15_TILES / 2, 15), List.of(
|
||||||
|
feature(newPoint(128, 128), Map.of("type", "line")),
|
||||||
|
feature(newPoint(128, 128), Map.of("type", "poly"))
|
||||||
|
// omit point when min size is set
|
||||||
|
),
|
||||||
|
TileCoord.ofXYZ(Z14_TILES / 2, Z14_TILES / 2, 14), List.of(
|
||||||
|
feature(newPoint(64, 64), Map.of("type", "line")),
|
||||||
|
feature(newPoint(64, 64), Map.of("type", "poly"))
|
||||||
|
) // features are too small at z13
|
||||||
|
), results.tiles);
|
||||||
|
}
|
||||||
|
|
||||||
@ParameterizedTest
|
@ParameterizedTest
|
||||||
@CsvSource({
|
@CsvSource({
|
||||||
"false,RETAIN_IMPORTANT_POINTS",
|
"false,RETAIN_IMPORTANT_POINTS",
|
||||||
|
|
Ładowanie…
Reference in New Issue