Skip to content

Commit 786dcf8

Browse files
committed
Merge branch 'main' into parquet
2 parents 2c69f46 + 618b117 commit 786dcf8

File tree

5 files changed

+260
-149
lines changed

5 files changed

+260
-149
lines changed
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
name: Embedding Request
2+
description: Request precomputed embeddings for a specific region/years (2017–2024). Please fill out all required fields.
3+
title: "[Embedding Request] ORG / YEARS / ROI summary"
4+
labels:
5+
- embedding-request
6+
assignees: [] # Optional: fill in default maintainers' GitHub IDs
7+
8+
body:
9+
- type: markdown
10+
attributes:
11+
value: |
12+
Thanks for your request! Please follow the format below.
13+
• Coordinates must be in **lon,lat** (WGS84) with **4 decimal places** (e.g., `103.1234,30.5678`).
14+
• ROI should be a bounding box (Left/Right/Top/Bottom).
15+
16+
- type: input
17+
id: org
18+
attributes:
19+
label: 1) Your organization
20+
description: e.g., University of Cambridge / UESTC / Company X
21+
placeholder: e.g., University of Cambridge
22+
validations:
23+
required: true
24+
25+
- type: textarea
26+
id: purpose
27+
attributes:
28+
label: 2) Intended use
29+
description: Briefly describe how you plan to use these embeddings (project/paper/course/demo, tasks like retrieval/classification/clustering/visualization, etc.)
30+
placeholder: e.g., For downstream evaluation in project XXX (retrieval/classification/…)
31+
validations:
32+
required: true
33+
34+
- type: markdown
35+
attributes:
36+
value: "3) ROI (bounding box) – please provide **four points** as **lon,lat** with **4 decimals**."
37+
38+
- type: input
39+
id: roi_left
40+
attributes:
41+
label: ROI – Left Top (lon,lat)
42+
placeholder: "e.g., 103.1234,30.5678"
43+
validations:
44+
required: true
45+
46+
- type: input
47+
id: roi_right
48+
attributes:
49+
label: ROI – Right Top (lon,lat)
50+
placeholder: "e.g., 104.4321,30.5678"
51+
validations:
52+
required: true
53+
54+
- type: input
55+
id: roi_top
56+
attributes:
57+
label: ROI – Left Bottom (lon,lat)
58+
placeholder: "e.g., 103.7777,31.0000"
59+
validations:
60+
required: true
61+
62+
- type: input
63+
id: roi_bottom
64+
attributes:
65+
label: ROI – Right Bottom (lon,lat)
66+
placeholder: "e.g., 103.7777,30.1000"
67+
validations:
68+
required: true
69+
70+
- type: dropdown
71+
id: years
72+
attributes:
73+
label: 4) Years (multi-select)
74+
description: Choose one or more years between 2017–2024.
75+
multiple: true
76+
options:
77+
- "2017"
78+
- "2018"
79+
- "2019"
80+
- "2020"
81+
- "2021"
82+
- "2022"
83+
- "2023"
84+
- "2024"
85+
validations:
86+
required: true
87+
88+
- type: textarea
89+
id: extra
90+
attributes:
91+
label: Additional info (optional)
92+
description: e.g., whether near-year/near-area substitution is acceptable, deadlines, etc.
93+
placeholder: Leave blank if not applicable

CHANGES.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
## v0.6.0
22

3-
- Add support for a Parquet registry as an alternative source to
4-
lookup tile information.
3+
- registry: Add support for a Parquet registry as an alternative source
4+
to lookup tile information (#16).
5+
- docs: Fix old documentation examples (#22, #18 report by @cjissmart)
56

67
## v0.5.2 (2025-09-02)
78

README.md

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,18 @@ geospatial analysis tasks. Read more details about [the model](https://github.co
1313

1414
![Coverage map](https://raw.githubusercontent.com/ucam-eo/tessera-coverage-map/refs/heads/main/map.png)
1515

16+
### Request missing embeddings
17+
18+
This repo provides **precomputed embeddings** for multiple years and regions.
19+
Embeddings are generated by **randomly sampling tiles** within each region to ensure broad spatial coverage.
20+
21+
If some **years (2017–2024) / areas** are still missing for your use case, please submit an **Embedding Request**:
22+
23+
- 👉 **[Open an Embedding Request](../../issues/new?template=embedding-request.yml&labels=embedding-request)**
24+
- Please include: **your organization, intended use, ROI as a bounding box with four points (lon,lat, 4 decimals), and the year(s)**.
25+
26+
After you submit the request, we will **prioritize your ROI** and notify you via a comment in the issue once the embeddings are ready.
27+
1628
## Table of Contents
1729

1830
- [Installation](#installation)
@@ -188,15 +200,15 @@ from geotessera import GeoTessera
188200
gt = GeoTessera()
189201

190202
# Method 1: Fetch a single tile
191-
embedding, crs, transform = gt.fetch_embedding(lat=52.05, lon=0.15, year=2024)
203+
embedding, crs, transform = gt.fetch_embedding(lon=0.15, lat=52.05, year=2024)
192204
print(f"Shape: {embedding.shape}") # e.g., (1200, 1200, 128)
193205
print(f"CRS: {crs}") # Coordinate reference system from landmask
194206

195207
# Method 2: Fetch all tiles in a bounding box
196208
bbox = (-0.2, 51.4, 0.1, 51.6) # (min_lon, min_lat, max_lon, max_lat)
197209
embeddings = gt.fetch_embeddings(bbox, year=2024)
198210

199-
for tile_lat, tile_lon, embedding_array, crs, transform in embeddings:
211+
for tile_lon, tile_lat, embedding_array, crs, transform in embeddings:
200212
print(f"Tile ({tile_lat}, {tile_lon}): {embedding_array.shape}")
201213
```
202214

@@ -231,7 +243,7 @@ files = gt.export_embedding_geotiffs(
231243
# Fetch and process embeddings directly
232244
embeddings = gt.fetch_embeddings(bbox, year=2024)
233245

234-
for lat, lon, embedding, crs, transform in embeddings:
246+
for lon, lat, embedding, crs, transform in embeddings:
235247
# Compute statistics
236248
mean_values = np.mean(embedding, axis=(0, 1)) # Mean per channel
237249
std_values = np.std(embedding, axis=(0, 1)) # Std per channel
@@ -247,18 +259,19 @@ for lat, lon, embedding, crs, transform in embeddings:
247259

248260
```python
249261
from geotessera.visualization import (
250-
create_rgb_mosaic_from_geotiffs,
262+
create_rgb_mosaic,
263+
visualize_global_coverage
264+
)
265+
from geotessera.web import (
251266
create_coverage_summary_map,
252-
visualize_global_coverage,
253267
geotiff_to_web_tiles
254268
)
255269

256270
# Create an RGB mosaic from multiple GeoTIFF files
257-
create_rgb_mosaic_from_geotiffs(
271+
create_rgb_mosaic(
258272
geotiff_paths=["tile1.tif", "tile2.tif"],
259273
output_path="mosaic.tif",
260-
bands=(0, 1, 2), # RGB bands
261-
normalize=True # Normalize to 0-255
274+
bands=(0, 1, 2) # RGB bands
262275
)
263276

264277
# Generate web tiles for interactive maps

docs/geotessera.rst

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,9 @@ Visualization utilities for creating maps, web tiles, and interactive visualizat
6262
**Key Features:**
6363

6464
* :func:`~geotessera.visualization.visualize_global_coverage` - Create global coverage maps
65-
* :func:`~geotessera.visualization.create_rgb_mosaic_from_geotiffs` - Combine multiple GeoTIFFs into a mosaic
66-
* :func:`~geotessera.visualization.geotiff_to_web_tiles` - Generate web tiles for interactive maps
67-
* :func:`~geotessera.visualization.create_coverage_summary_map` - Create coverage summary visualizations
65+
* :func:`~geotessera.visualization.create_rgb_mosaic` - Combine multiple GeoTIFFs into a mosaic
66+
* :func:`~geotessera.web.geotiff_to_web_tiles` - Generate web tiles for interactive maps
67+
* :func:`~geotessera.web.create_coverage_summary_map` - Create coverage summary visualizations
6868

6969
.. automodule:: geotessera.visualization
7070
:members:
@@ -141,16 +141,15 @@ Create Visualizations
141141
Generate visualizations::
142142

143143
from geotessera.visualization import (
144-
create_rgb_mosaic_from_geotiffs,
144+
create_rgb_mosaic,
145145
visualize_global_coverage
146146
)
147147
148148
# Create RGB mosaic
149-
create_rgb_mosaic_from_geotiffs(
149+
create_rgb_mosaic(
150150
geotiff_paths=rgb_files,
151151
output_path="mosaic.tif",
152-
bands=(0, 1, 2),
153-
normalize=True
152+
bands=(0, 1, 2)
154153
)
155154
156155
# Create coverage map

0 commit comments

Comments
 (0)