planetiler/planetiler-core/src/test/java/com/onthegomap/planetiler/reader/NaturalEarthReaderTest.java

67 wiersze
2.5 KiB
Java
Czysty Zwykły widok Historia

package com.onthegomap.planetiler.reader;
2021-04-23 11:26:02 +00:00
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import com.onthegomap.planetiler.TestUtils;
2022-12-15 19:19:22 +00:00
import com.onthegomap.planetiler.collection.IterableOnce;
import com.onthegomap.planetiler.geo.GeoUtils;
import com.onthegomap.planetiler.stats.Stats;
import com.onthegomap.planetiler.worker.WorkerPipeline;
2021-05-01 20:08:20 +00:00
import java.nio.file.Path;
2021-04-23 11:26:02 +00:00
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
2022-12-15 19:19:22 +00:00
import java.util.function.Consumer;
2021-04-23 11:26:02 +00:00
import org.junit.jupiter.api.Timeout;
import org.junit.jupiter.api.io.TempDir;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
2021-04-23 11:26:02 +00:00
import org.locationtech.jts.geom.Geometry;
2022-04-23 10:36:24 +00:00
class NaturalEarthReaderTest {
@TempDir
Path tempDir;
2021-04-23 11:26:02 +00:00
@ParameterizedTest
@CsvSource({
"natural_earth_vector.sqlite,false",
"natural_earth_vector.sqlite.zip,false",
"natural_earth_vector.sqlite.zip,true",
})
2021-04-23 11:26:02 +00:00
@Timeout(30)
void testReadNaturalEarth(String filename, boolean keepUnzipped) {
2021-08-17 01:51:49 +00:00
var path = TestUtils.pathToResource(filename);
try (var reader = new NaturalEarthReader("test", path, tempDir, keepUnzipped)) {
2021-04-23 11:26:02 +00:00
for (int i = 1; i <= 2; i++) {
2022-12-15 19:19:22 +00:00
assertEquals(7_679, reader.getFeatureCount(), "iter " + i);
2021-04-23 11:26:02 +00:00
List<Geometry> points = new ArrayList<>();
2021-08-05 11:09:52 +00:00
WorkerPipeline.start("test", Stats.inMemory())
2022-12-15 19:19:22 +00:00
.readFromTiny("source_paths", List.of(path))
.addWorker("naturalearth", 1,
(IterableOnce<Path> p, Consumer<SimpleFeature> next) -> reader.readFeatures(next)
)
2021-04-23 11:26:02 +00:00
.addBuffer("reader_queue", 100, 1)
.sinkToConsumer("counter", 1, elem -> {
Object elevation = elem.getTag("elevation");
2021-08-17 01:51:49 +00:00
if ("ne_110m_geography_regions_elevation_points".equals(elem.getSourceLayer())) {
assertTrue(elevation instanceof Double, Objects.toString(elevation));
assertEquals("test", elem.getSource());
points.add(elem.latLonGeometry());
}
2021-04-23 11:26:02 +00:00
}).await();
assertEquals(19, points.size());
2021-05-19 10:44:28 +00:00
var gc = GeoUtils.JTS_FACTORY.createGeometryCollection(points.toArray(new Geometry[0]));
2021-04-23 11:26:02 +00:00
var centroid = gc.getCentroid();
assertArrayEquals(
new double[]{14.22422, 12.994629},
new double[]{centroid.getX(), centroid.getY()}, 5,
"iter " + i
);
}
}
}
}