From 30336f863609e93bfe9fe8c9ad579b49e89e4d22 Mon Sep 17 00:00:00 2001 From: DanielJDufour Date: Sun, 1 Oct 2023 10:16:25 -0400 Subject: [PATCH 1/2] added code to use geojson-test-data --- data/country_populations.csv | 12 ++++++++++++ data/create_expected_truth_data.py | 5 +++-- data/expected_data.txt | 2 +- data/geojson-test-data/setup.sh | 6 ++++++ src/stats/stats.test.js | 10 ++++++++++ 5 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 data/country_populations.csv create mode 100644 data/geojson-test-data/setup.sh diff --git a/data/country_populations.csv b/data/country_populations.csv new file mode 100644 index 0000000..5ec49a6 --- /dev/null +++ b/data/country_populations.csv @@ -0,0 +1,12 @@ +country,population +Afghanistan,27024636.0 +Akrotiri and Dhekelia,23469.134765625 +Croatia,4685367.0 +Cyprus,790242.0625 +Jamaica,2332581.75 +Lebanon,5554060.0 +Macedonia,2239499.25 +New Zealand,0.0 +Nicaragua,5066313.5 +Ukraine,12697956.0 +Uruguay,3303090.0 diff --git a/data/create_expected_truth_data.py b/data/create_expected_truth_data.py index c40c54c..f878d86 100644 --- a/data/create_expected_truth_data.py +++ b/data/create_expected_truth_data.py @@ -30,7 +30,7 @@ ["./antimeridian/split.shp", "gfwfiji_6933_COG_Binary.tif"], ["./antimeridian/across.shp", "gfwfiji_6933_COG_Binary.tif"], - ["./geojson-test-data/EEZ_Land_v3_202030_New_Zealand.geojson", "./geotiff-test-data/nz_habitat_anticross_4326_1deg.tif"] + ["./geojson-test-data/eez_land_union/EEZ_Land_v3_202030_New_Zealand.geojson", "./geotiff-test-data/nz_habitat_anticross_4326_1deg.tif"] ] for i, (geom, raster, *opts) in enumerate(test_cases): @@ -84,4 +84,5 @@ pop = 0 for tile in ghsl_tiles: pop += zonal_stats(f"./gadm/geojsons/{file}", f"./ghsl/tiles/{tile}", stats="sum", band=1)[0]['sum'] - print(f"{country}: {pop:,}") \ No newline at end of file + print(f"{country}: {pop:,}") + writer.writerow({ "country": country, "population": pop }) \ No newline at end of file diff --git a/data/expected_data.txt b/data/expected_data.txt index b2a239d..b4e2743 100644 --- a/data/expected_data.txt +++ b/data/expected_data.txt @@ -144,7 +144,7 @@ case: 13 case: 14 - vector: ./geojson-test-data/EEZ_Land_v3_202030_New_Zealand.geojson + vector: ./geojson-test-data/eez_land_union/EEZ_Land_v3_202030_New_Zealand.geojson raster: ./geotiff-test-data/nz_habitat_anticross_4326_1deg.tif opts: [] result: diff --git a/data/geojson-test-data/setup.sh b/data/geojson-test-data/setup.sh new file mode 100644 index 0000000..6f08e01 --- /dev/null +++ b/data/geojson-test-data/setup.sh @@ -0,0 +1,6 @@ +# download from https://github.com/DanielJDufour/geojson-test-data/ +wget https://github.com/DanielJDufour/geojson-test-data/archive/refs/heads/main.zip -O geojson-test-data.zip +unzip -o geojson-test-data.zip "geojson-test-data-*/files/*" -d . +mv ./geojson-test-data-main/files/* . +rm -r geojson-test-data-main +rm geojson-test-data.zip diff --git a/src/stats/stats.test.js b/src/stats/stats.test.js index 916b04f..6f93fc8 100644 --- a/src/stats/stats.test.js +++ b/src/stats/stats.test.js @@ -184,6 +184,16 @@ test("antimerdian #2 (split at antimeridian)", async ({ eq }) => { eq(results, [{ count: 327_972, min: 1, max: 1, sum: 327_972 }]); }); +test("antimeridian New Zealand EEZ and Habitat", async ({ eq }) => { + const georaster = await parse("http://localhost:3000/data/geotiff-test-data/nz_habitat_anticross_4326_1deg.tif"); + const geojson = JSON.parse(readFileSync("./data/geojson-test-data/eez_land_union/EEZ_Land_v3_202030_New_Zealand.geojson", "utf-8")); + const results = await stats(georaster, geojson, { stats: ["count", "min", "max", "sum"] }); + eq(results, [{ count: 4_512, min: 1, max: 71, sum: 454 }]); + + const results2 = await Promise.all(geojson.features[0].geometry.coordinates.map(geom => stats(georaster, geom, { stats: ["count", "min", "max", "sum"] }))); + eq(results2, [[{ count: 322, min: 1, max: 71, sum: 3931 }], [{ count: 132, min: 1, max: 22, sum: 581 }]]); +}); + test("antimerdian #3 (across antimeridian on left-side)", async ({ eq }) => { return; // XXX // converted GeoTIFF to all 1's From 627a233a445b53c49e9d65b5541a30f4c1026419 Mon Sep 17 00:00:00 2001 From: DanielJDufour Date: Sun, 1 Oct 2023 10:59:28 -0400 Subject: [PATCH 2/2] fixed typo in eez test --- src/stats/stats.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/stats/stats.test.js b/src/stats/stats.test.js index 6f93fc8..e468a5c 100644 --- a/src/stats/stats.test.js +++ b/src/stats/stats.test.js @@ -188,7 +188,7 @@ test("antimeridian New Zealand EEZ and Habitat", async ({ eq }) => { const georaster = await parse("http://localhost:3000/data/geotiff-test-data/nz_habitat_anticross_4326_1deg.tif"); const geojson = JSON.parse(readFileSync("./data/geojson-test-data/eez_land_union/EEZ_Land_v3_202030_New_Zealand.geojson", "utf-8")); const results = await stats(georaster, geojson, { stats: ["count", "min", "max", "sum"] }); - eq(results, [{ count: 4_512, min: 1, max: 71, sum: 454 }]); + eq(results, [{ count: 454, min: 1, max: 71, sum: 4512 }]); const results2 = await Promise.all(geojson.features[0].geometry.coordinates.map(geom => stats(georaster, geom, { stats: ["count", "min", "max", "sum"] }))); eq(results2, [[{ count: 322, min: 1, max: 71, sum: 3931 }], [{ count: 132, min: 1, max: 22, sum: 581 }]]);