You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This project uses [uv](https://github.com/astral-sh/uv) for dependency management. If you don't have it installed:
11
+
12
+
```bash
13
+
# Install uv
14
+
curl -LsSf https://astral.sh/uv/install.sh | sh
15
+
```
16
+
17
+
### Install the package
18
+
19
+
```bash
20
+
# Install in development mode with all dev dependencies
21
+
uv pip install -e ".[dev]"
22
+
23
+
# Or install just the package
24
+
uv pip install -e .
25
+
```
26
+
27
+
The structure looks like this:
8
28
9
29
```
10
30
- catalog.json
@@ -20,7 +40,8 @@ The structure looks like this:
20
40
| - 00002.json
21
41
```
22
42
23
-
The top-level `catalog.json` intends to be a catalog of all publicly available Overture releases. Briefly, it looks like this:
43
+
The top-level `catalog.json` intends to be a catalog of all publicly available Overture releases. Briefly, it looks like this:
44
+
24
45
```json
25
46
{
26
47
"type": "Catalog",
@@ -40,31 +61,113 @@ The top-level `catalog.json` intends to be a catalog of all publicly available O
40
61
"href": "./2025-06-25.0/catalog.json",
41
62
"type": "application/json",
42
63
"title": "2025-06-25.0 Overture Release"
43
-
},
64
+
}
44
65
],
45
66
"latest": "2025-07-23.0"
46
67
}
47
68
```
48
-
The top level catalog points to the `latest` Overture release, and this release also has the tag `latest:true`.
69
+
70
+
The top level catalog points to the `latest` Overture release, and this release also has the tag `latest:true`.
49
71
50
72
## Additional Files
73
+
51
74
At the root of each release, there are two additional files: `manifest.geojson` and `collections.parquet`
75
+
52
76
```
53
77
- <RELEASE>/
54
78
| - manifest.geojson
55
79
| - collections.parquet
56
80
```
57
81
58
-
#### `manifest.geojson`: Basic GeoJSON Manifest
82
+
#### `manifest.geojson`: Basic GeoJSON Manifest
83
+
84
+
To support the download functionality of `explore.overturemaps.org`, a basic `manifest.geojson` summary of the distribution is available at the root of a release.
85
+
86
+
#### `collections.parquet`: STAC GeoParquet
87
+
88
+
An Overture release is composed of nearly 500 individual parquet files, and therefore the STAC index is composed of nearly 500 individual `json` files. This single `collections.parquet` is created by the [`stac-geoparquet`](https://github.com/stac-utils/stac-geoparquet) utility.
59
89
To support the download functionality of `explore.overturemaps.org`, a basic `manifest.geojson` summary of the distribution is available at the root of a release.
60
90
61
-
#### `collections.parquet`: STAC GeoParquet
91
+
#### `collections.parquet`: STAC GeoParquet
92
+
62
93
An Overture release is composed of nearly 500 individual parquet files, and therefore the STAC index is composed of nearly 500 individual `json` files. This single `collections.parquet` is created by the [`stac-geoparquet`](https://github.com/stac-utils/stac-geoparquet) utility.
63
94
95
+
## Usage
96
+
97
+
### Command Line
64
98
65
-
## Running
99
+
After installation, you can use the `gen-stac` command:
66
100
67
101
```bash
68
-
pip install -r requirements
69
-
python3 gen-all-release-stac.py`
102
+
# Generate STAC catalogs for all releases
103
+
gen-stac --output ./public_releases
104
+
105
+
# Run in debug mode (generates only 1 item per collection)
106
+
gen-stac --output ./public_releases --debug
107
+
```
108
+
109
+
### Python API
110
+
111
+
You can also use the package programmatically:
112
+
113
+
```python
114
+
from pathlib import Path
115
+
from overture_stac import OvertureRelease, RegistryManifest
116
+
117
+
# Generate STAC catalog for a specific release
118
+
release = OvertureRelease(
119
+
release="2025-07-23.0",
120
+
schema="1.11.0",
121
+
output=Path("./output"),
122
+
)
123
+
release.build_release_catalog(title="My Release")
124
+
125
+
# Create registry manifest
126
+
registry = RegistryManifest()
127
+
manifest_data = registry.create_manifest()
128
+
print(f"Found {len(manifest_data)} files in registry")
129
+
```
130
+
131
+
## Development
132
+
133
+
### Running Tests
134
+
135
+
```bash
136
+
# Run all tests
137
+
pytest
138
+
139
+
# Run with coverage
140
+
pytest --cov=overture_stac --cov-report=html
141
+
142
+
# Run specific test file
143
+
pytest tests/test_registry_manifest.py
144
+
```
145
+
146
+
### Code Quality
147
+
148
+
```bash
149
+
# Format code with ruff
150
+
ruff format .
151
+
152
+
# Lint code
153
+
ruff check .
154
+
155
+
# Fix linting issues automatically
156
+
ruff check --fix .
157
+
```
158
+
159
+
## Project Structure
160
+
161
+
```
162
+
stac/
163
+
├── src/overture_stac/ # Main package
164
+
│ ├── __init__.py # Package initialization
165
+
│ ├── cli.py # Command-line interface
166
+
│ ├── overture_stac.py # Main STAC generation logic
0 commit comments