Skip to content

Commit 8f1bf24

Browse files
author
Quarto GHA Workflow Runner
committed
Built site for gh-pages
1 parent e3b7c5a commit 8f1bf24

File tree

5 files changed

+60
-38
lines changed

5 files changed

+60
-38
lines changed

.nojekyll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
64ee5149
1+
81a7045a

examples/05_WIP_multiscales_as_customTMS_ZarrV2.html

Lines changed: 44 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,11 @@ <h2 class="anchored" data-anchor-id="load-example-dataset-from-netcdf-into-xarra
145145
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a><span class="im">import</span> pyproj</span>
146146
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a><span class="im">import</span> rioxarray <span class="co"># noqa</span></span>
147147
<span id="cb1-5"><a href="#cb1-5" aria-hidden="true" tabindex="-1"></a><span class="im">import</span> xarray <span class="im">as</span> xr</span>
148-
<span id="cb1-6"><a href="#cb1-6" aria-hidden="true" tabindex="-1"></a></span>
149-
<span id="cb1-7"><a href="#cb1-7" aria-hidden="true" tabindex="-1"></a><span class="co"># For zarr_format=2 encoding</span></span>
150-
<span id="cb1-8"><a href="#cb1-8" aria-hidden="true" tabindex="-1"></a><span class="im">from</span> rio_tiler.io.xarray <span class="im">import</span> XarrayReader</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
148+
<span id="cb1-6"><a href="#cb1-6" aria-hidden="true" tabindex="-1"></a><span class="im">from</span> matplotlib <span class="im">import</span> pyplot <span class="im">as</span> plt</span>
149+
<span id="cb1-7"><a href="#cb1-7" aria-hidden="true" tabindex="-1"></a><span class="im">from</span> rasterio.rio.overview <span class="im">import</span> get_maximum_overview_level</span>
150+
<span id="cb1-8"><a href="#cb1-8" aria-hidden="true" tabindex="-1"></a></span>
151+
<span id="cb1-9"><a href="#cb1-9" aria-hidden="true" tabindex="-1"></a><span class="co"># For zarr_format=2 encoding</span></span>
152+
<span id="cb1-10"><a href="#cb1-10" aria-hidden="true" tabindex="-1"></a><span class="im">from</span> rio_tiler.io.xarray <span class="im">import</span> XarrayReader</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
151153
</div>
152154
<div id="cell-4" class="cell" data-execution_count="2">
153155
<div class="sourceCode cell-code" id="cb2"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a>fp_base <span class="op">=</span> <span class="st">"20020601090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1"</span></span>
@@ -193,27 +195,47 @@ <h2 class="anchored" data-anchor-id="assign-crs-information-to-an-auxiliary-vari
193195
<span id="cb7-4"><a href="#cb7-4" aria-hidden="true" tabindex="-1"></a> ds[var].attrs[<span class="st">"grid_mapping"</span>] <span class="op">=</span> <span class="st">"spatial_ref"</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
194196
</div>
195197
</section>
196-
<section id="wip-define-a-custom-tms" class="level2">
197-
<h2 class="anchored" data-anchor-id="wip-define-a-custom-tms">WIP: Define a custom TMS</h2>
198-
<div id="cell-13" class="cell">
199-
<div class="sourceCode cell-code" id="cb8"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a><span class="cf">with</span> XarrayReader(ds[var]) <span class="im">as</span> dst_wmq:</span>
200-
<span id="cb8-2"><a href="#cb8-2" aria-hidden="true" tabindex="-1"></a> pyproj_crs <span class="op">=</span> pyproj.CRS.from_wkt(dst_wmq.crs.to_wkt())</span>
201-
<span id="cb8-3"><a href="#cb8-3" aria-hidden="true" tabindex="-1"></a> <span class="bu">print</span>(<span class="ss">f"crs: </span><span class="sc">{</span>pyproj_crs<span class="sc">}</span><span class="ss">"</span>)</span>
202-
<span id="cb8-4"><a href="#cb8-4" aria-hidden="true" tabindex="-1"></a> bounds <span class="op">=</span> dst_wmq.bounds</span>
203-
<span id="cb8-5"><a href="#cb8-5" aria-hidden="true" tabindex="-1"></a> <span class="bu">print</span>(<span class="ss">f"bounds: </span><span class="sc">{</span>bounds<span class="sc">}</span><span class="ss">"</span>)</span>
204-
<span id="cb8-6"><a href="#cb8-6" aria-hidden="true" tabindex="-1"></a> custom_tms <span class="op">=</span> morecantile.TileMatrixSet.custom(</span>
205-
<span id="cb8-7"><a href="#cb8-7" aria-hidden="true" tabindex="-1"></a> extent<span class="op">=</span>bounds,</span>
206-
<span id="cb8-8"><a href="#cb8-8" aria-hidden="true" tabindex="-1"></a> crs<span class="op">=</span>pyproj_crs,</span>
207-
<span id="cb8-9"><a href="#cb8-9" aria-hidden="true" tabindex="-1"></a> tile_width<span class="op">=</span>ds[var].shape[<span class="dv">2</span>],</span>
208-
<span id="cb8-10"><a href="#cb8-10" aria-hidden="true" tabindex="-1"></a> tile_height<span class="op">=</span>ds[var].shape[<span class="dv">1</span>],</span>
209-
<span id="cb8-11"><a href="#cb8-11" aria-hidden="true" tabindex="-1"></a> minzoom<span class="op">=</span><span class="dv">0</span>,</span>
210-
<span id="cb8-12"><a href="#cb8-12" aria-hidden="true" tabindex="-1"></a> maxzoom<span class="op">=</span><span class="dv">0</span>,</span>
211-
<span id="cb8-13"><a href="#cb8-13" aria-hidden="true" tabindex="-1"></a> )</span>
212-
<span id="cb8-14"><a href="#cb8-14" aria-hidden="true" tabindex="-1"></a> <span class="bu">print</span>(custom_tms.bounds(<span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>))</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
198+
<section id="define-a-custom-tms" class="level2">
199+
<h2 class="anchored" data-anchor-id="define-a-custom-tms">Define a custom TMS</h2>
200+
<div id="cell-13" class="cell" data-execution_count="7">
201+
<div class="sourceCode cell-code" id="cb8"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a>x_chunk_size <span class="op">=</span> <span class="dv">512</span></span>
202+
<span id="cb8-2"><a href="#cb8-2" aria-hidden="true" tabindex="-1"></a>y_chunk_size <span class="op">=</span> <span class="dv">512</span></span>
203+
<span id="cb8-3"><a href="#cb8-3" aria-hidden="true" tabindex="-1"></a></span>
204+
<span id="cb8-4"><a href="#cb8-4" aria-hidden="true" tabindex="-1"></a><span class="cf">with</span> XarrayReader(ds[var]) <span class="im">as</span> dst_wmq:</span>
205+
<span id="cb8-5"><a href="#cb8-5" aria-hidden="true" tabindex="-1"></a> pyproj_crs <span class="op">=</span> pyproj.CRS.from_wkt(dst_wmq.crs.to_wkt())</span>
206+
<span id="cb8-6"><a href="#cb8-6" aria-hidden="true" tabindex="-1"></a> <span class="bu">print</span>(<span class="ss">f"crs: </span><span class="sc">{</span>pyproj_crs<span class="sc">}</span><span class="ss">"</span>)</span>
207+
<span id="cb8-7"><a href="#cb8-7" aria-hidden="true" tabindex="-1"></a> bounds <span class="op">=</span> dst_wmq.bounds</span>
208+
<span id="cb8-8"><a href="#cb8-8" aria-hidden="true" tabindex="-1"></a> <span class="bu">print</span>(<span class="ss">f"bounds: </span><span class="sc">{</span>bounds<span class="sc">}</span><span class="ss">"</span>)</span>
209+
<span id="cb8-9"><a href="#cb8-9" aria-hidden="true" tabindex="-1"></a></span>
210+
<span id="cb8-10"><a href="#cb8-10" aria-hidden="true" tabindex="-1"></a> maxzoom <span class="op">=</span> get_maximum_overview_level(</span>
211+
<span id="cb8-11"><a href="#cb8-11" aria-hidden="true" tabindex="-1"></a> ds[var].shape[<span class="dv">2</span>], ds[var].shape[<span class="dv">1</span>], minsize<span class="op">=</span><span class="bu">min</span>(x_chunk_size, y_chunk_size)</span>
212+
<span id="cb8-12"><a href="#cb8-12" aria-hidden="true" tabindex="-1"></a> )</span>
213+
<span id="cb8-13"><a href="#cb8-13" aria-hidden="true" tabindex="-1"></a></span>
214+
<span id="cb8-14"><a href="#cb8-14" aria-hidden="true" tabindex="-1"></a> custom_tms <span class="op">=</span> morecantile.TileMatrixSet.custom(</span>
215+
<span id="cb8-15"><a href="#cb8-15" aria-hidden="true" tabindex="-1"></a> extent<span class="op">=</span>bounds,</span>
216+
<span id="cb8-16"><a href="#cb8-16" aria-hidden="true" tabindex="-1"></a> crs<span class="op">=</span>pyproj_crs,</span>
217+
<span id="cb8-17"><a href="#cb8-17" aria-hidden="true" tabindex="-1"></a> tile_width<span class="op">=</span>x_chunk_size,</span>
218+
<span id="cb8-18"><a href="#cb8-18" aria-hidden="true" tabindex="-1"></a> tile_height<span class="op">=</span>y_chunk_size,</span>
219+
<span id="cb8-19"><a href="#cb8-19" aria-hidden="true" tabindex="-1"></a> minzoom<span class="op">=</span><span class="dv">0</span>,</span>
220+
<span id="cb8-20"><a href="#cb8-20" aria-hidden="true" tabindex="-1"></a> maxzoom<span class="op">=</span>maxzoom,</span>
221+
<span id="cb8-21"><a href="#cb8-21" aria-hidden="true" tabindex="-1"></a> matrix_scale<span class="op">=</span>[<span class="dv">1</span>, <span class="dv">1</span>],</span>
222+
<span id="cb8-22"><a href="#cb8-22" aria-hidden="true" tabindex="-1"></a> decimation_base<span class="op">=</span><span class="dv">2</span>,</span>
223+
<span id="cb8-23"><a href="#cb8-23" aria-hidden="true" tabindex="-1"></a> )</span>
224+
<span id="cb8-24"><a href="#cb8-24" aria-hidden="true" tabindex="-1"></a></span>
225+
<span id="cb8-25"><a href="#cb8-25" aria-hidden="true" tabindex="-1"></a><span class="cf">with</span> XarrayReader(ds[var], tms<span class="op">=</span>custom_tms) <span class="im">as</span> dst:</span>
226+
<span id="cb8-26"><a href="#cb8-26" aria-hidden="true" tabindex="-1"></a> tile <span class="op">=</span> dst.tile(<span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>).data</span>
227+
<span id="cb8-27"><a href="#cb8-27" aria-hidden="true" tabindex="-1"></a></span>
228+
<span id="cb8-28"><a href="#cb8-28" aria-hidden="true" tabindex="-1"></a>plt.imshow(tile.squeeze())</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
213229
<div class="cell-output cell-output-stdout">
214230
<pre><code>crs: GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Latitude",NORTH],AXIS["Longitude",EAST],AUTHORITY["EPSG","4326"]]
215-
bounds: (-179.99500549324037, -89.99499786365084, 180.0050000000763, 89.99499786365084)
216-
BoundingBox(left=-179.99500549324037, bottom=-89.99500488285491, right=180.0050000000763, top=89.99499786365084)</code></pre>
231+
bounds: (-179.99500549324037, -89.99499786365084, 180.0050000000763, 89.99499786365084)</code></pre>
232+
</div>
233+
<div class="cell-output cell-output-display">
234+
<div>
235+
<figure class="figure">
236+
<p><img src="05_WIP_multiscales_as_customTMS_ZarrV2_files/figure-html/cell-8-output-2.png" class="img-fluid figure-img"></p>
237+
</figure>
238+
</div>
217239
</div>
218240
</div>
219241

38.5 KB
Loading

search.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -125,14 +125,14 @@
125125
"href": "examples/05_WIP_multiscales_as_customTMS_ZarrV2.html",
126126
"title": "Create a GeoZarr with multi-scales containing the WebMercatorQuad TMS",
127127
"section": "",
128-
"text": "import cf_xarray # noqa\nimport morecantile\nimport pyproj\nimport rioxarray # noqa\nimport xarray as xr\n\n# For zarr_format=2 encoding\nfrom rio_tiler.io.xarray import XarrayReader\n\n\nfp_base = \"20020601090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1\"\ninput = f\"../data/{fp_base}.nc\"\nv2_output = f\"../output/v2/{fp_base}_custom_multiscales.zarr\"\n\n\nds = xr.open_dataset(input)"
128+
"text": "import cf_xarray # noqa\nimport morecantile\nimport pyproj\nimport rioxarray # noqa\nimport xarray as xr\nfrom matplotlib import pyplot as plt\nfrom rasterio.rio.overview import get_maximum_overview_level\n\n# For zarr_format=2 encoding\nfrom rio_tiler.io.xarray import XarrayReader\n\n\nfp_base = \"20020601090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1\"\ninput = f\"../data/{fp_base}.nc\"\nv2_output = f\"../output/v2/{fp_base}_custom_multiscales.zarr\"\n\n\nds = xr.open_dataset(input)"
129129
},
130130
{
131131
"objectID": "examples/05_WIP_multiscales_as_customTMS_ZarrV2.html#load-example-dataset-from-netcdf-into-xarray",
132132
"href": "examples/05_WIP_multiscales_as_customTMS_ZarrV2.html#load-example-dataset-from-netcdf-into-xarray",
133133
"title": "Create a GeoZarr with multi-scales containing the WebMercatorQuad TMS",
134134
"section": "",
135-
"text": "import cf_xarray # noqa\nimport morecantile\nimport pyproj\nimport rioxarray # noqa\nimport xarray as xr\n\n# For zarr_format=2 encoding\nfrom rio_tiler.io.xarray import XarrayReader\n\n\nfp_base = \"20020601090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1\"\ninput = f\"../data/{fp_base}.nc\"\nv2_output = f\"../output/v2/{fp_base}_custom_multiscales.zarr\"\n\n\nds = xr.open_dataset(input)"
135+
"text": "import cf_xarray # noqa\nimport morecantile\nimport pyproj\nimport rioxarray # noqa\nimport xarray as xr\nfrom matplotlib import pyplot as plt\nfrom rasterio.rio.overview import get_maximum_overview_level\n\n# For zarr_format=2 encoding\nfrom rio_tiler.io.xarray import XarrayReader\n\n\nfp_base = \"20020601090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1\"\ninput = f\"../data/{fp_base}.nc\"\nv2_output = f\"../output/v2/{fp_base}_custom_multiscales.zarr\"\n\n\nds = xr.open_dataset(input)"
136136
},
137137
{
138138
"objectID": "examples/05_WIP_multiscales_as_customTMS_ZarrV2.html#check-that-all-variables-have-a-cf-compliant-standard-name",
@@ -149,11 +149,11 @@
149149
"text": "Assign CRS information to an auxiliary variable using rioxarray\n\nds = ds.rio.write_crs(\"epsg:4326\")\n# Specify which variable contains CRS information using grid_mapping\nfor var in ds.data_vars:\n ds[var].attrs[\"grid_mapping\"] = \"spatial_ref\""
150150
},
151151
{
152-
"objectID": "examples/05_WIP_multiscales_as_customTMS_ZarrV2.html#wip-define-a-custom-tms",
153-
"href": "examples/05_WIP_multiscales_as_customTMS_ZarrV2.html#wip-define-a-custom-tms",
152+
"objectID": "examples/05_WIP_multiscales_as_customTMS_ZarrV2.html#define-a-custom-tms",
153+
"href": "examples/05_WIP_multiscales_as_customTMS_ZarrV2.html#define-a-custom-tms",
154154
"title": "Create a GeoZarr with multi-scales containing the WebMercatorQuad TMS",
155-
"section": "WIP: Define a custom TMS",
156-
"text": "WIP: Define a custom TMS\n\nwith XarrayReader(ds[var]) as dst_wmq:\n pyproj_crs = pyproj.CRS.from_wkt(dst_wmq.crs.to_wkt())\n print(f\"crs: {pyproj_crs}\")\n bounds = dst_wmq.bounds\n print(f\"bounds: {bounds}\")\n custom_tms = morecantile.TileMatrixSet.custom(\n extent=bounds,\n crs=pyproj_crs,\n tile_width=ds[var].shape[2],\n tile_height=ds[var].shape[1],\n minzoom=0,\n maxzoom=0,\n )\n print(custom_tms.bounds(0, 0, 0))\n\ncrs: GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AXIS[\"Latitude\",NORTH],AXIS[\"Longitude\",EAST],AUTHORITY[\"EPSG\",\"4326\"]]\nbounds: (-179.99500549324037, -89.99499786365084, 180.0050000000763, 89.99499786365084)\nBoundingBox(left=-179.99500549324037, bottom=-89.99500488285491, right=180.0050000000763, top=89.99499786365084)"
155+
"section": "Define a custom TMS",
156+
"text": "Define a custom TMS\n\nx_chunk_size = 512\ny_chunk_size = 512\n\nwith XarrayReader(ds[var]) as dst_wmq:\n pyproj_crs = pyproj.CRS.from_wkt(dst_wmq.crs.to_wkt())\n print(f\"crs: {pyproj_crs}\")\n bounds = dst_wmq.bounds\n print(f\"bounds: {bounds}\")\n\n maxzoom = get_maximum_overview_level(\n ds[var].shape[2], ds[var].shape[1], minsize=min(x_chunk_size, y_chunk_size)\n )\n\n custom_tms = morecantile.TileMatrixSet.custom(\n extent=bounds,\n crs=pyproj_crs,\n tile_width=x_chunk_size,\n tile_height=y_chunk_size,\n minzoom=0,\n maxzoom=maxzoom,\n matrix_scale=[1, 1],\n decimation_base=2,\n )\n\nwith XarrayReader(ds[var], tms=custom_tms) as dst:\n tile = dst.tile(0, 0, 0).data\n\nplt.imshow(tile.squeeze())\n\ncrs: GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AXIS[\"Latitude\",NORTH],AXIS[\"Longitude\",EAST],AUTHORITY[\"EPSG\",\"4326\"]]\nbounds: (-179.99500549324037, -89.99499786365084, 180.0050000000763, 89.99499786365084)"
157157
},
158158
{
159159
"objectID": "examples/00_download_data.html",

sitemap.xml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,38 +2,38 @@
22
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
33
<url>
44
<loc>https://developmentseed.github.io/geozarr-examples/examples/04_multiscales_as_WebMercatorQuad_ZarrV3.html</loc>
5-
<lastmod>2025-03-05T15:33:33.186Z</lastmod>
5+
<lastmod>2025-03-05T22:38:59.973Z</lastmod>
66
</url>
77
<url>
88
<loc>https://developmentseed.github.io/geozarr-examples/examples/05_WIP_multiscales_as_customTMS_ZarrV2.html</loc>
9-
<lastmod>2025-03-05T15:33:33.186Z</lastmod>
9+
<lastmod>2025-03-05T22:38:59.973Z</lastmod>
1010
</url>
1111
<url>
1212
<loc>https://developmentseed.github.io/geozarr-examples/examples/00_download_data.html</loc>
13-
<lastmod>2025-03-05T15:33:33.183Z</lastmod>
13+
<lastmod>2025-03-05T22:38:59.970Z</lastmod>
1414
</url>
1515
<url>
1616
<loc>https://developmentseed.github.io/geozarr-examples/diagram.html</loc>
17-
<lastmod>2025-03-05T15:33:33.182Z</lastmod>
17+
<lastmod>2025-03-05T22:38:59.970Z</lastmod>
1818
</url>
1919
<url>
2020
<loc>https://developmentseed.github.io/geozarr-examples/slides.html</loc>
21-
<lastmod>2025-03-05T15:33:33.186Z</lastmod>
21+
<lastmod>2025-03-05T22:38:59.973Z</lastmod>
2222
</url>
2323
<url>
2424
<loc>https://developmentseed.github.io/geozarr-examples/index.html</loc>
25-
<lastmod>2025-03-05T15:33:33.186Z</lastmod>
25+
<lastmod>2025-03-05T22:38:59.973Z</lastmod>
2626
</url>
2727
<url>
2828
<loc>https://developmentseed.github.io/geozarr-examples/examples/01_CRS_in_auxiliary_variable.html</loc>
29-
<lastmod>2025-03-05T15:33:33.183Z</lastmod>
29+
<lastmod>2025-03-05T22:38:59.970Z</lastmod>
3030
</url>
3131
<url>
3232
<loc>https://developmentseed.github.io/geozarr-examples/examples/02_CRS_and_geotransform_in_auxiliary_variable.html</loc>
33-
<lastmod>2025-03-05T15:33:33.183Z</lastmod>
33+
<lastmod>2025-03-05T22:38:59.970Z</lastmod>
3434
</url>
3535
<url>
3636
<loc>https://developmentseed.github.io/geozarr-examples/examples/03_multiscales_as_WebMercatorQuad_ZarrV2.html</loc>
37-
<lastmod>2025-03-05T15:33:33.185Z</lastmod>
37+
<lastmod>2025-03-05T22:38:59.972Z</lastmod>
3838
</url>
3939
</urlset>

0 commit comments

Comments
 (0)