geoai-py 0.16.0__py2.py3-none-any.whl → 0.17.0__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
geoai/__init__.py CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  __author__ = """Qiusheng Wu"""
4
4
  __email__ = "giswqs@gmail.com"
5
- __version__ = "0.16.0"
5
+ __version__ = "0.17.0"
6
6
 
7
7
 
8
8
  import os
geoai/agents/__init__.py CHANGED
@@ -1,8 +1,12 @@
1
+ from .catalog_tools import CatalogTools
1
2
  from .geo_agents import (
3
+ CatalogAgent,
2
4
  GeoAgent,
5
+ STACAgent,
3
6
  create_ollama_model,
4
7
  create_anthropic_model,
5
8
  create_openai_model,
6
9
  create_bedrock_model,
7
10
  )
8
11
  from .map_tools import MapTools
12
+ from .stac_tools import STACTools
@@ -0,0 +1,51 @@
1
+ """Structured output models for catalog search results."""
2
+
3
+ from typing import Any, Dict, List, Optional
4
+
5
+ from pydantic import BaseModel, Field
6
+
7
+
8
+ class CatalogDatasetInfo(BaseModel):
9
+ """Information about a catalog dataset."""
10
+
11
+ id: str = Field(..., description="Dataset identifier")
12
+ title: str = Field(..., description="Dataset title")
13
+ type: Optional[str] = Field(
14
+ None, description="Dataset type (e.g., image, image_collection, table)"
15
+ )
16
+ provider: Optional[str] = Field(None, description="Data provider")
17
+ description: Optional[str] = Field(None, description="Dataset description")
18
+ keywords: Optional[str] = Field(None, description="Keywords/tags")
19
+ snippet: Optional[str] = Field(
20
+ None, description="Code snippet to access the dataset"
21
+ )
22
+ start_date: Optional[str] = Field(None, description="Start date of coverage")
23
+ end_date: Optional[str] = Field(None, description="End date of coverage")
24
+ bbox: Optional[str] = Field(None, description="Bounding box")
25
+ license: Optional[str] = Field(None, description="License information")
26
+ url: Optional[str] = Field(None, description="Documentation URL")
27
+ catalog: Optional[str] = Field(None, description="Catalog URL")
28
+ deprecated: Optional[str] = Field(None, description="Deprecated status")
29
+
30
+
31
+ class CatalogSearchResult(BaseModel):
32
+ """Container for catalog search results."""
33
+
34
+ query: str = Field(..., description="Original search query")
35
+ dataset_count: int = Field(..., description="Number of datasets found")
36
+ datasets: List[CatalogDatasetInfo] = Field(
37
+ default_factory=list, description="List of catalog datasets"
38
+ )
39
+ filters: Optional[Dict[str, Any]] = Field(
40
+ None, description="Filters applied to search"
41
+ )
42
+
43
+
44
+ class LocationInfo(BaseModel):
45
+ """Geographic location information."""
46
+
47
+ name: str = Field(..., description="Location name")
48
+ bbox: List[float] = Field(
49
+ ..., description="Bounding box [west, south, east, north]"
50
+ )
51
+ center: List[float] = Field(..., description="Center coordinates [lon, lat]")