├── .python-version ├── src └── xpublish_tiles │ ├── py.typed │ ├── cli │ └── __init__.py │ ├── testing │ ├── __init__.py │ └── grids │ │ └── extract_n320.py │ ├── __init__.py │ ├── xpublish │ ├── wms │ │ └── __init__.py │ └── tiles │ │ └── __init__.py │ ├── config.py │ ├── render │ ├── quiver.py │ └── __init__.py │ ├── utils.py │ └── tiles_lib.py ├── tests ├── __snapshots__ │ └── test_pipeline │ │ ├── test_bad_latitude_coordinates.png │ │ ├── test_high_zoom_tile_global_dataset.png │ │ ├── test_global_6km_regression[tile0-ds0].png │ │ ├── test_global_6km_regression[tile0-ds1].png │ │ ├── test_global_6km_regression[tile1-ds0].png │ │ ├── test_global_6km_regression[tile1-ds1].png │ │ ├── test_global_6km_regression[tile2-ds0].png │ │ ├── test_global_6km_regression[tile2-ds1].png │ │ ├── test_global_6km_regression[tile3-ds0].png │ │ ├── test_global_6km_regression[tile3-ds1].png │ │ ├── test_global_6km_regression[tile4-ds0].png │ │ ├── test_global_6km_regression[tile4-ds1].png │ │ ├── test_global_6km_regression[tile5-ds0].png │ │ ├── test_global_6km_regression[tile5-ds1].png │ │ ├── test_pipeline_bad_bbox[-90-90,0-360].png │ │ ├── test_pipeline_bad_bbox[90--90,0-360].png │ │ ├── test_pipeline_bad_bbox[-90-90,-180-180].png │ │ ├── test_pipeline_bad_bbox[90--90,-180-180].png │ │ ├── test_categorical_data[para_north_z4(457)].png │ │ ├── test_categorical_data[para_south_z4(458)].png │ │ ├── test_categorical_data_with_custom_colormap.png │ │ ├── test_categorical_data[para_belem_z6(62231)].png │ │ ├── test_categorical_data[para_central_z7(74564)].png │ │ ├── test_categorical_data[para_north_z7(74463)].png │ │ ├── test_categorical_data[para_south_z8(888128)].png │ │ ├── test_global_nans_data[wgs84_prime_east(231)].png │ │ ├── test_global_nans_data[wgs84_prime_west(211)].png │ │ ├── test_pipeline_bad_bbox[reduced_gaussian_n320].png │ │ ├── test_categorical_data[para_northeast_z5(51115)].png │ │ ├── test_categorical_data[para_northwest_z5(51015)].png │ │ ├── test_categorical_data[para_southeast_z5(51116)].png │ │ ├── test_categorical_data[para_southwest_z5(51016)].png │ │ ├── test_global_nans_data[wgs84_equator_north(211)].png │ │ ├── test_global_nans_data[wgs84_equator_south(212)].png │ │ ├── test_categorical_data[para_south_z8(1214802064)].png │ │ ├── test_categorical_data[para_south_z8(1329644129)].png │ │ ├── test_categorical_data[para_south_z8(1459718252)].png │ │ ├── test_global_nans_data[wgs84_prime_meridian(221)].png │ │ ├── test_high_zoom_tile_global_dataset[-90-90,0-360].png │ │ ├── test_high_zoom_tile_global_dataset[90--90,0-360].png │ │ ├── test_curvilinear_data[curvilinear_hrrr_east_z4(435)].png │ │ ├── test_global_nans_data[wgs84_antimeridian_west(201)].png │ │ ├── test_high_zoom_tile_global_dataset[-90-90,-180-180].png │ │ ├── test_high_zoom_tile_global_dataset[90--90,-180-180].png │ │ ├── test_curvilinear_data[curvilinear_central_us_z6(61524)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-wgs84_prime_east(231)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-wgs84_prime_west(211)].png │ │ ├── test_pipeline_tiles[90--90,0-360-wgs84_prime_east(231)].png │ │ ├── test_pipeline_tiles[90--90,0-360-wgs84_prime_west(211)].png │ │ ├── test_projected_coordinate_data[hrrr_hrrr_east_z2(211)].png │ │ ├── test_projected_coordinate_data[hrrr_hrrr_south_z3(313)].png │ │ ├── test_projected_coordinate_data[hrrr_hrrr_west_z2(201)].png │ │ ├── test_curvilinear_data[curvilinear_hrrr_central_z7(72748)].png │ │ ├── test_global_nans_data[wgs84_equator_antimeridian_z3(301)].png │ │ ├── test_high_zoom_tile_global_dataset[reduced_gaussian_n320].png │ │ ├── test_pipeline_tiles[-90-90,0-360-etrs89_east_europe(221)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-etrs89_small_bbox(588)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-etrs89_west_europe(201)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_small_bbox(588)].png │ │ ├── test_pipeline_tiles[90--90,0-360-etrs89_east_europe(221)].png │ │ ├── test_pipeline_tiles[90--90,0-360-etrs89_small_bbox(588)].png │ │ ├── test_pipeline_tiles[90--90,0-360-etrs89_west_europe(201)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_small_bbox(588)].png │ │ ├── test_projected_coordinate_data[hrrr_hrrr_center_z5(5711)].png │ │ ├── test_projected_coordinate_data[utm33s_utm33s_mid_z3(345)].png │ │ ├── test_curvilinear_data[curvilinear_central_us_z11(11442744)].png │ │ ├── test_curvilinear_data[curvilinear_hrrr_se_corner_z5(5611)].png │ │ ├── test_curvilinear_data[curvilinear_hrrr_sw_corner_z5(5712)].png │ │ ├── test_global_nans_data[wgs84_antimeridian_west_equator(202)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-etrs89_east_europe(221)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-etrs89_small_bbox(588)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-etrs89_west_europe(201)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_small_bbox(588)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-wgs84_prime_east(231)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-wgs84_prime_west(211)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-etrs89_center_europe(211)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-etrs89_central_zoom3(322)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-etrs89_central_zoom3(325)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-etrs89_central_zoom4(444)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-etrs89_north_europe(210)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-etrs89_south_europe(212)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_corner_zoom3(351)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_equator_east(232)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_equator_north(211)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_equator_south(212)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_equator_west(202)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_europe_center(221)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_europe_north(220)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_europe_south(222)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_europe_south(500)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_europe_west(211)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_europe_zoom4(485)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-wgs84_equator_north(211)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-wgs84_equator_south(212)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-wgs84_prime_meridian(221)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-etrs89_east_europe(221)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-etrs89_small_bbox(588)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-etrs89_west_europe(201)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_small_bbox(588)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-wgs84_prime_east(231)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-wgs84_prime_west(211)].png │ │ ├── test_pipeline_tiles[90--90,0-360-etrs89_center_europe(211)].png │ │ ├── test_pipeline_tiles[90--90,0-360-etrs89_central_zoom3(322)].png │ │ ├── test_pipeline_tiles[90--90,0-360-etrs89_central_zoom3(325)].png │ │ ├── test_pipeline_tiles[90--90,0-360-etrs89_central_zoom4(444)].png │ │ ├── test_pipeline_tiles[90--90,0-360-etrs89_north_europe(210)].png │ │ ├── test_pipeline_tiles[90--90,0-360-etrs89_south_europe(212)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_corner_zoom3(351)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_equator_east(232)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_equator_north(211)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_equator_south(212)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_equator_west(202)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_europe_center(221)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_europe_north(220)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_europe_south(222)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_europe_south(500)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_europe_west(211)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_europe_zoom4(485)].png │ │ ├── test_pipeline_tiles[90--90,0-360-wgs84_equator_north(211)].png │ │ ├── test_pipeline_tiles[90--90,0-360-wgs84_equator_south(212)].png │ │ ├── test_pipeline_tiles[90--90,0-360-wgs84_prime_meridian(221)].png │ │ ├── test_projected_coordinate_data[hrrr_hrrr_center_z7(72950)].png │ │ ├── test_projected_coordinate_data[hrrr_hrrr_ne_corner_z3(322)].png │ │ ├── test_projected_coordinate_data[hrrr_hrrr_nw_corner_z3(312)].png │ │ ├── test_projected_coordinate_data[hrrr_hrrr_se_corner_z3(322)].png │ │ ├── test_projected_coordinate_data[hrrr_hrrr_sw_corner_z3(312)].png │ │ ├── test_projected_coordinate_data[hrrr_hrrr_west_edge_z5(5411)].png │ │ ├── test_projected_coordinate_data[utm33s_utm33s_africa_z2(222)].png │ │ ├── test_projected_coordinate_data[utm33s_utm33s_africa_z3(344)].png │ │ ├── test_projected_coordinate_data[utm33s_utm33s_deep_z3(346)].png │ │ ├── test_projected_coordinate_data[utm33s_utm33s_north_z4(488)].png │ │ ├── test_projected_coordinate_data[utm33s_utm33s_south_z4(4810)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-etrs89_center_europe(211)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-etrs89_central_zoom3(322)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-etrs89_central_zoom3(325)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-etrs89_central_zoom4(444)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-etrs89_north_europe(210)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-etrs89_south_europe(212)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_corner_zoom3(351)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_equator_east(232)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_equator_west(202)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_europe_north(220)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_europe_south(222)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_europe_south(500)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_europe_west(211)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_europe_zoom4(485)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-wgs84_equator_north(211)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-wgs84_equator_south(212)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-wgs84_prime_meridian(221)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-etrs89_southeast_zoom4(466)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_corner_zoom5(15125)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_europe_zoom5(51610)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_prime_east_z5(51710)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_prime_meridian(221)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_prime_west_z5(51510)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-wgs84_antimeridian_west(201)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-etrs89_center_europe(211)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-etrs89_central_zoom3(322)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-etrs89_central_zoom3(325)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-etrs89_central_zoom4(444)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-etrs89_north_europe(210)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-etrs89_south_europe(212)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_corner_zoom3(351)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_equator_east(232)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_equator_west(202)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_europe_north(220)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_europe_south(222)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_europe_south(500)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_europe_west(211)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_europe_zoom4(485)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-wgs84_equator_north(211)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-wgs84_equator_south(212)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-wgs84_prime_meridian(221)].png │ │ ├── test_pipeline_tiles[90--90,0-360-etrs89_southeast_zoom4(466)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_corner_zoom5(15125)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_europe_zoom5(51610)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_prime_east_z5(51710)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_prime_meridian(221)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_prime_west_z5(51510)].png │ │ ├── test_pipeline_tiles[90--90,0-360-wgs84_antimeridian_west(201)].png │ │ ├── test_projected_coordinate_data[eu3035_etrs89_east_europe(221)].png │ │ ├── test_projected_coordinate_data[eu3035_etrs89_small_bbox(588)].png │ │ ├── test_projected_coordinate_data[eu3035_etrs89_west_europe(201)].png │ │ ├── test_projected_coordinate_data[hrrr_hrrr_center_z10(10234403)].png │ │ ├── test_projected_coordinate_data[hrrr_hrrr_east_edge_z5(51011)].png │ │ ├── test_projected_coordinate_data[hrrr_hrrr_se_precise_z7(74244)].png │ │ ├── test_projected_coordinate_data[hrrr_hrrr_south_edge_z5(5413)].png │ │ ├── test_projected_coordinate_data[hrrr_hrrr_sw_precise_z7(71644)].png │ │ ├── test_projected_coordinate_data[utm33s_utm33s_north_z5(51717)].png │ │ ├── test_projected_coordinate_data[utm33s_utm33s_south_z5(51720)].png │ │ ├── test_global_nans_data[wgs84_equator_antimeridian_north_z5(5015)].png │ │ ├── test_global_nans_data[wgs84_equator_antimeridian_south_z3(302)].png │ │ ├── test_global_nans_data[wgs84_equator_antimeridian_south_z5(5016)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-etrs89_southeast_zoom4(466)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_corner_zoom5(15125)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_equator_north(211)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_equator_south(212)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_europe_center(221)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_europe_zoom5(51610)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_prime_east_z5(51710)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_prime_meridian(221)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_prime_west_z5(51510)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-wgs84_antimeridian_west(201)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_antimeridian_east(231)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_antimeridian_west(201)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_equator_z3_north(343)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_equator_z3_south(344)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_equator_z5_north(51615)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_equator_z5_south(51616)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_prime_meridian_z3(342)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-etrs89_southeast_zoom4(466)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_corner_zoom5(15125)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_equator_north(211)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_equator_south(212)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_europe_center(221)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_europe_zoom5(51610)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_prime_east_z5(51710)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_prime_meridian(221)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_prime_west_z5(51510)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-wgs84_antimeridian_west(201)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_antimeridian_east(231)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_antimeridian_west(201)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_equator_z3_north(343)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_equator_z3_south(344)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_equator_z5_north(51615)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_equator_z5_south(51616)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_prime_meridian_z3(342)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-etrs89_small_bbox(588)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-wgs84_prime_east(231)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-wgs84_prime_west(211)].png │ │ ├── test_projected_coordinate_data[eu3035_etrs89_center_europe(211)].png │ │ ├── test_projected_coordinate_data[eu3035_etrs89_central_zoom3(322)].png │ │ ├── test_projected_coordinate_data[eu3035_etrs89_central_zoom3(325)].png │ │ ├── test_projected_coordinate_data[eu3035_etrs89_central_zoom4(444)].png │ │ ├── test_projected_coordinate_data[eu3035_etrs89_north_europe(210)].png │ │ ├── test_projected_coordinate_data[eu3035_etrs89_south_europe(212)].png │ │ ├── test_projected_coordinate_data[eu3035_webmerc_corner_zoom3(351)].png │ │ ├── test_projected_coordinate_data[utm33s_utm33s_antarctica_z2(223)].png │ │ ├── test_projected_coordinate_data[utm33s_utm33s_antarctica_z4(4811)].png │ │ ├── test_projected_coordinate_data[utm33s_utm33s_central_z5(51718)].png │ │ ├── test_projected_coordinate_data[utm33s_utm33s_equator_z5(51716)].png │ │ ├── test_projected_coordinate_data[utm33s_utm33s_equator_z6(63432)].png │ │ ├── test_projected_coordinate_data[utm33s_utm33s_equator_z7(76864)].png │ │ ├── test_projected_coordinate_data[utm33s_utm33s_equator_z8(8136128)].png │ │ ├── test_projected_coordinate_data[utm33s_utm33s_equator_z9(9277256)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_antimeridian_east(231)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_antimeridian_west(201)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_equator_z3_north(343)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_equator_z3_south(344)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_prime_meridian_z3(342)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_antimeridian_z3_east(372)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_antimeridian_z3_west(302)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_prime_meridian_z5(51610)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_antimeridian_east(231)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_antimeridian_west(201)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_equator_z3_north(343)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_equator_z3_south(344)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_prime_meridian_z3(342)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_antimeridian_z3_east(372)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_antimeridian_z3_west(302)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_prime_meridian_z5(51610)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-etrs89_east_europe(221)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-etrs89_north_europe(210)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-etrs89_south_europe(212)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-etrs89_west_europe(201)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_europe_west(211)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_small_bbox(588)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-wgs84_equator_north(211)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-wgs84_equator_south(212)].png │ │ ├── test_projected_coordinate_data[eu3035_etrs89_southeast_zoom4(466)].png │ │ ├── test_projected_coordinate_data[eu3035_hires_etrs89_small_bbox(588)].png │ │ ├── test_projected_coordinate_data[eu3035_webmerc_corner_zoom5(15125)].png │ │ ├── test_projected_coordinate_data[hrrr_hrrr_se_extreme_z10(10338356)].png │ │ ├── test_projected_coordinate_data[hrrr_hrrr_sw_extreme_z10(10130356)].png │ │ ├── test_projected_coordinate_data[utm33s_utm33s_antarctica_z5(51723)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_antimeridian_z3_east(372)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_antimeridian_z3_west(302)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_equator_z5_north(51615)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_equator_z5_south(51616)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_prime_meridian_z5(51610)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_antimeridian_z5_east(53110)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_antimeridian_z5_west(5010)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-wgs84_antimeridian_west_equator(202)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-wgs84_equator_antimeridian_z3(301)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_antimeridian_z3_east(372)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_antimeridian_z3_west(302)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_equator_z5_north(51615)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_equator_z5_south(51616)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_prime_meridian_z5(51610)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_antimeridian_z5_east(53110)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_antimeridian_z5_west(5010)].png │ │ ├── test_pipeline_tiles[90--90,0-360-wgs84_antimeridian_west_equator(202)].png │ │ ├── test_pipeline_tiles[90--90,0-360-wgs84_equator_antimeridian_z3(301)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-etrs89_center_europe(211)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-etrs89_central_zoom3(322)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-etrs89_central_zoom3(325)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-etrs89_central_zoom4(444)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-etrs89_southeast_zoom4(466)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_corner_zoom3(351)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_corner_zoom5(15125)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_east(232)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_north(211)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_south(212)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_west(202)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_europe_center(221)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_europe_north(220)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_europe_south(222)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_europe_south(500)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_europe_zoom4(485)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_europe_zoom5(51610)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_prime_meridian(221)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-wgs84_prime_meridian(221)].png │ │ ├── test_projected_coordinate_data[eu3035_hires_etrs89_center_europe(211)].png │ │ ├── test_projected_coordinate_data[eu3035_hires_etrs89_central_zoom3(322)].png │ │ ├── test_projected_coordinate_data[eu3035_hires_etrs89_central_zoom3(325)].png │ │ ├── test_projected_coordinate_data[eu3035_hires_etrs89_central_zoom4(444)].png │ │ ├── test_projected_coordinate_data[eu3035_hires_etrs89_east_europe(221)].png │ │ ├── test_projected_coordinate_data[eu3035_hires_etrs89_north_europe(210)].png │ │ ├── test_projected_coordinate_data[eu3035_hires_etrs89_south_europe(212)].png │ │ ├── test_projected_coordinate_data[eu3035_hires_etrs89_west_europe(201)].png │ │ ├── test_projected_coordinate_data[eu3035_hires_webmerc_corner_zoom3(351)].png │ │ ├── test_projected_coordinate_data[utm33s_utm33s_antarctica_z9(9277448)].png │ │ ├── test_projected_coordinate_data[utm33s_utm33s_deep_antarctica_z4(4814)].png │ │ ├── test_projected_coordinate_data[utm33s_utm33s_mid_antarctica_z5(51722)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_antimeridian_z5_east(53110)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_antimeridian_z5_west(5010)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-wgs84_equator_antimeridian_z3(301)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_antimeridian_z5_east(53110)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_antimeridian_z5_west(5010)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-wgs84_equator_antimeridian_z3(301)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_z3_north(343)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_z3_south(344)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_prime_east_z5(51710)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_prime_west_z5(51510)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-wgs84_antimeridian_west(201)].png │ │ ├── test_projected_coordinate_data[eu3035_hires_etrs89_southeast_zoom4(466)].png │ │ ├── test_projected_coordinate_data[eu3035_hires_webmerc_corner_zoom5(15125)].png │ │ ├── test_projected_coordinate_data[utm33s_utm33s_antarctica_edge_z5(51728)].png │ │ ├── test_projected_coordinate_data[utm33s_utm33s_antarctica_edge_z6(63456)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-wgs84_antimeridian_west_equator(202)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_equator_antimeridian_east(53116)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-webmerc_equator_antimeridian_west(5016)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-wgs84_equator_antimeridian_north_z5(5015)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-wgs84_equator_antimeridian_south_z3(302)].png │ │ ├── test_pipeline_tiles[-90-90,0-360-wgs84_equator_antimeridian_south_z5(5016)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-wgs84_antimeridian_west_equator(202)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_equator_antimeridian_east(53116)].png │ │ ├── test_pipeline_tiles[90--90,0-360-webmerc_equator_antimeridian_west(5016)].png │ │ ├── test_pipeline_tiles[90--90,0-360-wgs84_equator_antimeridian_north_z5(5015)].png │ │ ├── test_pipeline_tiles[90--90,0-360-wgs84_equator_antimeridian_south_z3(302)].png │ │ ├── test_pipeline_tiles[90--90,0-360-wgs84_equator_antimeridian_south_z5(5016)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_antimeridian_east(231)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_antimeridian_west(201)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_z5_north(51615)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_z5_south(51616)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_prime_meridian_z3(342)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_prime_meridian_z5(51610)].png │ │ ├── test_projected_coordinate_data[utm33s_utm33s_center_swatch_z9(1341604372)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_equator_antimeridian_east(53116)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-webmerc_equator_antimeridian_west(5016)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-wgs84_equator_antimeridian_south_z3(302)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_equator_antimeridian_east(53116)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-webmerc_equator_antimeridian_west(5016)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-wgs84_equator_antimeridian_south_z3(302)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_antimeridian_z3_east(372)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_antimeridian_z3_west(302)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_antimeridian_z5_west(5010)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-wgs84_equator_antimeridian_z3(301)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-wgs84_equator_antimeridian_north_z5(5015)].png │ │ ├── test_pipeline_tiles[-90-90,-180-180-wgs84_equator_antimeridian_south_z5(5016)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-wgs84_equator_antimeridian_north_z5(5015)].png │ │ ├── test_pipeline_tiles[90--90,-180-180-wgs84_equator_antimeridian_south_z5(5016)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_antimeridian_z5_east(53110)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-wgs84_antimeridian_west_equator(202)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_antimeridian_west(5016)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_antimeridian_east(53116)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-wgs84_equator_antimeridian_north_z5(5015)].png │ │ ├── test_pipeline_tiles[reduced_gaussian_n320-wgs84_equator_antimeridian_south_z3(302)].png │ │ └── test_pipeline_tiles[reduced_gaussian_n320-wgs84_equator_antimeridian_south_z5(5016)].png ├── test_error_renderer.py ├── __init__.py ├── test_utils.py ├── README.md ├── test_create_datasets.py ├── test_lib.py ├── test_config.py └── test_xpublish │ ├── test_tiles │ └── test_tile_query.py │ └── test_wms │ ├── test_wms_query.py │ └── test_wms_attributes.py ├── .github └── workflows │ ├── pre-commit.yml │ ├── test.yml │ └── publish.yml ├── examples └── maplibre │ ├── README.md │ ├── tilejson.html │ ├── wms-tiled.html │ ├── tiles-categorical.html │ ├── tiles-projected.html │ └── tiles.html ├── .pre-commit-config.yaml ├── CLAUDE.md └── .gitignore /.python-version: -------------------------------------------------------------------------------- 1 | 3.11 2 | -------------------------------------------------------------------------------- /src/xpublish_tiles/py.typed: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/xpublish_tiles/cli/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/xpublish_tiles/testing/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/xpublish_tiles/__init__.py: -------------------------------------------------------------------------------- 1 | """xpublish-tiles""" 2 | 3 | from xpublish_tiles.config import config as config 4 | -------------------------------------------------------------------------------- /src/xpublish_tiles/xpublish/wms/__init__.py: -------------------------------------------------------------------------------- 1 | from xpublish_tiles.xpublish.wms.plugin import WMSPlugin 2 | 3 | __all__ = ["WMSPlugin"] 4 | -------------------------------------------------------------------------------- /src/xpublish_tiles/xpublish/tiles/__init__.py: -------------------------------------------------------------------------------- 1 | from xpublish_tiles.xpublish.tiles.plugin import TilesPlugin 2 | 3 | __all__ = ["TilesPlugin"] 4 | -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_bad_latitude_coordinates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_bad_latitude_coordinates.png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_high_zoom_tile_global_dataset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_high_zoom_tile_global_dataset.png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_global_6km_regression[tile0-ds0].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_global_6km_regression[tile0-ds0].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_global_6km_regression[tile0-ds1].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_global_6km_regression[tile0-ds1].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_global_6km_regression[tile1-ds0].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_global_6km_regression[tile1-ds0].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_global_6km_regression[tile1-ds1].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_global_6km_regression[tile1-ds1].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_global_6km_regression[tile2-ds0].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_global_6km_regression[tile2-ds0].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_global_6km_regression[tile2-ds1].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_global_6km_regression[tile2-ds1].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_global_6km_regression[tile3-ds0].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_global_6km_regression[tile3-ds0].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_global_6km_regression[tile3-ds1].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_global_6km_regression[tile3-ds1].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_global_6km_regression[tile4-ds0].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_global_6km_regression[tile4-ds0].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_global_6km_regression[tile4-ds1].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_global_6km_regression[tile4-ds1].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_global_6km_regression[tile5-ds0].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_global_6km_regression[tile5-ds0].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_global_6km_regression[tile5-ds1].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_global_6km_regression[tile5-ds1].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_bad_bbox[-90-90,0-360].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_bad_bbox[-90-90,0-360].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_bad_bbox[90--90,0-360].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_bad_bbox[90--90,0-360].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_bad_bbox[-90-90,-180-180].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_bad_bbox[-90-90,-180-180].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_bad_bbox[90--90,-180-180].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_bad_bbox[90--90,-180-180].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_categorical_data[para_north_z4(457)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_categorical_data[para_north_z4(457)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_categorical_data[para_south_z4(458)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_categorical_data[para_south_z4(458)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_categorical_data_with_custom_colormap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_categorical_data_with_custom_colormap.png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_categorical_data[para_belem_z6(62231)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_categorical_data[para_belem_z6(62231)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_categorical_data[para_central_z7(74564)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_categorical_data[para_central_z7(74564)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_categorical_data[para_north_z7(74463)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_categorical_data[para_north_z7(74463)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_categorical_data[para_south_z8(888128)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_categorical_data[para_south_z8(888128)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_global_nans_data[wgs84_prime_east(231)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_global_nans_data[wgs84_prime_east(231)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_global_nans_data[wgs84_prime_west(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_global_nans_data[wgs84_prime_west(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_bad_bbox[reduced_gaussian_n320].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_bad_bbox[reduced_gaussian_n320].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_categorical_data[para_northeast_z5(51115)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_categorical_data[para_northeast_z5(51115)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_categorical_data[para_northwest_z5(51015)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_categorical_data[para_northwest_z5(51015)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_categorical_data[para_southeast_z5(51116)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_categorical_data[para_southeast_z5(51116)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_categorical_data[para_southwest_z5(51016)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_categorical_data[para_southwest_z5(51016)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_global_nans_data[wgs84_equator_north(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_global_nans_data[wgs84_equator_north(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_global_nans_data[wgs84_equator_south(212)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_global_nans_data[wgs84_equator_south(212)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_categorical_data[para_south_z8(1214802064)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_categorical_data[para_south_z8(1214802064)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_categorical_data[para_south_z8(1329644129)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_categorical_data[para_south_z8(1329644129)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_categorical_data[para_south_z8(1459718252)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_categorical_data[para_south_z8(1459718252)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_global_nans_data[wgs84_prime_meridian(221)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_global_nans_data[wgs84_prime_meridian(221)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_high_zoom_tile_global_dataset[-90-90,0-360].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_high_zoom_tile_global_dataset[-90-90,0-360].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_high_zoom_tile_global_dataset[90--90,0-360].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_high_zoom_tile_global_dataset[90--90,0-360].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_curvilinear_data[curvilinear_hrrr_east_z4(435)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_curvilinear_data[curvilinear_hrrr_east_z4(435)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_global_nans_data[wgs84_antimeridian_west(201)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_global_nans_data[wgs84_antimeridian_west(201)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_high_zoom_tile_global_dataset[-90-90,-180-180].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_high_zoom_tile_global_dataset[-90-90,-180-180].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_high_zoom_tile_global_dataset[90--90,-180-180].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_high_zoom_tile_global_dataset[90--90,-180-180].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_curvilinear_data[curvilinear_central_us_z6(61524)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_curvilinear_data[curvilinear_central_us_z6(61524)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-wgs84_prime_east(231)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-wgs84_prime_east(231)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-wgs84_prime_west(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-wgs84_prime_west(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-wgs84_prime_east(231)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-wgs84_prime_east(231)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-wgs84_prime_west(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-wgs84_prime_west(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_east_z2(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_east_z2(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_south_z3(313)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_south_z3(313)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_west_z2(201)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_west_z2(201)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_curvilinear_data[curvilinear_hrrr_central_z7(72748)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_curvilinear_data[curvilinear_hrrr_central_z7(72748)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_global_nans_data[wgs84_equator_antimeridian_z3(301)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_global_nans_data[wgs84_equator_antimeridian_z3(301)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_high_zoom_tile_global_dataset[reduced_gaussian_n320].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_high_zoom_tile_global_dataset[reduced_gaussian_n320].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-etrs89_east_europe(221)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-etrs89_east_europe(221)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-etrs89_small_bbox(588)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-etrs89_small_bbox(588)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-etrs89_west_europe(201)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-etrs89_west_europe(201)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_small_bbox(588)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_small_bbox(588)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-etrs89_east_europe(221)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-etrs89_east_europe(221)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-etrs89_small_bbox(588)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-etrs89_small_bbox(588)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-etrs89_west_europe(201)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-etrs89_west_europe(201)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_small_bbox(588)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_small_bbox(588)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_center_z5(5711)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_center_z5(5711)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_mid_z3(345)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_mid_z3(345)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_curvilinear_data[curvilinear_central_us_z11(11442744)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_curvilinear_data[curvilinear_central_us_z11(11442744)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_curvilinear_data[curvilinear_hrrr_se_corner_z5(5611)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_curvilinear_data[curvilinear_hrrr_se_corner_z5(5611)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_curvilinear_data[curvilinear_hrrr_sw_corner_z5(5712)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_curvilinear_data[curvilinear_hrrr_sw_corner_z5(5712)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_global_nans_data[wgs84_antimeridian_west_equator(202)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_global_nans_data[wgs84_antimeridian_west_equator(202)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-etrs89_east_europe(221)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-etrs89_east_europe(221)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-etrs89_small_bbox(588)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-etrs89_small_bbox(588)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-etrs89_west_europe(201)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-etrs89_west_europe(201)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_small_bbox(588)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_small_bbox(588)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-wgs84_prime_east(231)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-wgs84_prime_east(231)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-wgs84_prime_west(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-wgs84_prime_west(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-etrs89_center_europe(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-etrs89_center_europe(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-etrs89_central_zoom3(322)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-etrs89_central_zoom3(322)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-etrs89_central_zoom3(325)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-etrs89_central_zoom3(325)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-etrs89_central_zoom4(444)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-etrs89_central_zoom4(444)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-etrs89_north_europe(210)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-etrs89_north_europe(210)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-etrs89_south_europe(212)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-etrs89_south_europe(212)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_corner_zoom3(351)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_corner_zoom3(351)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_equator_east(232)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_equator_east(232)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_equator_north(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_equator_north(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_equator_south(212)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_equator_south(212)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_equator_west(202)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_equator_west(202)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_europe_center(221)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_europe_center(221)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_europe_north(220)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_europe_north(220)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_europe_south(222)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_europe_south(222)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_europe_south(500)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_europe_south(500)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_europe_west(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_europe_west(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_europe_zoom4(485)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_europe_zoom4(485)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-wgs84_equator_north(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-wgs84_equator_north(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-wgs84_equator_south(212)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-wgs84_equator_south(212)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-wgs84_prime_meridian(221)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-wgs84_prime_meridian(221)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-etrs89_east_europe(221)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-etrs89_east_europe(221)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-etrs89_small_bbox(588)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-etrs89_small_bbox(588)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-etrs89_west_europe(201)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-etrs89_west_europe(201)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_small_bbox(588)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_small_bbox(588)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-wgs84_prime_east(231)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-wgs84_prime_east(231)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-wgs84_prime_west(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-wgs84_prime_west(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-etrs89_center_europe(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-etrs89_center_europe(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-etrs89_central_zoom3(322)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-etrs89_central_zoom3(322)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-etrs89_central_zoom3(325)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-etrs89_central_zoom3(325)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-etrs89_central_zoom4(444)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-etrs89_central_zoom4(444)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-etrs89_north_europe(210)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-etrs89_north_europe(210)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-etrs89_south_europe(212)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-etrs89_south_europe(212)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_corner_zoom3(351)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_corner_zoom3(351)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_equator_east(232)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_equator_east(232)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_equator_north(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_equator_north(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_equator_south(212)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_equator_south(212)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_equator_west(202)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_equator_west(202)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_europe_center(221)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_europe_center(221)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_europe_north(220)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_europe_north(220)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_europe_south(222)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_europe_south(222)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_europe_south(500)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_europe_south(500)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_europe_west(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_europe_west(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_europe_zoom4(485)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_europe_zoom4(485)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-wgs84_equator_north(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-wgs84_equator_north(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-wgs84_equator_south(212)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-wgs84_equator_south(212)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-wgs84_prime_meridian(221)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-wgs84_prime_meridian(221)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_center_z7(72950)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_center_z7(72950)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_ne_corner_z3(322)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_ne_corner_z3(322)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_nw_corner_z3(312)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_nw_corner_z3(312)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_se_corner_z3(322)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_se_corner_z3(322)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_sw_corner_z3(312)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_sw_corner_z3(312)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_west_edge_z5(5411)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_west_edge_z5(5411)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_africa_z2(222)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_africa_z2(222)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_africa_z3(344)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_africa_z3(344)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_deep_z3(346)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_deep_z3(346)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_north_z4(488)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_north_z4(488)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_south_z4(4810)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_south_z4(4810)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-etrs89_center_europe(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-etrs89_center_europe(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-etrs89_central_zoom3(322)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-etrs89_central_zoom3(322)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-etrs89_central_zoom3(325)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-etrs89_central_zoom3(325)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-etrs89_central_zoom4(444)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-etrs89_central_zoom4(444)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-etrs89_north_europe(210)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-etrs89_north_europe(210)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-etrs89_south_europe(212)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-etrs89_south_europe(212)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_corner_zoom3(351)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_corner_zoom3(351)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_equator_east(232)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_equator_east(232)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_equator_west(202)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_equator_west(202)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_europe_north(220)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_europe_north(220)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_europe_south(222)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_europe_south(222)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_europe_south(500)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_europe_south(500)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_europe_west(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_europe_west(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_europe_zoom4(485)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_europe_zoom4(485)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-wgs84_equator_north(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-wgs84_equator_north(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-wgs84_equator_south(212)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-wgs84_equator_south(212)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-wgs84_prime_meridian(221)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-wgs84_prime_meridian(221)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-etrs89_southeast_zoom4(466)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-etrs89_southeast_zoom4(466)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_corner_zoom5(15125)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_corner_zoom5(15125)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_europe_zoom5(51610)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_europe_zoom5(51610)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_prime_east_z5(51710)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_prime_east_z5(51710)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_prime_meridian(221)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_prime_meridian(221)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_prime_west_z5(51510)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_prime_west_z5(51510)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-wgs84_antimeridian_west(201)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-wgs84_antimeridian_west(201)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-etrs89_center_europe(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-etrs89_center_europe(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-etrs89_central_zoom3(322)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-etrs89_central_zoom3(322)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-etrs89_central_zoom3(325)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-etrs89_central_zoom3(325)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-etrs89_central_zoom4(444)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-etrs89_central_zoom4(444)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-etrs89_north_europe(210)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-etrs89_north_europe(210)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-etrs89_south_europe(212)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-etrs89_south_europe(212)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_corner_zoom3(351)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_corner_zoom3(351)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_equator_east(232)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_equator_east(232)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_equator_west(202)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_equator_west(202)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_europe_north(220)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_europe_north(220)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_europe_south(222)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_europe_south(222)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_europe_south(500)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_europe_south(500)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_europe_west(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_europe_west(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_europe_zoom4(485)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_europe_zoom4(485)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-wgs84_equator_north(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-wgs84_equator_north(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-wgs84_equator_south(212)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-wgs84_equator_south(212)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-wgs84_prime_meridian(221)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-wgs84_prime_meridian(221)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-etrs89_southeast_zoom4(466)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-etrs89_southeast_zoom4(466)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_corner_zoom5(15125)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_corner_zoom5(15125)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_europe_zoom5(51610)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_europe_zoom5(51610)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_prime_east_z5(51710)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_prime_east_z5(51710)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_prime_meridian(221)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_prime_meridian(221)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_prime_west_z5(51510)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_prime_west_z5(51510)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-wgs84_antimeridian_west(201)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-wgs84_antimeridian_west(201)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_etrs89_east_europe(221)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_etrs89_east_europe(221)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_etrs89_small_bbox(588)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_etrs89_small_bbox(588)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_etrs89_west_europe(201)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_etrs89_west_europe(201)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_center_z10(10234403)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_center_z10(10234403)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_east_edge_z5(51011)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_east_edge_z5(51011)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_se_precise_z7(74244)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_se_precise_z7(74244)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_south_edge_z5(5413)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_south_edge_z5(5413)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_sw_precise_z7(71644)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_sw_precise_z7(71644)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_north_z5(51717)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_north_z5(51717)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_south_z5(51720)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_south_z5(51720)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_global_nans_data[wgs84_equator_antimeridian_north_z5(5015)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_global_nans_data[wgs84_equator_antimeridian_north_z5(5015)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_global_nans_data[wgs84_equator_antimeridian_south_z3(302)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_global_nans_data[wgs84_equator_antimeridian_south_z3(302)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_global_nans_data[wgs84_equator_antimeridian_south_z5(5016)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_global_nans_data[wgs84_equator_antimeridian_south_z5(5016)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-etrs89_southeast_zoom4(466)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-etrs89_southeast_zoom4(466)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_corner_zoom5(15125)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_corner_zoom5(15125)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_equator_north(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_equator_north(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_equator_south(212)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_equator_south(212)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_europe_center(221)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_europe_center(221)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_europe_zoom5(51610)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_europe_zoom5(51610)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_prime_east_z5(51710)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_prime_east_z5(51710)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_prime_meridian(221)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_prime_meridian(221)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_prime_west_z5(51510)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_prime_west_z5(51510)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-wgs84_antimeridian_west(201)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-wgs84_antimeridian_west(201)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_antimeridian_east(231)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_antimeridian_east(231)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_antimeridian_west(201)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_antimeridian_west(201)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_equator_z3_north(343)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_equator_z3_north(343)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_equator_z3_south(344)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_equator_z3_south(344)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_equator_z5_north(51615)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_equator_z5_north(51615)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_equator_z5_south(51616)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_equator_z5_south(51616)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_prime_meridian_z3(342)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_prime_meridian_z3(342)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-etrs89_southeast_zoom4(466)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-etrs89_southeast_zoom4(466)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_corner_zoom5(15125)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_corner_zoom5(15125)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_equator_north(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_equator_north(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_equator_south(212)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_equator_south(212)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_europe_center(221)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_europe_center(221)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_europe_zoom5(51610)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_europe_zoom5(51610)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_prime_east_z5(51710)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_prime_east_z5(51710)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_prime_meridian(221)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_prime_meridian(221)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_prime_west_z5(51510)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_prime_west_z5(51510)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-wgs84_antimeridian_west(201)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-wgs84_antimeridian_west(201)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_antimeridian_east(231)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_antimeridian_east(231)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_antimeridian_west(201)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_antimeridian_west(201)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_equator_z3_north(343)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_equator_z3_north(343)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_equator_z3_south(344)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_equator_z3_south(344)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_equator_z5_north(51615)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_equator_z5_north(51615)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_equator_z5_south(51616)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_equator_z5_south(51616)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_prime_meridian_z3(342)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_prime_meridian_z3(342)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-etrs89_small_bbox(588)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-etrs89_small_bbox(588)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-wgs84_prime_east(231)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-wgs84_prime_east(231)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-wgs84_prime_west(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-wgs84_prime_west(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_etrs89_center_europe(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_etrs89_center_europe(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_etrs89_central_zoom3(322)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_etrs89_central_zoom3(322)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_etrs89_central_zoom3(325)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_etrs89_central_zoom3(325)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_etrs89_central_zoom4(444)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_etrs89_central_zoom4(444)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_etrs89_north_europe(210)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_etrs89_north_europe(210)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_etrs89_south_europe(212)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_etrs89_south_europe(212)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_webmerc_corner_zoom3(351)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_webmerc_corner_zoom3(351)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_antarctica_z2(223)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_antarctica_z2(223)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_antarctica_z4(4811)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_antarctica_z4(4811)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_central_z5(51718)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_central_z5(51718)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_equator_z5(51716)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_equator_z5(51716)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_equator_z6(63432)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_equator_z6(63432)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_equator_z7(76864)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_equator_z7(76864)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_equator_z8(8136128)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_equator_z8(8136128)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_equator_z9(9277256)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_equator_z9(9277256)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_antimeridian_east(231)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_antimeridian_east(231)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_antimeridian_west(201)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_antimeridian_west(201)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_equator_z3_north(343)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_equator_z3_north(343)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_equator_z3_south(344)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_equator_z3_south(344)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_prime_meridian_z3(342)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_prime_meridian_z3(342)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_antimeridian_z3_east(372)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_antimeridian_z3_east(372)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_antimeridian_z3_west(302)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_antimeridian_z3_west(302)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_prime_meridian_z5(51610)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_prime_meridian_z5(51610)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_antimeridian_east(231)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_antimeridian_east(231)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_antimeridian_west(201)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_antimeridian_west(201)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_equator_z3_north(343)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_equator_z3_north(343)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_equator_z3_south(344)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_equator_z3_south(344)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_prime_meridian_z3(342)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_prime_meridian_z3(342)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_antimeridian_z3_east(372)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_antimeridian_z3_east(372)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_antimeridian_z3_west(302)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_antimeridian_z3_west(302)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_prime_meridian_z5(51610)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_prime_meridian_z5(51610)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-etrs89_east_europe(221)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-etrs89_east_europe(221)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-etrs89_north_europe(210)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-etrs89_north_europe(210)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-etrs89_south_europe(212)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-etrs89_south_europe(212)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-etrs89_west_europe(201)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-etrs89_west_europe(201)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_europe_west(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_europe_west(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_small_bbox(588)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_small_bbox(588)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-wgs84_equator_north(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-wgs84_equator_north(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-wgs84_equator_south(212)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-wgs84_equator_south(212)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_etrs89_southeast_zoom4(466)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_etrs89_southeast_zoom4(466)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_hires_etrs89_small_bbox(588)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_hires_etrs89_small_bbox(588)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_webmerc_corner_zoom5(15125)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_webmerc_corner_zoom5(15125)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_se_extreme_z10(10338356)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_se_extreme_z10(10338356)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_sw_extreme_z10(10130356)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[hrrr_hrrr_sw_extreme_z10(10130356)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_antarctica_z5(51723)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_antarctica_z5(51723)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_antimeridian_z3_east(372)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_antimeridian_z3_east(372)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_antimeridian_z3_west(302)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_antimeridian_z3_west(302)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_equator_z5_north(51615)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_equator_z5_north(51615)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_equator_z5_south(51616)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_equator_z5_south(51616)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_prime_meridian_z5(51610)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_prime_meridian_z5(51610)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_antimeridian_z5_east(53110)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_antimeridian_z5_east(53110)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_antimeridian_z5_west(5010)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_antimeridian_z5_west(5010)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-wgs84_antimeridian_west_equator(202)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-wgs84_antimeridian_west_equator(202)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-wgs84_equator_antimeridian_z3(301)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-wgs84_equator_antimeridian_z3(301)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_antimeridian_z3_east(372)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_antimeridian_z3_east(372)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_antimeridian_z3_west(302)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_antimeridian_z3_west(302)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_equator_z5_north(51615)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_equator_z5_north(51615)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_equator_z5_south(51616)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_equator_z5_south(51616)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_prime_meridian_z5(51610)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_prime_meridian_z5(51610)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_antimeridian_z5_east(53110)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_antimeridian_z5_east(53110)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_antimeridian_z5_west(5010)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_antimeridian_z5_west(5010)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-wgs84_antimeridian_west_equator(202)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-wgs84_antimeridian_west_equator(202)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-wgs84_equator_antimeridian_z3(301)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-wgs84_equator_antimeridian_z3(301)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-etrs89_center_europe(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-etrs89_center_europe(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-etrs89_central_zoom3(322)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-etrs89_central_zoom3(322)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-etrs89_central_zoom3(325)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-etrs89_central_zoom3(325)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-etrs89_central_zoom4(444)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-etrs89_central_zoom4(444)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-etrs89_southeast_zoom4(466)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-etrs89_southeast_zoom4(466)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_corner_zoom3(351)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_corner_zoom3(351)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_corner_zoom5(15125)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_corner_zoom5(15125)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_east(232)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_east(232)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_north(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_north(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_south(212)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_south(212)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_west(202)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_west(202)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_europe_center(221)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_europe_center(221)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_europe_north(220)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_europe_north(220)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_europe_south(222)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_europe_south(222)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_europe_south(500)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_europe_south(500)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_europe_zoom4(485)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_europe_zoom4(485)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_europe_zoom5(51610)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_europe_zoom5(51610)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_prime_meridian(221)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_prime_meridian(221)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-wgs84_prime_meridian(221)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-wgs84_prime_meridian(221)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_hires_etrs89_center_europe(211)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_hires_etrs89_center_europe(211)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_hires_etrs89_central_zoom3(322)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_hires_etrs89_central_zoom3(322)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_hires_etrs89_central_zoom3(325)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_hires_etrs89_central_zoom3(325)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_hires_etrs89_central_zoom4(444)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_hires_etrs89_central_zoom4(444)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_hires_etrs89_east_europe(221)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_hires_etrs89_east_europe(221)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_hires_etrs89_north_europe(210)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_hires_etrs89_north_europe(210)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_hires_etrs89_south_europe(212)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_hires_etrs89_south_europe(212)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_hires_etrs89_west_europe(201)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_hires_etrs89_west_europe(201)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_hires_webmerc_corner_zoom3(351)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_hires_webmerc_corner_zoom3(351)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_antarctica_z9(9277448)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_antarctica_z9(9277448)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_deep_antarctica_z4(4814)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_deep_antarctica_z4(4814)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_mid_antarctica_z5(51722)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_mid_antarctica_z5(51722)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_antimeridian_z5_east(53110)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_antimeridian_z5_east(53110)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_antimeridian_z5_west(5010)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_antimeridian_z5_west(5010)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-wgs84_equator_antimeridian_z3(301)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-wgs84_equator_antimeridian_z3(301)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_antimeridian_z5_east(53110)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_antimeridian_z5_east(53110)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_antimeridian_z5_west(5010)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_antimeridian_z5_west(5010)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-wgs84_equator_antimeridian_z3(301)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-wgs84_equator_antimeridian_z3(301)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_z3_north(343)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_z3_north(343)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_z3_south(344)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_z3_south(344)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_prime_east_z5(51710)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_prime_east_z5(51710)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_prime_west_z5(51510)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_prime_west_z5(51510)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-wgs84_antimeridian_west(201)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-wgs84_antimeridian_west(201)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_hires_etrs89_southeast_zoom4(466)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_hires_etrs89_southeast_zoom4(466)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_hires_webmerc_corner_zoom5(15125)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[eu3035_hires_webmerc_corner_zoom5(15125)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_antarctica_edge_z5(51728)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_antarctica_edge_z5(51728)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_antarctica_edge_z6(63456)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_antarctica_edge_z6(63456)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-wgs84_antimeridian_west_equator(202)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-wgs84_antimeridian_west_equator(202)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_equator_antimeridian_east(53116)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_equator_antimeridian_east(53116)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_equator_antimeridian_west(5016)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-webmerc_equator_antimeridian_west(5016)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-wgs84_equator_antimeridian_north_z5(5015)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-wgs84_equator_antimeridian_north_z5(5015)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-wgs84_equator_antimeridian_south_z3(302)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-wgs84_equator_antimeridian_south_z3(302)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-wgs84_equator_antimeridian_south_z5(5016)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,0-360-wgs84_equator_antimeridian_south_z5(5016)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-wgs84_antimeridian_west_equator(202)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-wgs84_antimeridian_west_equator(202)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_equator_antimeridian_east(53116)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_equator_antimeridian_east(53116)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_equator_antimeridian_west(5016)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-webmerc_equator_antimeridian_west(5016)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-wgs84_equator_antimeridian_north_z5(5015)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-wgs84_equator_antimeridian_north_z5(5015)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-wgs84_equator_antimeridian_south_z3(302)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-wgs84_equator_antimeridian_south_z3(302)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-wgs84_equator_antimeridian_south_z5(5016)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,0-360-wgs84_equator_antimeridian_south_z5(5016)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_antimeridian_east(231)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_antimeridian_east(231)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_antimeridian_west(201)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_antimeridian_west(201)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_z5_north(51615)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_z5_north(51615)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_z5_south(51616)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_z5_south(51616)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_prime_meridian_z3(342)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_prime_meridian_z3(342)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_prime_meridian_z5(51610)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_prime_meridian_z5(51610)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_center_swatch_z9(1341604372)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_projected_coordinate_data[utm33s_utm33s_center_swatch_z9(1341604372)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_equator_antimeridian_east(53116)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_equator_antimeridian_east(53116)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_equator_antimeridian_west(5016)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-webmerc_equator_antimeridian_west(5016)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-wgs84_equator_antimeridian_south_z3(302)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-wgs84_equator_antimeridian_south_z3(302)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_equator_antimeridian_east(53116)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_equator_antimeridian_east(53116)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_equator_antimeridian_west(5016)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-webmerc_equator_antimeridian_west(5016)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-wgs84_equator_antimeridian_south_z3(302)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-wgs84_equator_antimeridian_south_z3(302)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_antimeridian_z3_east(372)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_antimeridian_z3_east(372)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_antimeridian_z3_west(302)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_antimeridian_z3_west(302)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_antimeridian_z5_west(5010)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_antimeridian_z5_west(5010)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-wgs84_equator_antimeridian_z3(301)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-wgs84_equator_antimeridian_z3(301)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-wgs84_equator_antimeridian_north_z5(5015)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-wgs84_equator_antimeridian_north_z5(5015)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-wgs84_equator_antimeridian_south_z5(5016)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[-90-90,-180-180-wgs84_equator_antimeridian_south_z5(5016)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-wgs84_equator_antimeridian_north_z5(5015)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-wgs84_equator_antimeridian_north_z5(5015)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-wgs84_equator_antimeridian_south_z5(5016)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[90--90,-180-180-wgs84_equator_antimeridian_south_z5(5016)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_antimeridian_z5_east(53110)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_antimeridian_z5_east(53110)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-wgs84_antimeridian_west_equator(202)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-wgs84_antimeridian_west_equator(202)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_antimeridian_west(5016)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_antimeridian_west(5016)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_antimeridian_east(53116)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-webmerc_equator_antimeridian_east(53116)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-wgs84_equator_antimeridian_north_z5(5015)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-wgs84_equator_antimeridian_north_z5(5015)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-wgs84_equator_antimeridian_south_z3(302)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-wgs84_equator_antimeridian_south_z3(302)].png -------------------------------------------------------------------------------- /tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-wgs84_equator_antimeridian_south_z5(5016)].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/earth-mover/xpublish-tiles/HEAD/tests/__snapshots__/test_pipeline/test_pipeline_tiles[reduced_gaussian_n320-wgs84_equator_antimeridian_south_z5(5016)].png -------------------------------------------------------------------------------- /.github/workflows/pre-commit.yml: -------------------------------------------------------------------------------- 1 | name: pre-commit 2 | 3 | on: 4 | pull_request: 5 | push: 6 | branches: [main] 7 | 8 | concurrency: 9 | group: ${{ github.workflow }}-${{ github.ref }} 10 | cancel-in-progress: true 11 | 12 | jobs: 13 | pre-commit: 14 | runs-on: ubuntu-latest 15 | steps: 16 | - uses: actions/checkout@v4 17 | - uses: actions/setup-python@v5 18 | - uses: pre-commit/action@v3.0.1 19 | -------------------------------------------------------------------------------- /examples/maplibre/README.md: -------------------------------------------------------------------------------- 1 | # MapLibre Examples 2 | 3 | Run the following command to start the server: 4 | ``` 5 | uv run xpublish-tiles --dataset=earthmover-public/gfs --group=solar 6 | ``` 7 | 8 | Then you can try the examples: 9 | 10 | * [MapLibre XYZ Tiles](./tiles.html) 11 | * [MapLibre TileJSON](./tilejson.html) 12 | * [MapLibre WMS Tiles](./wms-tiled.html) 13 | 14 | ## Categorical Examples 15 | 16 | *More Instructions to Come* 17 | 18 | * [MapLibre XYZ Tiles with Categorical Data](./tiles-categorical.html) 19 | 20 | ## Projected Examples 21 | 22 | *More Instructions to Come* 23 | 24 | * [MapLibre XYZ Tiles with Projected Data](./tiles-projected.html) 25 | -------------------------------------------------------------------------------- /tests/test_error_renderer.py: -------------------------------------------------------------------------------- 1 | import pytest 2 | 3 | from xpublish_tiles.render import render_error_image 4 | from xpublish_tiles.types import ImageFormat 5 | 6 | 7 | @pytest.mark.parametrize("format", [ImageFormat.PNG, ImageFormat.JPEG]) 8 | def test_render_error_image(format): 9 | width, height = 256, 256 10 | message = "Test Error" 11 | format = ImageFormat.PNG 12 | 13 | buffer = render_error_image(message, width=width, height=height, format=format) 14 | 15 | # Check that the buffer is not empty 16 | assert buffer.getbuffer().nbytes > 0 17 | 18 | # Check that the buffer starts with PNG signature 19 | if format == ImageFormat.PNG: 20 | assert buffer.getvalue().startswith(b"\x89PNG\r\n\x1a\n") 21 | elif format == ImageFormat.JPEG: 22 | assert buffer.getvalue().startswith(b"\xff\xd8") 23 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | ci: 2 | autoupdate_commit_msg: 'chore: update pre-commit hooks' 3 | autoupdate_schedule: quarterly 4 | 5 | repos: 6 | - repo: https://github.com/pre-commit/pre-commit-hooks 7 | rev: v6.0.0 8 | hooks: 9 | - id: trailing-whitespace 10 | - id: end-of-file-fixer 11 | - id: check-yaml 12 | exclude: docs/mkdocs.yml 13 | - id: debug-statements 14 | - id: mixed-line-ending 15 | - repo: https://github.com/astral-sh/ruff-pre-commit 16 | # Ruff version. 17 | rev: 'v0.14.0' 18 | hooks: 19 | - id: ruff-format 20 | - id: ruff-check 21 | args: ["--fix", "--show-fixes"] 22 | - repo: https://github.com/rhysd/actionlint 23 | rev: v1.7.8 24 | hooks: 25 | - id: actionlint 26 | files: ".github/workflows/" 27 | args: ["-ignore", "SC1090", "-ignore", "SC2046", "-ignore", "SC2086", "-ignore", "SC2129", "-ignore", "SC2155"] 28 | - repo: https://github.com/codespell-project/codespell 29 | # Configuration for codespell is in .codespellrc 30 | rev: v2.4.1 31 | hooks: 32 | - id: codespell 33 | exclude: ^(docs/.*|tests/__snapshots__/.*)$ 34 | args: ["--skip", "./docs"] 35 | -------------------------------------------------------------------------------- /src/xpublish_tiles/config.py: -------------------------------------------------------------------------------- 1 | """Configuration management for xpublish-tiles using donfig.""" 2 | 3 | from __future__ import annotations 4 | 5 | import donfig 6 | 7 | config = donfig.Config( 8 | "xpublish_tiles", 9 | defaults=[ 10 | { 11 | "num_threads": 8, 12 | "transform_chunk_size": 1024, 13 | "detect_approx_rectilinear": True, 14 | "rectilinear_check_min_size": 512, 15 | # Ideally, we'd want to pad with 1. 16 | # However, due to floating point roundoff when datashader *infers* the cell edges, 17 | # we might end up with the last grid cell of a global dataset ending very slightly before 18 | # the bounds of the Canvas. This then results in transparent pixels 19 | "default_pad": 2, 20 | # in bytes; ~10,000 * 10,000 float64 pixels; takes the pipeline ~ 1s 21 | "max_renderable_size": 1024**3, 22 | "max_pixel_factor": 4, # coarsen down to this many input grid cells per output pixel 23 | "async_load": True, 24 | "grid_cache_max_size": 16, # maximum number of grid systems to cache 25 | } 26 | ], 27 | paths=[], 28 | ) 29 | -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- 1 | """Shared test utilities.""" 2 | 3 | from pyproj import CRS 4 | from pyproj.aoi import BBox 5 | 6 | from xpublish_tiles.types import ImageFormat, OutputBBox, OutputCRS, QueryParams 7 | 8 | 9 | def create_query_params( 10 | tile, 11 | tms, 12 | *, 13 | colorscalerange=None, 14 | size=256, 15 | style="raster", 16 | variant="viridis", 17 | colormap=None, 18 | ): 19 | """Create QueryParams instance using test tiles and TMS.""" 20 | epsg_code = tms.crs.to_epsg() 21 | if epsg_code is None: 22 | target_crs = CRS.from_user_input(tms.crs) 23 | else: 24 | target_crs = CRS.from_epsg(epsg_code) 25 | 26 | native_bounds = tms.xy_bounds(tile) 27 | bbox = BBox( 28 | west=native_bounds[0], 29 | south=native_bounds[1], 30 | east=native_bounds[2], 31 | north=native_bounds[3], 32 | ) 33 | 34 | return QueryParams( 35 | variables=["foo"], 36 | crs=OutputCRS(target_crs), 37 | bbox=OutputBBox(bbox), 38 | selectors={}, 39 | style=style, 40 | width=size, 41 | height=size, 42 | variant=variant, 43 | colorscalerange=colorscalerange, 44 | colormap=colormap, 45 | format=ImageFormat.PNG, 46 | ) 47 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Run Tests 2 | 3 | on: 4 | pull_request: 5 | push: 6 | branches: [main] 7 | 8 | concurrency: 9 | group: ${{ github.workflow }}-${{ github.ref }} 10 | cancel-in-progress: true 11 | 12 | jobs: 13 | run-tests: 14 | name: python 15 | runs-on: ubuntu-latest 16 | 17 | steps: 18 | - uses: actions/checkout@v4 19 | 20 | - name: Install uv 21 | uses: astral-sh/setup-uv@v6 22 | with: 23 | enable-cache: true 24 | 25 | - name: Install the project 26 | run: uv sync --locked --dev 27 | 28 | - name: Run Type Checker 29 | run: uv run ty check src/ tests/ 30 | 31 | # To debug snapshot test failures run with --debug-visual-save and download the artifact zip created in the next step. 32 | - name: Run tests with coverage 33 | run: uv run pytest tests --cov=src/xpublish_tiles --cov-report=xml --cov-report=term-missing --durations=10 -nauto 34 | 35 | - name: Upload debug visual images on failure 36 | if: failure() 37 | uses: actions/upload-artifact@v4 38 | with: 39 | name: debug-visual-images 40 | path: debug_visual_diff_*.png 41 | retention-days: 7 42 | if-no-files-found: ignore 43 | 44 | - name: Upload coverage to Codecov 45 | uses: codecov/codecov-action@v5 46 | with: 47 | token: ${{ secrets.CODECOV_TOKEN }} 48 | fail_ci_if_error: true 49 | -------------------------------------------------------------------------------- /tests/test_utils.py: -------------------------------------------------------------------------------- 1 | import math 2 | 3 | from xpublish_tiles.utils import normalize_longitude_deg, normalize_tilejson_bounds 4 | 5 | 6 | def test_normalize_longitude_deg_basic(): 7 | # Values within range unchanged 8 | assert normalize_longitude_deg(0.0) == 0.0 9 | assert normalize_longitude_deg(170.0) == 170.0 10 | assert normalize_longitude_deg(-170.0) == -170.0 11 | 12 | # Wrap-around cases 13 | assert normalize_longitude_deg(190.0) == -170.0 14 | assert normalize_longitude_deg(360.0) == 0.0 15 | assert normalize_longitude_deg(-190.0) == 170.0 16 | 17 | # Boundary values remain 18 | assert normalize_longitude_deg(180.0) == -180.0 or math.isclose( 19 | normalize_longitude_deg(180.0), -180.0 20 | ) 21 | assert normalize_longitude_deg(-180.0) == -180.0 22 | 23 | 24 | def test_normalize_tilejson_bounds(): 25 | # Full world in 0..360 -> normalized to [-180, 180] 26 | assert normalize_tilejson_bounds([0.0, -90.0, 360.0, 90.0]) == [ 27 | -180.0, 28 | -90.0, 29 | 180.0, 30 | 90.0, 31 | ] 32 | 33 | # Dateline-crossing region 350..10 -> normalized to full world 34 | assert normalize_tilejson_bounds([350.0, -10.0, 10.0, 10.0]) == [ 35 | -180.0, 36 | -10.0, 37 | 180.0, 38 | 10.0, 39 | ] 40 | 41 | # Regular region stays the same 42 | assert normalize_tilejson_bounds([-170.0, -10.0, 170.0, 10.0]) == [ 43 | -170.0, 44 | -10.0, 45 | 170.0, 46 | 10.0, 47 | ] 48 | -------------------------------------------------------------------------------- /src/xpublish_tiles/testing/grids/extract_n320.py: -------------------------------------------------------------------------------- 1 | # /// script 2 | # dependencies = [ 3 | # "requests", 4 | # "beautifulsoup4", 5 | # ] 6 | # /// 7 | # 8 | # Extract N320 Reduced Gaussian Grid from ECMWF documentation 9 | # Source: https://www.ecmwf.int/en/forecasts/documentation-and-support/gaussian_n320 10 | 11 | import csv 12 | 13 | import requests 14 | from bs4 import BeautifulSoup # type: ignore[import-untyped] 15 | 16 | # Download and parse the table from ECMWF 17 | print("Downloading N320 grid table from ECMWF...") 18 | url = "https://www.ecmwf.int/en/forecasts/documentation-and-support/gaussian_n320" 19 | response = requests.get(url) 20 | soup = BeautifulSoup(response.content, "html.parser") 21 | 22 | # Find and parse the table 23 | table = soup.find("table") 24 | rows = table.find_all("tr") 25 | 26 | data = [] 27 | for row in rows[1:]: # Skip header row 28 | cols = row.find_all("td") 29 | if len(cols) >= 5: 30 | nlon = int(cols[1].text.strip()) # Reduced Points (Standard) 31 | lat = float(cols[4].text.strip()) # Latitude 32 | data.append((lat, nlon)) 33 | 34 | print(f"Extracted {len(data)} rows from table") 35 | print(f"Total points: {sum(nlon for _, nlon in data)}") 36 | 37 | # Write to CSV file 38 | csv_path = "src/xpublish_tiles/testing/grids/n320_grid.csv" 39 | with open(csv_path, "w", newline="") as f: 40 | writer = csv.writer(f) 41 | writer.writerow(["latitude", "num_points"]) 42 | for lat, nlon in data: 43 | writer.writerow([lat, nlon]) 44 | 45 | print(f"Wrote {len(data)} rows to {csv_path}") 46 | -------------------------------------------------------------------------------- /src/xpublish_tiles/render/quiver.py: -------------------------------------------------------------------------------- 1 | from typing import TYPE_CHECKING 2 | 3 | from xpublish_tiles.render import Renderer, register_renderer 4 | 5 | if TYPE_CHECKING: 6 | from xpublish_tiles.types import RenderContext 7 | 8 | 9 | @register_renderer 10 | class QuiverRenderer(Renderer): 11 | def validate(self, contexts: dict[str, "RenderContext"]) -> None: 12 | assert len(contexts) in [2, 3] 13 | # assert we can find u,v 14 | 15 | def render( 16 | self, 17 | *, 18 | contexts: dict[str, "RenderContext"], 19 | buffer, 20 | width: int, 21 | height: int, 22 | variant: str, 23 | colorscalerange=None, 24 | format=None, 25 | context_logger=None, 26 | colormap: dict[str, str] | None = None, 27 | ) -> None: 28 | # Handle "default" alias 29 | if variant == "default": 30 | variant = self.default_variant() 31 | 32 | # look at CF metadata to find u, v 33 | pass 34 | 35 | @staticmethod 36 | def style_id() -> str: 37 | return "quiver" 38 | 39 | @staticmethod 40 | def supported_variants() -> list[str]: 41 | return ["arrows"] 42 | 43 | @staticmethod 44 | def default_variant() -> str: 45 | return "arrows" 46 | 47 | @classmethod 48 | def describe_style(cls, variant: str) -> dict[str, str]: 49 | return { 50 | "id": f"{cls.style_id()}/{variant}", 51 | "title": f"Quiver - {variant.title()}", 52 | "description": f"Vector field rendering using {variant} style", 53 | } 54 | -------------------------------------------------------------------------------- /tests/README.md: -------------------------------------------------------------------------------- 1 | # Tests 2 | 3 | ## test_arraylake.py 4 | 5 | Configurable test for creating sample datasets in different storage backends. 6 | 7 | ### Usage 8 | 9 | ```bash 10 | # Required arguments 11 | --where {local,arraylake} # Storage backend 12 | --setup # Enable dataset creation tests 13 | 14 | # Optional arguments 15 | --prefix PATH # Custom storage path (has defaults) 16 | ``` 17 | 18 | ### Storage Backends 19 | 20 | | Backend | Default Prefix | Description | 21 | |---------|----------------|-------------| 22 | | `local` | `/tmp/tiles-icechunk/` | Local filesystem using icechunk | 23 | | `arraylake` | `earthmover-integration/tiles-icechunk/` | Arraylake cloud storage | 24 | 25 | ### Examples 26 | 27 | ```bash 28 | # Create datasets locally (default prefix) 29 | uv run pytest tests/test_arraylake.py --where=local --setup 30 | 31 | # Create datasets in Arraylake (default prefix) 32 | uv run pytest tests/test_arraylake.py --where=arraylake --setup 33 | 34 | # Use custom prefix 35 | uv run pytest tests/test_arraylake.py --where=local --prefix=/tmp/my-data --setup 36 | 37 | # Skip setup tests (default behavior) 38 | uv run pytest tests/test_arraylake.py --where=local # All tests skipped 39 | ``` 40 | 41 | ### Datasets 42 | 43 | Creates 4 sample datasets with different characteristics: 44 | - `ifs` - IFS weather data (4D: time, step, lat, lon) 45 | - `sentinel2-nocoords` - Sentinel-2 imagery without coordinates (4D: time, lat, lon, band) 46 | - `helios` - Solar irradiance data (4D: time, lat, lon, band) 47 | - `para` - Land use classification (3D: x, y, time) 48 | -------------------------------------------------------------------------------- /tests/test_create_datasets.py: -------------------------------------------------------------------------------- 1 | import pytest 2 | 3 | from icechunk.xarray import to_icechunk 4 | from xpublish_tiles.testing.datasets import ( 5 | EU3035, 6 | EU3035_HIRES, 7 | GLOBAL_6KM, 8 | HRRR, 9 | IFS, 10 | PARA, 11 | PARA_HIRES, 12 | REDGAUSS_N320, 13 | SENTINEL2_NOCOORDS, 14 | UTM33S, 15 | UTM33S_HIRES, 16 | UTM50S_HIRES, 17 | Dataset, 18 | ) 19 | 20 | 21 | @pytest.fixture( 22 | params=[ 23 | pytest.param(IFS, id="ifs"), 24 | pytest.param(SENTINEL2_NOCOORDS, id="sentinel2-nocoords"), 25 | pytest.param(GLOBAL_6KM, id="global_6km"), 26 | pytest.param(PARA, id="para"), 27 | pytest.param(PARA_HIRES, id="para_hires"), 28 | pytest.param(HRRR, id="hrrr"), 29 | pytest.param(EU3035, id="eu3035"), 30 | pytest.param(EU3035_HIRES, id="eu3035_hires"), 31 | pytest.param(UTM33S, id="utm33s"), 32 | pytest.param(UTM33S_HIRES, id="utm33s_hires"), 33 | pytest.param(UTM50S_HIRES, id="utm50s_hires"), 34 | pytest.param(REDGAUSS_N320, id="redgauss_n320"), 35 | ] 36 | ) 37 | def dataset(request): 38 | return request.param 39 | 40 | 41 | # This test runs first when --setup is passed. The xdist_group ensures it completes 42 | # before other tests run in parallel. 43 | @pytest.mark.xdist_group(name="repo_creation") 44 | def test_create_local_dataset(dataset: Dataset, repo) -> None: 45 | ds = dataset.create() 46 | session = repo.writable_session("main") 47 | to_icechunk(ds, session, group=dataset.name, mode="w") 48 | session.commit(f"wrote {dataset.name!r}") 49 | -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | name: Build and Upload client to PyPI 2 | on: 3 | push: 4 | tags: 5 | - '*' 6 | workflow_dispatch: 7 | inputs: 8 | tag: 9 | type: string 10 | description: "Tag to release" 11 | required: true 12 | 13 | jobs: 14 | build-and-publish-pypi: 15 | runs-on: ubuntu-latest 16 | timeout-minutes: 10 17 | permissions: 18 | contents: read 19 | id-token: write 20 | steps: 21 | 22 | - name: set target 23 | id: set_target 24 | run: | 25 | if [[ "${{ github.event.inputs.tag }}" != "" ]] 26 | then 27 | echo "GITHUB_REF=${{ github.event.inputs.tag }}" >> $GITHUB_OUTPUT 28 | else 29 | echo "GITHUB_REF=${{ github.ref_name }}" >> $GITHUB_OUTPUT 30 | fi 31 | 32 | - uses: actions/checkout@v4 33 | with: 34 | ref: ${{steps.set_target.outputs.GITHUB_REF}} 35 | fetch-depth: 0 36 | - uses: actions/setup-python@v5 37 | name: Install Python 38 | with: 39 | python-version: "3.12" 40 | 41 | - name: Install pip and hatch 42 | run: | 43 | python -m pip install --upgrade pip && 44 | pip install hatch 45 | 46 | - name: Build tarball and wheels 47 | run: | 48 | # clean working directory 49 | git clean -xdf 50 | git restore -SW . 51 | 52 | # build and publish 53 | hatch build 54 | 55 | - name: Publish package distributions to PyPI 56 | uses: pypa/gh-action-pypi-publish@release/v1 57 | with: 58 | packages-dir: ./dist 59 | print-hash: true 60 | -------------------------------------------------------------------------------- /CLAUDE.md: -------------------------------------------------------------------------------- 1 | # xpublish-tiles 2 | 3 | ## Project Overview 4 | This project contains a set of web mapping plugins for Xpublish - a framework for serving xarray datasets via HTTP APIs. 5 | 6 | The goal of this project is to transform xarray datasets to raster, vector and other types of tiles, which can then be served via HTTP APIs. To do this, the package implements a set of xpublish plugins: 7 | * `xpublish_tiles.xpublish.tiles.TilesPlugin`: An [OGC Tiles](https://www.ogc.org/standards/ogcapi-tiles/) conformant plugin for serving raster, vector and other types of tiles. 8 | * `xpublish_tiles.xpublish.wms.WMSPlugin`: An [OGC Web Map Service](https://www.ogc.org/standards/wms/) conformant plugin for serving raster, vector and other types of tiles. 9 | 10 | ### Background Information 11 | 12 | The WMS and Tiles specifications are available in in the `docs` directory for reference. 13 | 14 | ## Development Workflow 15 | 16 | ### Key Commands 17 | - **Environment sync**: `uv sync --dev` 18 | - **Type check**: `uv run ty check src/ tests/` (only checks src/ and tests/ directories) 19 | - **Run unit tests**: `uv run pytest tests` (defaults to --where=local) 20 | - **Run tests with coverage**: `uv run pytest tests --cov=src/xpublish_tiles --cov-report=term-missing` 21 | - **Run pre-commit checks**: `pre-commit run --all-files` 22 | 23 | ### Dependency Groups 24 | - **dev**: All development dependencies (includes testing, linting, type checking, debugging) 25 | - **testing**: Testing-only dependencies (pytest, syrupy, hypothesis, matplotlib, etc.) 26 | 27 | # important-instruction-reminders 28 | Do what has been asked; nothing more, nothing less. 29 | NEVER create files unless they're absolutely necessary for achieving your goal. 30 | ALWAYS prefer editing an existing file to creating a new one. 31 | NEVER proactively create documentation files (*.md) or README files. Only create documentation files if explicitly requested by the User. 32 | ALWAYS run pre-commit checks before committing. 33 | ALWAYS put imports at the top of the file unless you need to avoid circular import issues. 34 | Do not add obvious or silly comments. Code should be self-explanatory. 35 | For pytest fixtures, prefer separate independent parametrized inputs over using itertools.product() for cleaner test combinations. 36 | Do not recreate snapshots by default. 37 | Do not add unnecessary comments. 38 | Add imports to the top of the file unless necessary to avoid circular imports. 39 | Never add try/except clauses that catch Exceptions in a test. 40 | Never remove test cases without confirming with me first. 41 | -------------------------------------------------------------------------------- /examples/maplibre/tilejson.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | TileJSON - xpublish-tiles 6 | 10 | 14 | 15 | 27 | 28 | 29 |
30 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /examples/maplibre/wms-tiled.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | WMS - xpublish-tiles 6 | 10 | 14 | 15 | 27 | 28 | 29 |
30 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /tests/test_lib.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import numpy as np 4 | import pyproj 5 | from hypothesis import given 6 | from hypothesis import strategies as st 7 | from hypothesis.extra import numpy as npst 8 | 9 | from xpublish_tiles.lib import epsg4326to3857 10 | 11 | 12 | @given( 13 | lon=npst.arrays( 14 | dtype=np.float64, 15 | shape=10, 16 | elements=st.floats( 17 | min_value=-180.0, max_value=360.0, allow_nan=False, allow_infinity=False 18 | ), 19 | ), 20 | lat=npst.arrays( 21 | dtype=np.float64, 22 | shape=10, 23 | elements=st.floats( 24 | min_value=-90.0, max_value=90.0, allow_nan=False, allow_infinity=False 25 | ), 26 | ), 27 | ) 28 | def test_epsg4326to3857_matches_pyproj(lon, lat): 29 | """Test that epsg4326to3857 matches pyproj's transformation.""" 30 | x_ours, y_ours = epsg4326to3857(lon, lat) 31 | transformer = pyproj.Transformer.from_crs("EPSG:4326", "EPSG:3857", always_xy=True) 32 | x_pyproj, y_pyproj = transformer.transform(lon, lat) 33 | np.testing.assert_allclose(x_ours, x_pyproj) 34 | np.testing.assert_allclose(y_ours, y_pyproj) 35 | 36 | 37 | def test_epsg4326to3857_handles_0_360_range(): 38 | """Test that epsg4326to3857 correctly handles 0-360 longitude range.""" 39 | # Test that our function matches pyproj's behavior for wrap-around values 40 | # Note: pyproj treats 180° and -180° as different points (opposite sides of the world) 41 | 42 | # Test wrap-around for values that should be equivalent after normalization 43 | lon_wrapped = np.array([270.0, 359.0, 361.0, -181.0]) 44 | lon_normal = np.array([-90.0, -1.0, 1.0, 179.0]) 45 | lat = np.array([30.0, 0.0, 0.0, 0.0]) 46 | 47 | # Transform both ranges 48 | x_wrapped, y_wrapped = epsg4326to3857(lon_wrapped, lat) 49 | x_normal, y_normal = epsg4326to3857(lon_normal, lat) 50 | 51 | # Results should be identical for wrapped values 52 | np.testing.assert_allclose(x_wrapped, x_normal) 53 | np.testing.assert_allclose(y_wrapped, y_normal) 54 | 55 | # Test edge case: longitude 359 should map to -1 56 | lon_edge = np.array([359.0, 1.0]) 57 | lat_edge = np.array([0.0, 0.0]) 58 | x_edge, _ = epsg4326to3857(lon_edge, lat_edge) 59 | 60 | # Compare with expected values from -1 and 1 degrees 61 | lon_expected = np.array([-1.0, 1.0]) 62 | x_expected, _ = epsg4326to3857(lon_expected, lat_edge) 63 | 64 | np.testing.assert_allclose(x_edge, x_expected) 65 | 66 | # Test that 180° and -180° are treated as different points (matching pyproj) 67 | lon_extremes = np.array([-180.0, 180.0]) 68 | lat_extremes = np.array([0.0, 0.0]) 69 | x_extremes, _ = epsg4326to3857(lon_extremes, lat_extremes) 70 | 71 | # These should be opposite values 72 | assert x_extremes[0] == -x_extremes[1], ( 73 | "180° and -180° should map to opposite X coordinates" 74 | ) 75 | -------------------------------------------------------------------------------- /tests/test_config.py: -------------------------------------------------------------------------------- 1 | """Test configuration management with donfig.""" 2 | 3 | import numpy as np 4 | 5 | import xarray as xr 6 | from xpublish_tiles.config import config 7 | from xpublish_tiles.lib import get_transform_chunk_size 8 | 9 | 10 | def test_default_config_values(): 11 | """Test that default configuration values are set correctly.""" 12 | assert config.get("num_threads") == 8 13 | assert config.get("transform_chunk_size") == 1024 14 | assert config.get("detect_approx_rectilinear") is True 15 | assert config.get("default_pad") == 2 16 | assert config.get("max_renderable_size") == 1024**3 17 | 18 | 19 | def test_config_with_context_manager(): 20 | """Test that configuration can be modified with context manager.""" 21 | # Check defaults 22 | assert config.get("num_threads") == 8 23 | assert config.get("transform_chunk_size") == 1024 24 | 25 | # Use context manager to temporarily change values 26 | with config.set(num_threads=16, transform_chunk_size=512): 27 | assert config.get("num_threads") == 16 28 | assert config.get("transform_chunk_size") == 512 29 | 30 | # Values should revert after context manager exits 31 | assert config.get("num_threads") == 8 32 | assert config.get("transform_chunk_size") == 1024 33 | 34 | 35 | def test_get_transform_chunk_size(): 36 | """Test that the dynamic config functions work correctly.""" 37 | # Test defaults 38 | da = xr.DataArray(np.ones((1024, 1024)), dims=("x", "y")) 39 | assert get_transform_chunk_size(da) == (1024, 1024) 40 | 41 | # Test with context manager 42 | with config.set(transform_chunk_size=256): 43 | assert get_transform_chunk_size(da) == (64, 1024) 44 | 45 | da = xr.DataArray(np.ones((2048, 2048)), dims=("x", "y")) 46 | assert get_transform_chunk_size(da) == (512, 2048) 47 | 48 | 49 | def test_detect_approx_rectilinear_config(): 50 | """Test that detect_approx_rectilinear configuration works correctly.""" 51 | # Check default is True 52 | assert config.get("detect_approx_rectilinear") is True 53 | 54 | # Test disabling approximate rectilinear detection 55 | with config.set(detect_approx_rectilinear=False): 56 | assert config.get("detect_approx_rectilinear") is False 57 | 58 | # Verify it reverts to True after context manager 59 | assert config.get("detect_approx_rectilinear") is True 60 | 61 | 62 | def test_max_renderable_size_config(): 63 | """Test that max_renderable_size configuration works correctly.""" 64 | # Check default value (10,000 * 10,000 pixels) 65 | assert config.get("max_renderable_size") == 1024**3 66 | 67 | # Test changing the value with context manager 68 | with config.set(max_renderable_size=50_000_000): 69 | assert config.get("max_renderable_size") == 50_000_000 70 | 71 | # Verify it reverts to default after context manager 72 | assert config.get("max_renderable_size") == 1024**3 73 | -------------------------------------------------------------------------------- /examples/maplibre/tiles-categorical.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | XYZ - xpublish-tiles 6 | 10 | 14 | 15 | 27 | 28 | 29 |
30 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /examples/maplibre/tiles-projected.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | XYZ - xpublish-tiles 6 | 10 | 14 | 15 | 27 | 28 | 29 |
30 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /tests/test_xpublish/test_tiles/test_tile_query.py: -------------------------------------------------------------------------------- 1 | """Tests for TileQuery model validation.""" 2 | 3 | from xpublish_tiles.types import ImageFormat 4 | from xpublish_tiles.xpublish.tiles.types import TileQuery 5 | 6 | 7 | class TestTileQueryColormap: 8 | """Test TileQuery model validation for colormap parameter.""" 9 | 10 | def test_tile_query_colormap_validation_valid(self): 11 | """Test that valid colormap input is accepted with raster/custom style.""" 12 | colormap = {"0": "#ffffff", "128": "#808080", "255": "#000000"} 13 | query = TileQuery( 14 | variables=["air"], 15 | colormap=colormap, 16 | width=256, 17 | height=256, 18 | colorscalerange=None, 19 | style="raster/custom", # type: ignore # Pydantic converts string to tuple 20 | f=ImageFormat.PNG, 21 | render_errors=False, 22 | ) 23 | assert query.colormap == colormap 24 | assert query.style == ("raster", "custom") 25 | 26 | def test_tile_query_colormap_validation_none(self): 27 | """Test that None colormap is handled correctly.""" 28 | query = TileQuery( 29 | variables=["air"], 30 | width=256, 31 | height=256, 32 | colorscalerange=None, 33 | style=None, 34 | colormap=None, 35 | f=ImageFormat.PNG, 36 | render_errors=False, 37 | ) 38 | assert query.colormap is None 39 | 40 | def test_tile_query_colormap_requires_custom_style(self): 41 | """Test that colormap requires raster/custom style.""" 42 | import pytest 43 | from pydantic import ValidationError 44 | 45 | colormap = {"0": "#ffffff", "255": "#000000"} 46 | 47 | # Test that raster/custom works 48 | query = TileQuery( 49 | variables=["air"], 50 | colormap=colormap, 51 | style="raster/custom", # type: ignore # Pydantic converts string to tuple 52 | width=256, 53 | height=256, 54 | colorscalerange=None, 55 | f=ImageFormat.PNG, 56 | render_errors=False, 57 | ) 58 | assert query.colormap == colormap 59 | assert query.style == ("raster", "custom") 60 | 61 | # Test that raster/default fails 62 | with pytest.raises(ValidationError, match="must be 'raster/custom'"): 63 | TileQuery( 64 | variables=["air"], 65 | colormap=colormap, 66 | style="raster/default", # type: ignore 67 | width=256, 68 | height=256, 69 | colorscalerange=None, 70 | f=ImageFormat.PNG, 71 | render_errors=False, 72 | ) 73 | 74 | # Test that raster/viridis fails 75 | with pytest.raises(ValidationError, match="must be 'raster/custom'"): 76 | TileQuery( 77 | variables=["air"], 78 | colormap=colormap, 79 | style="raster/viridis", # type: ignore 80 | width=256, 81 | height=256, 82 | colorscalerange=None, 83 | f=ImageFormat.PNG, 84 | render_errors=False, 85 | ) 86 | -------------------------------------------------------------------------------- /src/xpublish_tiles/utils.py: -------------------------------------------------------------------------------- 1 | import contextlib 2 | import functools 3 | import importlib.util 4 | import threading 5 | import time 6 | from typing import Any 7 | 8 | from xpublish_tiles.logger import log_duration, logger 9 | 10 | # Only use lock if tbb is not available 11 | HAS_TBB = importlib.util.find_spec("tbb") is not None 12 | NUMBA_THREADING_LOCK = contextlib.nullcontext() if HAS_TBB else threading.Lock() 13 | 14 | 15 | def lower_case_keys(d: Any) -> dict[str, Any]: 16 | """Convert keys to lowercase, handling both dict and QueryParams objects""" 17 | if hasattr(d, "items"): 18 | return {k.lower(): v for k, v in d.items()} 19 | else: 20 | # Handle other dict-like objects 21 | return {k.lower(): v for k, v in dict(d).items()} 22 | 23 | 24 | def time_debug(func): 25 | @functools.wraps(func) 26 | def wrapper(*args, **kwargs): 27 | bound_logger = kwargs.get("bound_logger") 28 | with log_duration(func.__name__, emoji="⏱️", logger=bound_logger): 29 | return func(*args, **kwargs) 30 | 31 | return wrapper 32 | 33 | 34 | def async_time_debug(func): 35 | @functools.wraps(func) 36 | async def wrapper(*args, **kwargs): 37 | bound_logger = kwargs.get("bound_logger") 38 | with log_duration(func.__name__, emoji="⏱️", logger=bound_logger): 39 | return await func(*args, **kwargs) 40 | 41 | return wrapper 42 | 43 | 44 | def normalize_longitude_deg(lon: float) -> float: 45 | """Normalize a longitude value to the [-180, 180] range. 46 | 47 | Examples: 48 | - 190 -> -170 49 | - 360 -> 0 50 | - -190 -> 170 51 | - 180, -180 remain unchanged 52 | """ 53 | # Use modulo arithmetic to wrap, then shift into [-180, 180] 54 | return ((float(lon) + 180.0) % 360.0) - 180.0 55 | 56 | 57 | def normalize_tilejson_bounds( 58 | bounds: list[float] | tuple[float, float, float, float], 59 | ) -> list[float]: 60 | """Normalize a TileJSON bounds array to use [-180, 180] longitudes. 61 | 62 | Input: [west, south, east, north] possibly with 0..360 longitudes. 63 | Output: [west, south, east, north] with longitudes in [-180, 180]. 64 | 65 | Special cases: 66 | - If the span is ~360° (full world), return [-180, 180] 67 | - If normalization yields west > east (dateline crossing), return [-180, 180] 68 | """ 69 | west0, south, east0, north = bounds # type: ignore[misc] 70 | 71 | # Full-world coverage in 0..360 representation 72 | if (float(east0) - float(west0)) >= 360.0 - 1e-6: 73 | return [-180.0, float(south), 180.0, float(north)] 74 | 75 | # Explicit 0..360 dateline-crossing case (east0 < west0) 76 | if float(east0) < float(west0): 77 | return [-180.0, float(south), 180.0, float(north)] 78 | 79 | w = normalize_longitude_deg(west0) 80 | e = normalize_longitude_deg(east0) 81 | 82 | if w > e: 83 | # Dateline-crossing case cannot be represented as a single [w,e] in TileJSON 84 | # Use full extent to signal global coverage 85 | w, e = -180.0, 180.0 86 | 87 | return [w, float(south), e, float(north)] 88 | 89 | 90 | @contextlib.contextmanager 91 | def time_operation(message: str = "Operation"): 92 | """Context manager for timing operations with custom messages.""" 93 | start_time = time.perf_counter() 94 | yield 95 | end_time = time.perf_counter() 96 | perf_time = (end_time - start_time) * 1000 97 | logger.debug(f"{message}: {perf_time:.2f} ms") 98 | 99 | 100 | @contextlib.asynccontextmanager 101 | async def async_time_operation(message: str = "Async Operation"): 102 | """Async context manager for timing operations with custom messages.""" 103 | start_time = time.perf_counter() 104 | yield 105 | end_time = time.perf_counter() 106 | perf_time = (end_time - start_time) * 1000 107 | logger.debug(f"{message}: {perf_time:.2f} ms") 108 | -------------------------------------------------------------------------------- /tests/test_xpublish/test_wms/test_wms_query.py: -------------------------------------------------------------------------------- 1 | import pytest 2 | 3 | from xpublish_tiles.types import ImageFormat 4 | from xpublish_tiles.xpublish.wms.types import ( 5 | WMSGetCapabilitiesQuery, 6 | WMSGetFeatureInfoQuery, 7 | WMSGetLegendGraphicQuery, 8 | WMSGetMapQuery, 9 | WMSQuery, 10 | ) 11 | 12 | 13 | def test_wms_query_discriminator(): 14 | WMSGetCapabilitiesQuery(service="WMS", version="1.3.0", request="GetCapabilities") 15 | 16 | getcaps_query = WMSQuery( 17 | service="WMS", 18 | version="1.3.0", 19 | request="GetCapabilities", 20 | ) 21 | assert isinstance(getcaps_query.root, WMSGetCapabilitiesQuery) 22 | 23 | getmap_query = WMSQuery( 24 | service="WMS", 25 | version="1.3.0", 26 | request="GetMap", 27 | layers="layer1", 28 | styles="raster/magma", 29 | crs="EPSG:3857", 30 | bbox="0,0,1,1", 31 | width=100, 32 | height=100, 33 | colorscalerange="0,100", 34 | ) 35 | assert isinstance(getmap_query.root, WMSGetMapQuery) 36 | assert getmap_query.root.colorscalerange == (0, 100) 37 | assert getmap_query.root.styles == ("raster", "magma") 38 | assert getmap_query.root.crs.to_epsg() == 3857 39 | assert getmap_query.root.format == ImageFormat.PNG 40 | 41 | getmap_query_autoscale = WMSQuery( 42 | service="WMS", 43 | version="1.3.0", 44 | request="GetMap", 45 | layers="layer1", 46 | styles="raster/default", 47 | crs="EPSG:3857", 48 | bbox="0,0,1,1", 49 | width=100, 50 | height=100, 51 | ) 52 | assert isinstance(getmap_query_autoscale.root, WMSGetMapQuery) 53 | assert getmap_query_autoscale.root.colorscalerange is None 54 | assert getmap_query_autoscale.root.format == ImageFormat.PNG 55 | 56 | # Fail because colorscalerange is invalid 57 | with pytest.raises( 58 | ValueError, 59 | match="colorscalerange must be in the format 'min,max'", 60 | ): 61 | WMSQuery( 62 | service="WMS", 63 | version="1.3.0", 64 | request="GetMap", 65 | layers="layer1", 66 | styles="raster/default", 67 | crs="EPSG:3857", 68 | bbox="0,0,1,1", 69 | width=100, 70 | height=100, 71 | colorscalerange="0", 72 | ) 73 | 74 | # Fail because bbox is not valid 75 | with pytest.raises( 76 | ValueError, 77 | match="bbox must be in the format 'minx,miny,maxx,maxy'", 78 | ): 79 | WMSQuery( 80 | service="WMS", 81 | version="1.3.0", 82 | request="GetMap", 83 | layers="layer1", 84 | styles="raster/default", 85 | crs="EPSG:3857", 86 | bbox="0,0,1", 87 | width=100, 88 | height=100, 89 | colorscalerange="0,100", 90 | ) 91 | 92 | getfeatureinfo_query = WMSQuery( 93 | service="WMS", 94 | version="1.3.0", 95 | request="GetFeatureInfo", 96 | query_layers="layer1", 97 | time="2020-01-01", 98 | elevation="100", 99 | crs="EPSG:4326", 100 | bbox="0,0,1,1", 101 | width=100, 102 | height=100, 103 | x=50, 104 | y=50, 105 | ) 106 | assert isinstance(getfeatureinfo_query.root, WMSGetFeatureInfoQuery) 107 | assert getfeatureinfo_query.root.crs.to_epsg() == 4326 108 | 109 | getlegendgraphic_query = WMSQuery( 110 | service="WMS", 111 | version="1.3.0", 112 | request="GetLegendGraphic", 113 | layer="layer1", 114 | width=100, 115 | height=100, 116 | vertical=True, 117 | colorscalerange="0,100", 118 | styles="raster/default", 119 | ) 120 | assert isinstance(getlegendgraphic_query.root, WMSGetLegendGraphicQuery) 121 | -------------------------------------------------------------------------------- /examples/maplibre/tiles.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | XYZ - xpublish-tiles 6 | 10 | 14 | 15 | 45 | 46 | 47 |
48 |
49 | 50 |
51 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /src/xpublish_tiles/render/__init__.py: -------------------------------------------------------------------------------- 1 | import io 2 | from abc import ABC, abstractmethod 3 | from numbers import Number 4 | from typing import TYPE_CHECKING 5 | 6 | from PIL import Image, ImageDraw 7 | 8 | from xpublish_tiles.types import ImageFormat 9 | 10 | if TYPE_CHECKING: 11 | from xpublish_tiles.types import RenderContext 12 | 13 | 14 | def render_error_image( 15 | message: str, *, width: int, height: int, format: ImageFormat 16 | ) -> io.BytesIO: 17 | """Render an error message as an image tile.""" 18 | buffer = io.BytesIO() 19 | img = Image.new("RGBA", (width, height), (255, 0, 0, 255)) 20 | draw = ImageDraw.Draw(img) 21 | draw.text((10, 10), message, fill=(255, 255, 255, 255)) 22 | img.save(buffer, format=format) 23 | buffer.seek(0) 24 | return buffer 25 | 26 | 27 | class RenderRegistry: 28 | """Registry for renderer classes.""" 29 | 30 | _renderers: dict[str, type["Renderer"]] = {} 31 | _loaded: bool = False 32 | 33 | @classmethod 34 | def _load_entry_points(cls) -> None: 35 | """Load renderers from entry points.""" 36 | if cls._loaded: 37 | return 38 | 39 | from importlib.metadata import entry_points 40 | 41 | eps = entry_points(group="xpublish_tiles.renderers") 42 | for ep in eps: 43 | renderer_cls = ep.load() 44 | cls.register(renderer_cls) 45 | 46 | cls._loaded = True 47 | 48 | @classmethod 49 | def register(cls, renderer_cls: type["Renderer"]) -> None: 50 | """Register a renderer class.""" 51 | style_id = renderer_cls.style_id() 52 | cls._renderers[style_id] = renderer_cls 53 | 54 | @classmethod 55 | def get(cls, style_id: str) -> type["Renderer"]: 56 | """Get a renderer class by style ID.""" 57 | cls._load_entry_points() 58 | if style_id not in cls._renderers: 59 | raise ValueError(f"Unknown style: {style_id}") 60 | return cls._renderers[style_id] 61 | 62 | @classmethod 63 | def all(cls) -> dict[str, type["Renderer"]]: 64 | """Get all registered renderers.""" 65 | cls._load_entry_points() 66 | return cls._renderers.copy() 67 | 68 | 69 | def register_renderer(cls: type["Renderer"]) -> type["Renderer"]: 70 | """Decorator to register a renderer class.""" 71 | RenderRegistry.register(cls) 72 | return cls 73 | 74 | 75 | class Renderer(ABC): 76 | @abstractmethod 77 | def render( 78 | self, 79 | *, 80 | contexts: dict[str, "RenderContext"], 81 | buffer: io.BytesIO, 82 | width: int, 83 | height: int, 84 | variant: str, 85 | colorscalerange: tuple[Number, Number] | None = None, 86 | format: ImageFormat = ImageFormat.PNG, 87 | context_logger=None, 88 | colormap: dict[str, str] | None = None, 89 | ): 90 | pass 91 | 92 | @abstractmethod 93 | def render_error( 94 | self, 95 | *, 96 | buffer: io.BytesIO, 97 | width: int, 98 | height: int, 99 | message: str, 100 | format: ImageFormat = ImageFormat.PNG, 101 | cmap: str = "", 102 | colorscalerange: tuple[Number, Number] | None = None, 103 | **kwargs, 104 | ): 105 | """Render an error tile with the given message.""" 106 | pass 107 | 108 | @staticmethod 109 | def style_id() -> str: 110 | """Return the style identifier for this renderer.""" 111 | raise NotImplementedError 112 | 113 | @staticmethod 114 | def supported_variants() -> list[str]: 115 | """Return supported variants for this renderer.""" 116 | raise NotImplementedError 117 | 118 | @staticmethod 119 | def default_variant() -> str: 120 | """Return the default variant name.""" 121 | raise NotImplementedError 122 | 123 | @classmethod 124 | def describe_style(cls, variant: str) -> dict[str, str]: 125 | """Return metadata for a style/variant combination.""" 126 | return { 127 | "id": f"{cls.style_id()}/{variant}", 128 | "title": f"{cls.style_id().title()} - {variant.title()}", 129 | "description": f"{cls.style_id().title()} rendering using {variant}", 130 | } 131 | -------------------------------------------------------------------------------- /tests/test_xpublish/test_wms/test_wms_attributes.py: -------------------------------------------------------------------------------- 1 | """Tests for custom attributes from datasets in WMS metadata""" 2 | 3 | import numpy as np 4 | 5 | import xarray as xr 6 | 7 | 8 | def test_wms_convert_attributes_to_wms(): 9 | """Test conversion of attributes to WMS format""" 10 | from xpublish_tiles.xpublish.wms.utils import convert_attributes_to_wms 11 | 12 | attrs = { 13 | "title": "Test Dataset", 14 | "version": 1.2, 15 | "active": True, 16 | "keywords": ["weather", "temperature"], 17 | "complex_obj": {"nested": "value"}, 18 | } 19 | 20 | wms_attrs = convert_attributes_to_wms(attrs) 21 | 22 | # Should have one WMS attribute for each input attribute 23 | assert len(wms_attrs) == 5 24 | 25 | # Find attributes by name 26 | attr_dict = {attr.name: attr.value for attr in wms_attrs} 27 | 28 | assert attr_dict["title"] == "Test Dataset" 29 | assert attr_dict["version"] == "1.2" 30 | assert attr_dict["active"] == "true" # Boolean converted to lowercase string 31 | assert ( 32 | attr_dict["keywords"] == "weather, temperature" 33 | ) # List converted to comma-separated 34 | assert "nested" in attr_dict["complex_obj"] # Complex object converted to string 35 | 36 | 37 | def test_wms_layers_include_attributes(): 38 | """Test that WMS layers include variable attributes""" 39 | from xpublish_tiles.xpublish.wms.utils import extract_layers 40 | 41 | # Create dataset with attributes 42 | dataset = xr.Dataset( 43 | { 44 | "temperature": xr.DataArray( 45 | np.random.randn(5, 10), 46 | dims=["lat", "lon"], 47 | coords={ 48 | "lat": ( 49 | ["lat"], 50 | np.linspace(-2, 2, 5), 51 | {"axis": "Y", "standard_name": "latitude"}, 52 | ), 53 | "lon": ( 54 | ["lon"], 55 | np.linspace(-5, 5, 10), 56 | {"axis": "X", "standard_name": "longitude"}, 57 | ), 58 | }, 59 | attrs={ 60 | "long_name": "Air Temperature", 61 | "units": "celsius", 62 | "valid_min": -50, 63 | "valid_max": 50, 64 | }, 65 | ) 66 | } 67 | ) 68 | 69 | layers = extract_layers(dataset, "http://example.com") 70 | 71 | # Should have one layer 72 | assert len(layers) == 1 73 | 74 | layer = layers[0] 75 | assert layer.name == "temperature" 76 | 77 | # Check that attributes are present 78 | assert len(layer.attributes) > 0 79 | 80 | # Convert to dict for easier checking 81 | attr_dict = {attr.name: attr.value for attr in layer.attributes} 82 | 83 | assert attr_dict["long_name"] == "Air Temperature" 84 | assert attr_dict["units"] == "celsius" 85 | assert attr_dict["valid_min"] == "-50" 86 | assert attr_dict["valid_max"] == "50" 87 | 88 | 89 | def test_wms_capabilities_include_dataset_attributes(): 90 | """Test that WMS capabilities include dataset attributes in root layer""" 91 | from xpublish_tiles.xpublish.wms.utils import create_capabilities_response 92 | 93 | # Create dataset with attributes 94 | dataset = xr.Dataset( 95 | { 96 | "temperature": xr.DataArray( 97 | np.random.randn(5, 10), 98 | dims=["lat", "lon"], 99 | coords={ 100 | "lat": ( 101 | ["lat"], 102 | np.linspace(-2, 2, 5), 103 | {"axis": "Y", "standard_name": "latitude"}, 104 | ), 105 | "lon": ( 106 | ["lon"], 107 | np.linspace(-5, 5, 10), 108 | {"axis": "X", "standard_name": "longitude"}, 109 | ), 110 | }, 111 | attrs={"long_name": "Air Temperature"}, 112 | ) 113 | }, 114 | attrs={ 115 | "title": "Weather Dataset", 116 | "institution": "Test Institution", 117 | "source": "Model run", 118 | }, 119 | ) 120 | 121 | capabilities = create_capabilities_response(dataset, "http://example.com") 122 | 123 | # Check that root layer has dataset attributes 124 | root_layer = capabilities.capability.layer 125 | assert len(root_layer.attributes) > 0 126 | 127 | # Convert to dict for easier checking 128 | attr_dict = {attr.name: attr.value for attr in root_layer.attributes} 129 | 130 | assert attr_dict["title"] == "Weather Dataset" 131 | assert attr_dict["institution"] == "Test Institution" 132 | assert attr_dict["source"] == "Model run" 133 | -------------------------------------------------------------------------------- /src/xpublish_tiles/tiles_lib.py: -------------------------------------------------------------------------------- 1 | """Tile-related utility functions for grids.""" 2 | 3 | import morecantile 4 | import numpy as np 5 | from pyproj import CRS 6 | from pyproj.aoi import BBox 7 | 8 | import xarray as xr 9 | from xpublish_tiles.grids import GridSystem, Triangular 10 | from xpublish_tiles.lib import transformer_from_crs 11 | from xpublish_tiles.utils import time_debug 12 | 13 | 14 | @time_debug 15 | def get_max_zoom(grid: GridSystem, tms: morecantile.TileMatrixSet) -> int: 16 | """Calculate maximum zoom level based on grid spacing and TMS. 17 | 18 | Takes the lower left corner of the grid bounding box, adds the minimum 19 | grid spacing (dXmin, dYmin), transforms the resulting box to the TMS CRS, 20 | and calculates the appropriate zoom level using tms.zoom_for_res(). 21 | 22 | Parameters 23 | ---------- 24 | grid : Grid 25 | The grid to calculate zoom for 26 | tms : morecantile.TileMatrixSet 27 | The tile matrix set to calculate zoom for 28 | 29 | Returns 30 | ------- 31 | int 32 | Maximum appropriate zoom level for this grid 33 | """ 34 | if isinstance(grid, Triangular): 35 | # no dXmin, dYmin defined, punt for now 36 | return tms.maxzoom 37 | ll_box = BBox( 38 | west=grid.bbox.west, 39 | south=grid.bbox.south, 40 | east=grid.bbox.west + grid.dXmin, 41 | north=grid.bbox.south + grid.dYmin, 42 | ) 43 | 44 | tms_crs = CRS.from_wkt(tms.crs.to_wkt()) 45 | transformer = transformer_from_crs(grid.crs, tms_crs) 46 | 47 | west_coords = [ll_box.west, ll_box.east, ll_box.west, ll_box.east] 48 | south_coords = [ll_box.south, ll_box.south, ll_box.north, ll_box.north] 49 | 50 | x_transformed, y_transformed = transformer.transform(west_coords, south_coords) 51 | dx_transformed = np.max(x_transformed) - np.min(x_transformed) 52 | dy_transformed = np.max(y_transformed) - np.min(y_transformed) 53 | 54 | min_spacing = min(dx_transformed, dy_transformed) 55 | zoom = tms.zoom_for_res(min_spacing, zoom_level_strategy="upper") 56 | return zoom 57 | 58 | 59 | @time_debug 60 | def get_min_zoom( 61 | grid: GridSystem, tms: morecantile.TileMatrixSet, da: xr.DataArray 62 | ) -> int: 63 | """Calculate minimum zoom level that avoids TileTooBigError. 64 | 65 | This method finds the zoom level below which no tile would trigger 66 | the TileTooBigError check in apply_slicers. 67 | 68 | Parameters 69 | ---------- 70 | grid : Grid 71 | The grid to calculate zoom for 72 | tms : morecantile.TileMatrixSet 73 | The tile matrix set to calculate zoom for 74 | da : xr.DataArray 75 | Data array (only metadata used, no data loaded). 76 | Required since we use `Grid.sel`. 77 | 78 | Returns 79 | ------- 80 | int 81 | Minimum safe zoom level for this grid and data 82 | """ 83 | from xpublish_tiles.pipeline import check_data_is_renderable_size 84 | 85 | tms_crs = CRS.from_wkt(tms.crs.to_wkt()) 86 | 87 | tms_to_wgs84 = transformer_from_crs(tms_crs, 4326) 88 | tms_xy_bounds = tms.xy_bbox 89 | geo_left, geo_bottom, geo_right, geo_top = tms_to_wgs84.transform_bounds( 90 | tms_xy_bounds.left, 91 | tms_xy_bounds.bottom, 92 | tms_xy_bounds.right, 93 | tms_xy_bounds.top, 94 | ) 95 | tms_geo_bounds = morecantile.BoundingBox( 96 | left=geo_left, bottom=geo_bottom, right=geo_right, top=geo_top 97 | ) 98 | 99 | grid_to_wgs84 = transformer_from_crs(grid.crs, 4326) 100 | 101 | bbox_lons = [grid.bbox.west, grid.bbox.east, grid.bbox.west, grid.bbox.east] 102 | bbox_lats = [grid.bbox.south, grid.bbox.south, grid.bbox.north, grid.bbox.north] 103 | wgs84_lons, wgs84_lats = grid_to_wgs84.transform(bbox_lons, bbox_lats) 104 | 105 | wgs84_west, wgs84_east = min(wgs84_lons), max(wgs84_lons) 106 | wgs84_south, wgs84_north = min(wgs84_lats), max(wgs84_lats) 107 | 108 | west = max(wgs84_west, tms_geo_bounds.left) 109 | east = min(wgs84_east, tms_geo_bounds.right) 110 | south = max(wgs84_south, tms_geo_bounds.bottom) 111 | north = min(wgs84_north, tms_geo_bounds.top) 112 | 113 | test_points = [ 114 | (west, south), 115 | (east, south), 116 | (west, north), 117 | (east, north), 118 | ((west + east) / 2, (south + north) / 2), 119 | ] 120 | 121 | alternate = grid.pick_alternate_grid(tms_crs, coarsen_factors={}) 122 | transformer = transformer_from_crs(tms_crs, grid.crs) 123 | 124 | for zoom in range(tms.minzoom, tms.maxzoom + 1): 125 | all_tiles_renderable = True 126 | 127 | for lon, lat in test_points: 128 | tile = tms.tile(lon, lat, zoom) 129 | bounds = tms.xy_bounds(tile) 130 | left, bottom, right, top = transformer.transform_bounds( 131 | bounds.left, bounds.bottom, bounds.right, bounds.top 132 | ) 133 | 134 | tile_bbox = BBox(west=left, south=bottom, east=right, north=top) 135 | slicers = grid.sel(bbox=tile_bbox) 136 | 137 | if not check_data_is_renderable_size(slicers, da, grid, alternate): 138 | all_tiles_renderable = False 139 | break 140 | 141 | if all_tiles_renderable: 142 | return zoom 143 | 144 | return tms.minzoom 145 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[codz] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | share/python-wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | MANIFEST 28 | 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | 39 | # Unit test / coverage reports 40 | htmlcov/ 41 | .tox/ 42 | .nox/ 43 | .coverage 44 | .coverage.* 45 | .cache 46 | nosetests.xml 47 | coverage.xml 48 | *.cover 49 | *.py.cover 50 | .hypothesis/ 51 | .pytest_cache/ 52 | cover/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | .pybuilder/ 76 | target/ 77 | 78 | # Jupyter Notebook 79 | .ipynb_checkpoints 80 | 81 | # IPython 82 | profile_default/ 83 | ipython_config.py 84 | 85 | # pyenv 86 | # For a library or package, you might want to ignore these files since the code is 87 | # intended to run in multiple environments; otherwise, check them in: 88 | # .python-version 89 | 90 | # pipenv 91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 94 | # install all needed dependencies. 95 | #Pipfile.lock 96 | 97 | # UV 98 | # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control. 99 | # This is especially recommended for binary packages to ensure reproducibility, and is more 100 | # commonly ignored for libraries. 101 | #uv.lock 102 | 103 | # poetry 104 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. 105 | # This is especially recommended for binary packages to ensure reproducibility, and is more 106 | # commonly ignored for libraries. 107 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control 108 | #poetry.lock 109 | #poetry.toml 110 | 111 | # pdm 112 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. 113 | # pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python. 114 | # https://pdm-project.org/en/latest/usage/project/#working-with-version-control 115 | #pdm.lock 116 | #pdm.toml 117 | .pdm-python 118 | .pdm-build/ 119 | 120 | # pixi 121 | # Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control. 122 | #pixi.lock 123 | # Pixi creates a virtual environment in the .pixi directory, just like venv module creates one 124 | # in the .venv directory. It is recommended not to include this directory in version control. 125 | .pixi 126 | 127 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm 128 | __pypackages__/ 129 | 130 | # Celery stuff 131 | celerybeat-schedule 132 | celerybeat.pid 133 | 134 | # SageMath parsed files 135 | *.sage.py 136 | 137 | # Environments 138 | .env 139 | .envrc 140 | .venv 141 | env/ 142 | venv/ 143 | ENV/ 144 | env.bak/ 145 | venv.bak/ 146 | 147 | # Spyder project settings 148 | .spyderproject 149 | .spyproject 150 | 151 | # Rope project settings 152 | .ropeproject 153 | 154 | # mkdocs documentation 155 | /site 156 | 157 | # mypy 158 | .mypy_cache/ 159 | .dmypy.json 160 | dmypy.json 161 | 162 | # Pyre type checker 163 | .pyre/ 164 | 165 | # pytype static type analyzer 166 | .pytype/ 167 | 168 | # Cython debug symbols 169 | cython_debug/ 170 | 171 | # PyCharm 172 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can 173 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore 174 | # and can be added to the global gitignore or merged into this file. For a more nuclear 175 | # option (not recommended) you can uncomment the following to ignore the entire idea folder. 176 | #.idea/ 177 | 178 | # Abstra 179 | # Abstra is an AI-powered process automation framework. 180 | # Ignore directories containing user credentials, local state, and settings. 181 | # Learn more at https://abstra.io/docs 182 | .abstra/ 183 | 184 | # Visual Studio Code 185 | # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore 186 | # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore 187 | # and can be added to the global gitignore or merged into this file. However, if you prefer, 188 | # you could uncomment the following to ignore the entire vscode folder 189 | # .vscode/ 190 | 191 | # Ruff stuff: 192 | .ruff_cache/ 193 | 194 | # PyPI configuration file 195 | .pypirc 196 | 197 | # Cursor 198 | # Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to 199 | # exclude from AI features like autocomplete and code analysis. Recommended for sensitive data 200 | # refer to https://docs.cursor.com/context/ignore-files 201 | .cursorignore 202 | .cursorindexingignore 203 | 204 | # Marimo 205 | marimo/_static/ 206 | marimo/_lsp/ 207 | __marimo__/ 208 | 209 | *.DS_Store 210 | 211 | # Version file 212 | src/xpublish_tiles/_version.py 213 | --------------------------------------------------------------------------------