Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
8a5bb87
append to existing datasets and collection
michaelmattig Apr 13, 2026
aff55d2
support for stac v1.1 and extensions v2
michaelmattig Apr 16, 2026
3593d6c
s3 credentials
michaelmattig Apr 20, 2026
1ecbd42
filter stac server fields and print progress
michaelmattig Apr 22, 2026
056455d
barebones stac provider
michaelmattig Apr 22, 2026
4e5af4d
layer collection listing
michaelmattig Apr 22, 2026
15031d9
loading info from data provider for MultiBandGdalSource
michaelmattig Apr 22, 2026
0556ead
add spatial grid to stac provider definition
michaelmattig Apr 24, 2026
b85f335
query tile files from stac
michaelmattig Apr 24, 2026
d700289
todo -> err
michaelmattig Apr 27, 2026
2592943
logging and error handling
michaelmattig Apr 27, 2026
01e9778
benchmark stac harvest vs ad-hoc access
michaelmattig Apr 27, 2026
37ef0db
benchmark loading info time and track accessed files
michaelmattig Apr 29, 2026
e177302
dataset stac resolution via titles and asset bands
michaelmattig Apr 29, 2026
cb3a6e1
fix and test stac provider
michaelmattig May 11, 2026
8e4e8dc
refactor and test
michaelmattig May 13, 2026
5627c9d
secret replacement
michaelmattig May 13, 2026
64b56a4
Merge branch 'main' of https://github.com/geo-engine/geoengine into s…
michaelmattig May 13, 2026
4921b02
update api-clients, lint format code
michaelmattig May 20, 2026
3b4ccb3
simplify to spatial resolution
michaelmattig May 20, 2026
66ddbbe
fix text
michaelmattig May 20, 2026
5d8759c
prevent doctest
michaelmattig May 21, 2026
d830788
refactor loading_info method
michaelmattig May 21, 2026
c97bb0d
fix refactoring
michaelmattig May 21, 2026
885dc8b
Merge branch 'main' of https://github.com/geo-engine/geoengine into s…
michaelmattig May 28, 2026
ba4da17
feat: load data for enhanced data viewer mvp
michaelmattig May 29, 2026
d34eb4f
Merge branch 'main' of https://github.com/geo-engine/geoengine into e…
michaelmattig Jun 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions api-clients/python/.openapi-generator/FILES
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,12 @@ docs/SpatialGridDescriptorState.md
docs/SpatialPartition2D.md
docs/SpatialReferenceSpecification.md
docs/SpatialReferencesApi.md
docs/SpatialResolution.md
docs/StacApiRetries.md
docs/StacDataProviderDefinition.md
docs/StacProviderDataset.md
docs/StacProviderDatasetBand.md
docs/StacProviderS3Config.md
docs/StacQueryBuffer.md
docs/StaticColor.md
docs/StaticNumber.md
Expand Down Expand Up @@ -588,8 +593,13 @@ geoengine_api_client/models/spatial_grid_descriptor.py
geoengine_api_client/models/spatial_grid_descriptor_state.py
geoengine_api_client/models/spatial_partition2_d.py
geoengine_api_client/models/spatial_reference_specification.py
geoengine_api_client/models/spatial_resolution.py
geoengine_api_client/models/st_rectangle.py
geoengine_api_client/models/stac_api_retries.py
geoengine_api_client/models/stac_data_provider_definition.py
geoengine_api_client/models/stac_provider_dataset.py
geoengine_api_client/models/stac_provider_dataset_band.py
geoengine_api_client/models/stac_provider_s3_config.py
geoengine_api_client/models/stac_query_buffer.py
geoengine_api_client/models/static_color.py
geoengine_api_client/models/static_number.py
Expand Down Expand Up @@ -921,8 +931,13 @@ test/test_spatial_grid_descriptor_state.py
test/test_spatial_partition2_d.py
test/test_spatial_reference_specification.py
test/test_spatial_references_api.py
test/test_spatial_resolution.py
test/test_st_rectangle.py
test/test_stac_api_retries.py
test/test_stac_data_provider_definition.py
test/test_stac_provider_dataset.py
test/test_stac_provider_dataset_band.py
test/test_stac_provider_s3_config.py
test/test_stac_query_buffer.py
test/test_static_color.py
test/test_static_number.py
Expand Down
5 changes: 5 additions & 0 deletions api-clients/python/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -424,7 +424,12 @@ Class | Method | HTTP request | Description
- [SpatialGridDescriptorState](docs/SpatialGridDescriptorState.md)
- [SpatialPartition2D](docs/SpatialPartition2D.md)
- [SpatialReferenceSpecification](docs/SpatialReferenceSpecification.md)
- [SpatialResolution](docs/SpatialResolution.md)
- [StacApiRetries](docs/StacApiRetries.md)
- [StacDataProviderDefinition](docs/StacDataProviderDefinition.md)
- [StacProviderDataset](docs/StacProviderDataset.md)
- [StacProviderDatasetBand](docs/StacProviderDatasetBand.md)
- [StacProviderS3Config](docs/StacProviderS3Config.md)
- [StacQueryBuffer](docs/StacQueryBuffer.md)
- [StaticColor](docs/StaticColor.md)
- [StaticNumber](docs/StaticNumber.md)
Expand Down
10 changes: 10 additions & 0 deletions api-clients/python/geoengine_api_client/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,12 @@
"SpatialGridDescriptorState",
"SpatialPartition2D",
"SpatialReferenceSpecification",
"SpatialResolution",
"StacApiRetries",
"StacDataProviderDefinition",
"StacProviderDataset",
"StacProviderDatasetBand",
"StacProviderS3Config",
"StacQueryBuffer",
"StaticColor",
"StaticNumber",
Expand Down Expand Up @@ -622,7 +627,12 @@
from geoengine_api_client.models.spatial_grid_descriptor_state import SpatialGridDescriptorState as SpatialGridDescriptorState
from geoengine_api_client.models.spatial_partition2_d import SpatialPartition2D as SpatialPartition2D
from geoengine_api_client.models.spatial_reference_specification import SpatialReferenceSpecification as SpatialReferenceSpecification
from geoengine_api_client.models.spatial_resolution import SpatialResolution as SpatialResolution
from geoengine_api_client.models.stac_api_retries import StacApiRetries as StacApiRetries
from geoengine_api_client.models.stac_data_provider_definition import StacDataProviderDefinition as StacDataProviderDefinition
from geoengine_api_client.models.stac_provider_dataset import StacProviderDataset as StacProviderDataset
from geoengine_api_client.models.stac_provider_dataset_band import StacProviderDatasetBand as StacProviderDatasetBand
from geoengine_api_client.models.stac_provider_s3_config import StacProviderS3Config as StacProviderS3Config
from geoengine_api_client.models.stac_query_buffer import StacQueryBuffer as StacQueryBuffer
from geoengine_api_client.models.static_color import StaticColor as StaticColor
from geoengine_api_client.models.static_number import StaticNumber as StaticNumber
Expand Down
5 changes: 5 additions & 0 deletions api-clients/python/geoengine_api_client/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,12 @@
from geoengine_api_client.models.spatial_grid_descriptor_state import SpatialGridDescriptorState
from geoengine_api_client.models.spatial_partition2_d import SpatialPartition2D
from geoengine_api_client.models.spatial_reference_specification import SpatialReferenceSpecification
from geoengine_api_client.models.spatial_resolution import SpatialResolution
from geoengine_api_client.models.stac_api_retries import StacApiRetries
from geoengine_api_client.models.stac_data_provider_definition import StacDataProviderDefinition
from geoengine_api_client.models.stac_provider_dataset import StacProviderDataset
from geoengine_api_client.models.stac_provider_dataset_band import StacProviderDatasetBand
from geoengine_api_client.models.stac_provider_s3_config import StacProviderS3Config
from geoengine_api_client.models.stac_query_buffer import StacQueryBuffer
from geoengine_api_client.models.static_color import StaticColor
from geoengine_api_client.models.static_number import StaticNumber
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
# coding: utf-8

"""
Geo Engine API

No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)

Contact: dev@geoengine.de
Generated by OpenAPI Generator (https://openapi-generator.tech)

Do not edit the class manually.
""" # noqa: E501


from __future__ import annotations
import pprint
import re # noqa: F401
import json

from pydantic import BaseModel, ConfigDict, StrictFloat, StrictInt
from typing import Any, ClassVar, Dict, List, Union
from typing import Optional, Set
from typing_extensions import Self

class SpatialResolution(BaseModel):
"""
The spatial resolution in SRS units
""" # noqa: E501
x: Union[StrictFloat, StrictInt]
y: Union[StrictFloat, StrictInt]
__properties: ClassVar[List[str]] = ["x", "y"]

model_config = ConfigDict(
populate_by_name=True,
validate_assignment=True,
protected_namespaces=(),
)


def to_str(self) -> str:
"""Returns the string representation of the model using alias"""
return pprint.pformat(self.model_dump(by_alias=True))

def to_json(self) -> str:
"""Returns the JSON representation of the model using alias"""
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
return json.dumps(self.to_dict())

@classmethod
def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of SpatialResolution from a JSON string"""
return cls.from_dict(json.loads(json_str))

def to_dict(self) -> Dict[str, Any]:
"""Return the dictionary representation of the model using alias.

This has the following differences from calling pydantic's
`self.model_dump(by_alias=True)`:

* `None` is only added to the output dict for nullable fields that
were set at model initialization. Other fields with value `None`
are ignored.
"""
excluded_fields: Set[str] = set([
])

_dict = self.model_dump(
by_alias=True,
exclude=excluded_fields,
exclude_none=True,
)
return _dict

@classmethod
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"""Create an instance of SpatialResolution from a dict"""
if obj is None:
return None

if not isinstance(obj, dict):
return cls.model_validate(obj)

_obj = cls.model_validate({
"x": obj.get("x"),
"y": obj.get("y")
})
return _obj


Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
# coding: utf-8

"""
Geo Engine API

No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)

Contact: dev@geoengine.de
Generated by OpenAPI Generator (https://openapi-generator.tech)

Do not edit the class manually.
""" # noqa: E501


from __future__ import annotations
import pprint
import re # noqa: F401
import json

from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr, field_validator
from typing import Any, ClassVar, Dict, List, Optional
from uuid import UUID
from geoengine_api_client.models.stac_provider_dataset import StacProviderDataset
from geoengine_api_client.models.stac_provider_s3_config import StacProviderS3Config
from geoengine_api_client.models.time_dimension import TimeDimension
from typing import Optional, Set
from typing_extensions import Self

class StacDataProviderDefinition(BaseModel):
"""
StacDataProviderDefinition
""" # noqa: E501
api_url: StrictStr = Field(alias="apiUrl")
collection_name: StrictStr = Field(alias="collectionName")
datasets: List[StacProviderDataset]
description: StrictStr
id: UUID
name: StrictStr
priority: Optional[StrictInt] = None
s3_config: Optional[StacProviderS3Config] = Field(default=None, alias="s3Config")
time_dimension: TimeDimension = Field(alias="timeDimension")
type: StrictStr
__properties: ClassVar[List[str]] = ["apiUrl", "collectionName", "datasets", "description", "id", "name", "priority", "s3Config", "timeDimension", "type"]

@field_validator('type')
def type_validate_enum(cls, value):
"""Validates the enum"""
if value not in set(['StacProviderDefinition']):
raise ValueError("must be one of enum values ('StacProviderDefinition')")
return value

model_config = ConfigDict(
populate_by_name=True,
validate_assignment=True,
protected_namespaces=(),
)


def to_str(self) -> str:
"""Returns the string representation of the model using alias"""
return pprint.pformat(self.model_dump(by_alias=True))

def to_json(self) -> str:
"""Returns the JSON representation of the model using alias"""
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
return json.dumps(self.to_dict())

@classmethod
def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of StacDataProviderDefinition from a JSON string"""
return cls.from_dict(json.loads(json_str))

def to_dict(self) -> Dict[str, Any]:
"""Return the dictionary representation of the model using alias.

This has the following differences from calling pydantic's
`self.model_dump(by_alias=True)`:

* `None` is only added to the output dict for nullable fields that
were set at model initialization. Other fields with value `None`
are ignored.
"""
excluded_fields: Set[str] = set([
])

_dict = self.model_dump(
by_alias=True,
exclude=excluded_fields,
exclude_none=True,
)
# override the default output from pydantic by calling `to_dict()` of each item in datasets (list)
_items = []
if self.datasets:
for _item_datasets in self.datasets:
if _item_datasets:
_items.append(_item_datasets.to_dict())
_dict['datasets'] = _items
# override the default output from pydantic by calling `to_dict()` of s3_config
if self.s3_config:
_dict['s3Config'] = self.s3_config.to_dict()
# override the default output from pydantic by calling `to_dict()` of time_dimension
if self.time_dimension:
_dict['timeDimension'] = self.time_dimension.to_dict()
# set to None if priority (nullable) is None
# and model_fields_set contains the field
if self.priority is None and "priority" in self.model_fields_set:
_dict['priority'] = None

# set to None if s3_config (nullable) is None
# and model_fields_set contains the field
if self.s3_config is None and "s3_config" in self.model_fields_set:
_dict['s3Config'] = None

return _dict

@classmethod
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"""Create an instance of StacDataProviderDefinition from a dict"""
if obj is None:
return None

if not isinstance(obj, dict):
return cls.model_validate(obj)

_obj = cls.model_validate({
"apiUrl": obj.get("apiUrl"),
"collectionName": obj.get("collectionName"),
"datasets": [StacProviderDataset.from_dict(_item) for _item in obj["datasets"]] if obj.get("datasets") is not None else None,
"description": obj.get("description"),
"id": obj.get("id"),
"name": obj.get("name"),
"priority": obj.get("priority"),
"s3Config": StacProviderS3Config.from_dict(obj["s3Config"]) if obj.get("s3Config") is not None else None,
"timeDimension": TimeDimension.from_dict(obj["timeDimension"]) if obj.get("timeDimension") is not None else None,
"type": obj.get("type")
})
return _obj


Loading
Loading