Skip to content

Commit

Permalink
new RasterizerConfiguration
Browse files Browse the repository at this point in the history
  • Loading branch information
svencc committed Feb 27, 2024
1 parent 8be2afb commit c388efa
Show file tree
Hide file tree
Showing 14 changed files with 108 additions and 52 deletions.
64 changes: 39 additions & 25 deletions libs/commons/src/main/java/com/recom/commons/map/MapComposer.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,8 @@

import com.recom.commons.calculator.ARGBCalculator;
import com.recom.commons.map.rasterizer.*;
import com.recom.commons.map.rasterizer.configuration.MapLayerRenderer;
import com.recom.commons.map.rasterizer.configuration.MapLayerRasterizer;
import com.recom.commons.model.maprendererpipeline.MapComposerWorkPackage;
import com.recom.commons.model.maprendererpipeline.MapLayerRendererConfiguration;
import com.recom.commons.model.maprendererpipeline.report.PipelineLogMessage;
import lombok.NoArgsConstructor;
import lombok.NonNull;
Expand All @@ -23,7 +22,7 @@
public class MapComposer {

@NonNull
private final Map<String, MapLayerRenderer> mapLayerRendererPipeline = new HashMap<>();
private final List<MapLayerRasterizer> mapLayerRasterizerPipeline = new ArrayList<>();
@NonNull
private final ExecutorService executorService = Executors.newVirtualThreadPerTaskExecutor();
@NonNull
Expand All @@ -44,14 +43,13 @@ public static MapComposer withDefaultConfiguration() {
return mapComposer;
}

public void registerRenderer(@NonNull final MapLayerRenderer renderer) {
mapLayerRendererPipeline.put(renderer.getClass().getSimpleName(), renderer);
public void registerRenderer(@NonNull final MapLayerRasterizer rasterizer) {
mapLayerRasterizerPipeline.add(rasterizer);
}

@NonNull
public void execute(@NonNull final MapComposerWorkPackage workPackage) throws MissingRequiredPropertiesException {
applyConfigurationToRenderer(workPackage);

applyConfigurationToRasterizer(workPackage);

// scale step here or before
// bilinear interpolation
Expand All @@ -64,10 +62,11 @@ public void execute(@NonNull final MapComposerWorkPackage workPackage) throws Mi

@NonNull
private void renderDataInParallel(@NonNull final MapComposerWorkPackage workPackage) {
mapLayerRendererPipeline.values().stream()
.sorted(Comparator.comparingInt((final MapLayerRenderer mapLayerRenderer) -> mapLayerRenderer.getMapLayerRendererConfiguration().getLayerOrder().getOrder()))
.filter((final MapLayerRenderer renderer) -> renderer.getMapLayerRendererConfiguration().isEnabled())
.filter((final MapLayerRenderer renderer) -> !renderer.getMapLayerRendererConfiguration().isSequentialCoreData())
mapLayerRasterizerPipeline
.stream()
.sorted(Comparator.comparingInt((final MapLayerRasterizer mapLayerRasterizer) -> mapLayerRasterizer.getMapLayerRendererConfiguration().getLayerOrder().getOrder()))
.filter((final MapLayerRasterizer renderer) -> renderer.getMapLayerRendererConfiguration().isEnabled())
.filter((final MapLayerRasterizer renderer) -> !renderer.getMapLayerRendererConfiguration().isSequentialCoreData())
.map(renderer -> CompletableFuture.supplyAsync(() -> {
try {
renderer.render(workPackage);
Expand All @@ -84,10 +83,12 @@ private void renderDataInParallel(@NonNull final MapComposerWorkPackage workPack

@NonNull
private void renderCoreDataInSequence(@NonNull final MapComposerWorkPackage workPackage) {
mapLayerRendererPipeline.values().stream()
.sorted(Comparator.comparingInt((final MapLayerRenderer mapLayerRenderer) -> mapLayerRenderer.getMapLayerRendererConfiguration().getLayerOrder().getOrder()))
.filter((final MapLayerRenderer renderer) -> renderer.getMapLayerRendererConfiguration().isEnabled())
.filter((final MapLayerRenderer renderer) -> renderer.getMapLayerRendererConfiguration().isSequentialCoreData())
// mapLayerRendererPipeline.values()
mapLayerRasterizerPipeline
.stream()
.sorted(Comparator.comparingInt((final MapLayerRasterizer mapLayerRasterizer) -> mapLayerRasterizer.getMapLayerRendererConfiguration().getLayerOrder().getOrder()))
.filter((final MapLayerRasterizer renderer) -> renderer.getMapLayerRendererConfiguration().isEnabled())
.filter((final MapLayerRasterizer renderer) -> renderer.getMapLayerRendererConfiguration().isSequentialCoreData())
.peek(renderer -> {
try {
renderer.render(workPackage);
Expand All @@ -108,16 +109,29 @@ private void handleException(@NonNull final MapComposerWorkPackage workPackage)
}
}

private void applyConfigurationToRenderer(@NonNull final MapComposerWorkPackage workPackage) {
workPackage.getMapComposerConfiguration().getRendererConfiguration().entrySet().stream()
.filter(entry -> mapLayerRendererPipeline.containsKey(entry.getKey()))
.forEach(configurationEntry -> {
final String layerRendererName = configurationEntry.getKey();
final MapLayerRendererConfiguration configuration = configurationEntry.getValue();

final MapLayerRenderer mapLayerRenderer = mapLayerRendererPipeline.get(layerRendererName);
configuration.applyConfiguration(mapLayerRenderer);
private void applyConfigurationToRasterizer(@NonNull final MapComposerWorkPackage workPackage) {
// @TODO <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
final Map<String, MapLayerRasterizer> indexedRasterizer = mapLayerRasterizerPipeline.stream()
.collect(HashMap::new, (map, rasterizer) -> map.put(rasterizer.getRasterizerName(), rasterizer), HashMap::putAll);

workPackage.getMapComposerConfiguration().getRendererConfiguration().stream()
// .filter(configuration -> mapLayerRasterizerPipeline.containsKey(configuration.getRendererName()))
.filter(configuration -> indexedRasterizer.containsKey(configuration.getRasterizerName()))
.forEach(configuration -> {
final MapLayerRasterizer mapLayerRasterizer = indexedRasterizer.get(configuration.getRasterizerName());
configuration.applyConfiguration(mapLayerRasterizer);
});

// @TODO <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// workPackage.getMapComposerConfiguration().getRendererConfiguration().entrySet().stream()
// .filter(entry -> indexedRasterizer.containsKey(entry.getKey()))
// .forEach(configurationEntry -> {
// final String layerRendererName = configurationEntry.getKey();
// final MapLayerRendererConfiguration configuration = configurationEntry.getValue();
//
// final MapLayerRasterizer mapLayerRasterizer = indexedRasterizer.get(layerRendererName);
// configuration.applyConfiguration(mapLayerRasterizer);
// });
}

@NonNull
Expand All @@ -139,7 +153,7 @@ public int[] merge(
return workPackage.getPipelineArtifacts().getArtifacts().entrySet().stream()
.sorted(Comparator.comparingInt((entry) -> entry.getValue().getCreator().getMapLayerRendererConfiguration().getLayerOrder().getOrder()))
.filter(entry -> {
final MapLayerRenderer artifactCreator = entry.getValue().getCreator();
final MapLayerRasterizer artifactCreator = entry.getValue().getCreator();
return artifactCreator.getMapLayerRendererConfiguration().isEnabled()
&& artifactCreator.getMapLayerRendererConfiguration().isVisible();
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import com.recom.commons.calculator.ARGBCalculator;
import com.recom.commons.calculator.ARGBColor;
import com.recom.commons.map.rasterizer.configuration.LayerOrder;
import com.recom.commons.map.rasterizer.configuration.MapLayerRenderer;
import com.recom.commons.map.rasterizer.configuration.MapLayerRasterizer;
import com.recom.commons.map.rasterizer.mapdesignscheme.MapDesignScheme;
import com.recom.commons.map.rasterizer.scaler.DEMScalerNearestNeighbor;
import com.recom.commons.model.DEMDescriptor;
Expand All @@ -13,13 +13,14 @@
import lombok.NonNull;


public class BaseMapRasterizer implements MapLayerRenderer {
public class BaseMapRasterizer implements MapLayerRasterizer {

@NonNull
private final ARGBCalculator argbCalculator = new ARGBCalculator();
@Getter
@NonNull
private MapLayerRendererConfiguration mapLayerRendererConfiguration = MapLayerRendererConfiguration.builder()
.rasterizerName(getClass().getSimpleName())
.layerOrder(LayerOrder.BASE_MAP)
.build();
@NonNull
Expand Down Expand Up @@ -73,6 +74,11 @@ public int[] rasterizeBaseMap(
return imageBuffer;
}

@Override
public String getRasterizerName() {
return getClass().getSimpleName();
}

@Override
public void render(@NonNull final MapComposerWorkPackage workPackage) {
final int[] rawBaseMap = rasterizeBaseMap(workPackage.getMapComposerConfiguration().getDemDescriptor(), workPackage.getMapComposerConfiguration().getMapDesignScheme());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import com.recom.commons.calculator.d8algorithm.D8AlgorithmForContourMap;
import com.recom.commons.map.rasterizer.configuration.LayerOrder;
import com.recom.commons.map.rasterizer.configuration.MapLayerRenderer;
import com.recom.commons.map.rasterizer.configuration.MapLayerRasterizer;
import com.recom.commons.map.rasterizer.mapdesignscheme.MapDesignScheme;
import com.recom.commons.model.DEMDescriptor;
import com.recom.commons.model.maprendererpipeline.MapComposerWorkPackage;
Expand All @@ -12,10 +12,11 @@


@Getter
public class ContourMapRasterizer implements MapLayerRenderer {
public class ContourMapRasterizer implements MapLayerRasterizer {

@NonNull
private MapLayerRendererConfiguration mapLayerRendererConfiguration = MapLayerRendererConfiguration.builder()
.rasterizerName(getClass().getSimpleName())
.layerOrder(LayerOrder.CONTOUR_MAP)
.build();

Expand All @@ -42,6 +43,11 @@ public int[] rasterizeContourMap(
return pixelBuffer;
}

@Override
public String getRasterizerName() {
return getClass().getSimpleName();
}

@Override
public void render(@NonNull final MapComposerWorkPackage workPackage) {
final int[] rawContourMap = rasterizeContourMap(workPackage.getMapComposerConfiguration().getDemDescriptor(), workPackage.getMapComposerConfiguration().getMapDesignScheme());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.recom.commons.map.rasterizer;

import com.recom.commons.map.rasterizer.configuration.LayerOrder;
import com.recom.commons.map.rasterizer.configuration.MapLayerRenderer;
import com.recom.commons.map.rasterizer.configuration.MapLayerRasterizer;
import com.recom.commons.map.rasterizer.scaler.DEMScalerNearestNeighbor;
import com.recom.commons.model.DEMDescriptor;
import com.recom.commons.model.maprendererpipeline.MapComposerWorkPackage;
Expand All @@ -12,11 +12,12 @@
import java.awt.*;


public class HeightMapRasterizer implements MapLayerRenderer {
public class HeightMapRasterizer implements MapLayerRasterizer {

@Getter
@NonNull
private MapLayerRendererConfiguration mapLayerRendererConfiguration = MapLayerRendererConfiguration.builder()
.rasterizerName(getClass().getSimpleName())
.layerOrder(LayerOrder.HEIGHT_MAP)
.visible(false)
.enabled(false)
Expand Down Expand Up @@ -74,6 +75,11 @@ public int[] rasterizeHeightMap(@NonNull final DEMDescriptor demDescriptor) {
return imageBuffer;
}

@Override
public String getRasterizerName() {
return getClass().getSimpleName();
}

@Override
public void render(@NonNull final MapComposerWorkPackage workPackage) {
final int[] rawHeightMap = rasterizeHeightMap(workPackage.getMapComposerConfiguration().getDemDescriptor());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import com.recom.commons.calculator.d8algorithm.D8AlgorithmForShadedMap;
import com.recom.commons.map.rasterizer.configuration.LayerOrder;
import com.recom.commons.map.rasterizer.configuration.MapLayerRenderer;
import com.recom.commons.map.rasterizer.configuration.MapLayerRasterizer;
import com.recom.commons.map.rasterizer.mapdesignscheme.MapDesignScheme;
import com.recom.commons.model.DEMDescriptor;
import com.recom.commons.model.SlopeAndAspectMap;
Expand All @@ -16,10 +16,11 @@

@Getter
@Setter
public class ShadowedMapRasterizer implements MapLayerRenderer {
public class ShadowedMapRasterizer implements MapLayerRasterizer {

@NonNull
private MapLayerRendererConfiguration mapLayerRendererConfiguration = MapLayerRendererConfiguration.builder()
.rasterizerName(getClass().getSimpleName())
.layerOrder(LayerOrder.SHADOWED_MAP)
.build();

Expand All @@ -46,6 +47,11 @@ public int[] rasterizeShadowedMap(
return pixelBuffer;
}

@Override
public String getRasterizerName() {
return getClass().getSimpleName();
}

@Override
public void render(@NonNull final MapComposerWorkPackage workPackage) {
workPackage.getPipelineArtifacts().getArtifactFrom(SlopeAndAspectMapRasterizer.class).ifPresent((final CreatedArtifact artifact) -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import com.recom.commons.calculator.d8algorithm.D8AlgorithmForSlopeAndAspectMap;
import com.recom.commons.map.rasterizer.configuration.LayerOrder;
import com.recom.commons.map.rasterizer.configuration.MapLayerRenderer;
import com.recom.commons.map.rasterizer.configuration.MapLayerRasterizer;
import com.recom.commons.model.DEMDescriptor;
import com.recom.commons.model.SlopeAndAspect;
import com.recom.commons.model.SlopeAndAspectMap;
Expand All @@ -14,11 +14,12 @@

@Getter
@Setter
public class SlopeAndAspectMapRasterizer implements MapLayerRenderer {
public class SlopeAndAspectMapRasterizer implements MapLayerRasterizer {

@Getter
@NonNull
private MapLayerRendererConfiguration mapLayerRendererConfiguration = MapLayerRendererConfiguration.builder()
.rasterizerName(getClass().getSimpleName())
.layerOrder(LayerOrder.SLOPE_AND_ASPECT_MAP)
.sequentialCoreData(true)
.build();
Expand All @@ -34,6 +35,11 @@ public SlopeAndAspectMap rasterizeSlopeAndAspectMap(@NonNull final DEMDescriptor
.build();
}

@Override
public String getRasterizerName() {
return getClass().getSimpleName();
}

@Override
public void render(@NonNull final MapComposerWorkPackage workPackage) {
final SlopeAndAspectMap slopeAndAspectMap = rasterizeSlopeAndAspectMap(workPackage.getMapComposerConfiguration().getDemDescriptor());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import com.recom.commons.calculator.d8algorithm.D8AlgorithmForSlopeAndAspectMap;
import com.recom.commons.calculator.d8algorithm.D8AlgorithmForSlopeMap;
import com.recom.commons.map.rasterizer.configuration.LayerOrder;
import com.recom.commons.map.rasterizer.configuration.MapLayerRenderer;
import com.recom.commons.map.rasterizer.configuration.MapLayerRasterizer;
import com.recom.commons.map.rasterizer.mapdesignscheme.MapDesignScheme;
import com.recom.commons.model.DEMDescriptor;
import com.recom.commons.model.SlopeAndAspect;
Expand All @@ -16,10 +16,11 @@

@Getter
@Setter
public class SlopeMapRasterizer implements MapLayerRenderer {
public class SlopeMapRasterizer implements MapLayerRasterizer {

@NonNull
private MapLayerRendererConfiguration mapLayerRendererConfiguration = MapLayerRendererConfiguration.builder()
.rasterizerName(getClass().getSimpleName())
.layerOrder(LayerOrder.HEIGHT_MAP)
.visible(false)
.build();
Expand Down Expand Up @@ -49,6 +50,11 @@ public int[] rasterizeSlopeMap(
return pixelBuffer;
}

@Override
public String getRasterizerName() {
return getClass().getSimpleName();
}

@Override
public void render(@NonNull MapComposerWorkPackage workPackage) {
final int[] rawSlopeMap = rasterizeSlopeMap(workPackage.getMapComposerConfiguration().getDemDescriptor(), workPackage.getMapComposerConfiguration().getMapDesignScheme());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import com.recom.commons.model.maprendererpipeline.MapLayerRendererConfiguration;
import lombok.NonNull;

public interface HasMapLayerRendererConfiguration {
public interface HasMapLayerRasterizerConfiguration {

@NonNull MapLayerRendererConfiguration getMapLayerRendererConfiguration();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@

import java.io.IOException;

public interface MapLayerRenderer extends HasMapLayerRendererConfiguration {
public interface MapLayerRasterizer extends HasMapLayerRasterizerConfiguration {

@NonNull
String getRasterizerName();

void render(@NonNull final MapComposerWorkPackage workPackage) throws IOException;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.recom.commons.model.maprendererpipeline;

import com.recom.commons.map.rasterizer.configuration.MapLayerRenderer;
import com.recom.commons.map.rasterizer.configuration.MapLayerRasterizer;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
Expand All @@ -12,7 +12,7 @@ public class CreatedArtifact {

@Getter
@NonNull
private final MapLayerRenderer creator;
private final MapLayerRasterizer creator;
@NonNull
private final Object data;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
import com.recom.commons.model.DEMDescriptor;
import lombok.*;

import java.util.HashMap;
import java.util.Map;
import java.util.ArrayList;
import java.util.List;

@Data
@Builder
Expand All @@ -19,7 +19,10 @@ public class MapComposerConfiguration {
@NonNull
private MapDesignScheme mapDesignScheme;

// @NonNull
// private final Map<String, MapLayerRendererConfiguration> rendererConfiguration = new HashMap<>();

@NonNull
private final Map<String, MapLayerRendererConfiguration> rendererConfiguration = new HashMap<>();
private final List<MapLayerRendererConfiguration> rendererConfiguration = new ArrayList<>();

}
Loading

0 comments on commit c388efa

Please sign in to comment.