geoai-py 0.11.0__py2.py3-none-any.whl → 0.12.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 +1 -1
- geoai/agents/__init__.py +2 -0
- geoai/agents/geo_agents.py +377 -0
- geoai/agents/map_tools.py +1502 -0
- geoai/dinov3.py +4 -0
- geoai/geoai.py +5 -5
- geoai/utils.py +2 -1
- {geoai_py-0.11.0.dist-info → geoai_py-0.12.0.dist-info}/METADATA +42 -17
- {geoai_py-0.11.0.dist-info → geoai_py-0.12.0.dist-info}/RECORD +13 -10
- {geoai_py-0.11.0.dist-info → geoai_py-0.12.0.dist-info}/WHEEL +0 -0
- {geoai_py-0.11.0.dist-info → geoai_py-0.12.0.dist-info}/entry_points.txt +0 -0
- {geoai_py-0.11.0.dist-info → geoai_py-0.12.0.dist-info}/licenses/LICENSE +0 -0
- {geoai_py-0.11.0.dist-info → geoai_py-0.12.0.dist-info}/top_level.txt +0 -0
geoai/dinov3.py
CHANGED
@@ -139,6 +139,10 @@ class DINOv3GeoProcessor:
|
|
139
139
|
repo_or_dir=self.dinov3_location,
|
140
140
|
model=self.model_name,
|
141
141
|
source=self.dinov3_source,
|
142
|
+
pretrained=False, # <-- critical: prevents downloading official weights
|
143
|
+
weights=None, # <-- be explicit; some hubs honor this
|
144
|
+
trust_repo=True, # optional: avoids interactivity prompts
|
145
|
+
skip_validation=True, # optional: speeds things up
|
142
146
|
)
|
143
147
|
# Load state dict manually
|
144
148
|
state_dict = torch.load(weights_path, map_location=self.device)
|
geoai/geoai.py
CHANGED
@@ -44,7 +44,7 @@ from .utils import *
|
|
44
44
|
from .map_widgets import DINOv3GUI
|
45
45
|
|
46
46
|
|
47
|
-
class
|
47
|
+
class LeafMap(leafmap.Map):
|
48
48
|
"""A subclass of leafmap.Map for GeoAI applications."""
|
49
49
|
|
50
50
|
def __init__(self, *args: Any, **kwargs: Any) -> None:
|
@@ -62,16 +62,16 @@ class Map(leafmap.Map):
|
|
62
62
|
return DINOv3GUI(raster, processor, features, host_map=self, **kwargs)
|
63
63
|
|
64
64
|
|
65
|
-
class
|
65
|
+
class Map(maplibregl.Map):
|
66
66
|
"""A subclass of maplibregl.Map for GeoAI applications."""
|
67
67
|
|
68
68
|
def __init__(self, *args: Any, **kwargs: Any) -> None:
|
69
|
-
"""Initialize the
|
69
|
+
"""Initialize the Map class."""
|
70
70
|
super().__init__(*args, **kwargs)
|
71
71
|
|
72
72
|
|
73
73
|
def create_vector_data(
|
74
|
-
m: Optional[
|
74
|
+
m: Optional[LeafMap] = None,
|
75
75
|
properties: Optional[Dict[str, List[Any]]] = None,
|
76
76
|
time_format: str = "%Y%m%dT%H%M%S",
|
77
77
|
column_widths: Optional[List[int]] = (9, 3),
|
@@ -153,7 +153,7 @@ def create_vector_data(
|
|
153
153
|
|
154
154
|
|
155
155
|
def edit_vector_data(
|
156
|
-
m: Optional[
|
156
|
+
m: Optional[LeafMap] = None,
|
157
157
|
filename: str = None,
|
158
158
|
properties: Optional[Dict[str, List[Any]]] = None,
|
159
159
|
time_format: str = "%Y%m%dT%H%M%S",
|
geoai/utils.py
CHANGED
@@ -64,7 +64,7 @@ def view_raster(
|
|
64
64
|
client_args: Optional[Dict] = {"cors_all": False},
|
65
65
|
basemap: Optional[str] = "OpenStreetMap",
|
66
66
|
basemap_args: Optional[Dict] = None,
|
67
|
-
backend: Optional[str] = "
|
67
|
+
backend: Optional[str] = "ipyleaflet",
|
68
68
|
**kwargs: Any,
|
69
69
|
) -> Any:
|
70
70
|
"""
|
@@ -87,6 +87,7 @@ def view_raster(
|
|
87
87
|
client_args (Optional[Dict], optional): Additional arguments for the client. Defaults to {"cors_all": False}.
|
88
88
|
basemap (Optional[str], optional): The basemap to use. Defaults to "OpenStreetMap".
|
89
89
|
basemap_args (Optional[Dict], optional): Additional arguments for the basemap. Defaults to None.
|
90
|
+
backend (Optional[str], optional): The backend to use. Defaults to "ipyleaflet".
|
90
91
|
**kwargs (Any): Additional keyword arguments.
|
91
92
|
|
92
93
|
Returns:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: geoai-py
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.12.0
|
4
4
|
Summary: A Python package for using Artificial Intelligence (AI) with geospatial data
|
5
5
|
Author-email: Qiusheng Wu <giswqs@gmail.com>
|
6
6
|
License: MIT License
|
@@ -31,6 +31,7 @@ Requires-Dist: maplibre
|
|
31
31
|
Requires-Dist: opencv-python-headless
|
32
32
|
Requires-Dist: overturemaps
|
33
33
|
Requires-Dist: planetary-computer
|
34
|
+
Requires-Dist: psutil
|
34
35
|
Requires-Dist: pyarrow
|
35
36
|
Requires-Dist: pystac-client
|
36
37
|
Requires-Dist: rasterio
|
@@ -45,6 +46,12 @@ Requires-Dist: tqdm
|
|
45
46
|
Requires-Dist: transformers
|
46
47
|
Provides-Extra: extra
|
47
48
|
Requires-Dist: overturemaps; extra == "extra"
|
49
|
+
Provides-Extra: agents
|
50
|
+
Requires-Dist: strands-agents; extra == "agents"
|
51
|
+
Requires-Dist: strands-agents-tools; extra == "agents"
|
52
|
+
Requires-Dist: strands-agents[ollama]; extra == "agents"
|
53
|
+
Requires-Dist: strands-agents[anthropic]; extra == "agents"
|
54
|
+
Requires-Dist: strands-agents[openai]; extra == "agents"
|
48
55
|
Dynamic: license-file
|
49
56
|
|
50
57
|
# GeoAI: Artificial Intelligence for Geospatial Data
|
@@ -53,27 +60,43 @@ Dynamic: license-file
|
|
53
60
|
[](https://pepy.tech/project/geoai-py)
|
54
61
|
[](https://anaconda.org/conda-forge/geoai)
|
55
62
|
[](https://anaconda.org/conda-forge/geoai)
|
56
|
-
[](https://github.com/
|
63
|
+
[](https://github.com/conda-forge/geoai-py-feedstock)
|
57
64
|
[](https://opensource.org/licenses/MIT)
|
58
65
|
[](https://tinyurl.com/GeoAI-Tutorials)
|
59
66
|
|
60
67
|
[](https://github.com/opengeos/geoai/blob/master/docs/assets/logo.png)
|
61
68
|
|
62
|
-
**A powerful Python package for integrating
|
69
|
+
**A powerful Python package for integrating artificial intelligence with geospatial data analysis and visualization**
|
63
70
|
|
64
|
-
|
71
|
+
## 📖 Introduction
|
65
72
|
|
66
|
-
-
|
67
|
-
- 💬 **Community:** [GitHub Discussions](https://github.com/opengeos/geoai/discussions)
|
68
|
-
- 🐛 **Issue Tracker:** [GitHub Issues](https://github.com/opengeos/geoai/issues)
|
73
|
+
[GeoAI](https://opengeoai.org) is a comprehensive Python package designed to bridge artificial intelligence (AI) and geospatial data analysis, providing researchers and practitioners with intuitive tools for applying machine learning techniques to geographic data. The package offers a unified framework for processing satellite imagery, aerial photographs, and vector data using state-of-the-art deep learning models. GeoAI integrates popular AI frameworks including [PyTorch](https://pytorch.org), [Transformers](https://github.com/huggingface/transformers), [PyTorch Segmentation Models](https://github.com/qubvel-org/segmentation_models.pytorch), and specialized geospatial libraries like [torchange](https://github.com/Z-Zheng/pytorch-change-models), enabling users to perform complex geospatial analyses with minimal code.
|
69
74
|
|
70
|
-
|
75
|
+
The package provides five core capabilities:
|
76
|
+
|
77
|
+
1. Interactive and programmatic search and download of remote sensing imagery and geospatial data.
|
78
|
+
2. Automated dataset preparation with image chips and label generation.
|
79
|
+
3. Model training for tasks such as classification, detection, and segmentation.
|
80
|
+
4. Inference pipelines for applying models to new geospatial datasets.
|
81
|
+
5. Interactive visualization through integration with [Leafmap](https://github.com/opengeos/leafmap/) and [MapLibre](https://github.com/eoda-dev/py-maplibregl).
|
82
|
+
|
83
|
+
GeoAI addresses the growing demand for accessible AI tools in geospatial research by providing high-level APIs that abstract complex machine learning workflows while maintaining flexibility for advanced users. The package supports multiple data formats (GeoTIFF, JPEG2000,GeoJSON, Shapefile, GeoPackage) and includes automatic device management for GPU acceleration when available. With over 10 modules and extensive notebook examples, GeoAI serves as both a research tool and educational resource for the geospatial AI community.
|
84
|
+
|
85
|
+
## 📝 Statement of Need
|
86
|
+
|
87
|
+
The integration of artificial intelligence with geospatial data analysis has become increasingly critical across numerous scientific disciplines, from environmental monitoring and urban planning to disaster response and climate research. However, applying AI techniques to geospatial data presents unique challenges including data preprocessing complexities, specialized model architectures, and the need for domain-specific knowledge in both machine learning and geographic information systems.
|
88
|
+
|
89
|
+
Existing solutions often require researchers to navigate fragmented ecosystems of tools, combining general-purpose machine learning libraries with specialized geospatial packages, leading to steep learning curves and reproducibility challenges. While packages like TorchGeo and TerraTorch provide excellent foundational tools for geospatial deep learning, there remains a gap for comprehensive, high-level interfaces that can democratize access to advanced AI techniques for the broader geospatial community.
|
71
90
|
|
72
|
-
|
91
|
+
GeoAI addresses this need by providing a unified, user-friendly interface that abstracts the complexity of integrating multiple AI frameworks with geospatial data processing workflows. It lowers barriers for: (1) geospatial researchers who need accessible AI workflows without deep ML expertise; (2) AI practitioners who want streamlined geospatial preprocessing and domain-specific datasets; and (3) educators seeking reproducible examples and teaching-ready workflows.
|
92
|
+
|
93
|
+
The package's design philosophy emphasizes simplicity without sacrificing functionality, enabling users to perform sophisticated analyses such as building footprint extraction from satellite imagery, land cover classification, and change detection with just a few lines of code. By integrating cutting-edge AI models and providing seamless access to major geospatial data sources, GeoAI significantly lowers the barrier to entry for geospatial AI applications while maintaining the flexibility needed for advanced research applications.
|
94
|
+
|
95
|
+
## 🚀 Key Features
|
73
96
|
|
74
97
|
### 📊 Advanced Geospatial Data Visualization
|
75
98
|
|
76
|
-
- Interactive multi-layer visualization of vector
|
99
|
+
- Interactive multi-layer visualization of vector and raster data stored locally or in cloud storage
|
77
100
|
- Customizable styling and symbology
|
78
101
|
- Time-series data visualization capabilities
|
79
102
|
|
@@ -88,9 +111,9 @@ GeoAI bridges the gap between AI and geospatial analysis, providing tools for pr
|
|
88
111
|
|
89
112
|
### 🖼️ Image Segmentation
|
90
113
|
|
91
|
-
- Integration with
|
114
|
+
- Integration with [PyTorch Segmentation Models](https://github.com/qubvel-org/segmentation_models.pytorch) for automatic feature extraction
|
92
115
|
- Specialized segmentation algorithms optimized for satellite and aerial imagery
|
93
|
-
- Streamlined workflows for segmenting buildings,
|
116
|
+
- Streamlined workflows for segmenting buildings, water bodies, wetlands,solar panels, etc.
|
94
117
|
- Export capabilities to standard geospatial formats (GeoJSON, Shapefile, GeoPackage, GeoParquet)
|
95
118
|
|
96
119
|
### 🔍 Image Classification
|
@@ -102,8 +125,7 @@ GeoAI bridges the gap between AI and geospatial analysis, providing tools for pr
|
|
102
125
|
|
103
126
|
### 🌍 Additional Capabilities
|
104
127
|
|
105
|
-
-
|
106
|
-
- Point cloud classification and segmentation
|
128
|
+
- Change detection with AI-enhanced feature extraction
|
107
129
|
- Object detection in aerial and satellite imagery
|
108
130
|
- Georeferencing utilities for AI model outputs
|
109
131
|
|
@@ -133,12 +155,15 @@ Comprehensive documentation is available at [https://opengeoai.org](https://open
|
|
133
155
|
|
134
156
|
- Detailed API reference
|
135
157
|
- Tutorials and example notebooks
|
136
|
-
-
|
137
|
-
- Best practices for geospatial AI
|
158
|
+
- Contributing guide
|
138
159
|
|
139
160
|
## 📺 Video Tutorials
|
140
161
|
|
141
|
-
Check out
|
162
|
+
Check out this 2-hour video tutorial on using GeoAI for geospatial data analysis and visualization.
|
163
|
+
|
164
|
+
[](https://youtu.be/jdK-cleFUkc)
|
165
|
+
|
166
|
+
To learn more about GeoAI, you can watch the following video tutorials:
|
142
167
|
|
143
168
|
[](https://tinyurl.com/GeoAI-Tutorials)
|
144
169
|
|
@@ -1,21 +1,24 @@
|
|
1
|
-
geoai/__init__.py,sha256=
|
1
|
+
geoai/__init__.py,sha256=DKFI6qeNtIjJ48oO7YWDxyaZmzSlsQ7YeXPypF9mhKI,3851
|
2
2
|
geoai/change_detection.py,sha256=XkJjMEU1nD8uX3-nQy7NEmz8cukVeSaRxKJHlrv8xPM,59636
|
3
3
|
geoai/classify.py,sha256=0DcComVR6vKU4qWtH2oHVeXc7ZTcV0mFvdXRtlNmolo,35637
|
4
4
|
geoai/detectron2.py,sha256=dOOFM9M9-6PV8q2A4-mnIPrz7yTo-MpEvDiAW34nl0w,14610
|
5
|
-
geoai/dinov3.py,sha256=
|
5
|
+
geoai/dinov3.py,sha256=c1rNvCdGSRvI8Twj-4Eanunxjh411ctIXRo_GpVRahQ,40433
|
6
6
|
geoai/download.py,sha256=B0EwpQFndJknOKmwRfEEnnCJhplOAwcLyNzFuA6FjZs,47633
|
7
7
|
geoai/extract.py,sha256=595MBcSaFx-gQLIEv5g3oEM90QA5In4L59GPVgBOlQc,122092
|
8
|
-
geoai/geoai.py,sha256=
|
8
|
+
geoai/geoai.py,sha256=6WwUnYQtQmPAiE9AJtdb4Elztc8vcH39nFFgwJQBPVQ,10112
|
9
9
|
geoai/hf.py,sha256=HbfJfpO6XnANKhmFOBvpwULiC65TeMlnLNtyQHHmlKA,17248
|
10
10
|
geoai/map_widgets.py,sha256=8S0WCAeH8f1jswtBJHzV_lGaO92er8P58GxxotbKUng,5862
|
11
11
|
geoai/sam.py,sha256=O6S-kGiFn7YEcFbfWFItZZQOhnsm6-GlunxQLY0daEs,34345
|
12
12
|
geoai/segment.py,sha256=yBGTxA-ti8lBpk7WVaBOp6yP23HkaulKJQk88acrmZ0,43788
|
13
13
|
geoai/segmentation.py,sha256=7yEzBSKCyHW1dNssoK0rdvhxi2IXsIQIFSga817KdI4,11535
|
14
14
|
geoai/train.py,sha256=r9eioaBpc2eg6hckkGVI3aGhQZffKas_UVRj-AWruu8,136049
|
15
|
-
geoai/utils.py,sha256=
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
geoai_py-0.
|
20
|
-
geoai_py-0.
|
21
|
-
geoai_py-0.
|
15
|
+
geoai/utils.py,sha256=Vg8vNuIZ2PvmwPGAIZHN_1dHw4jC9ddjM_GmdkFN1KA,300899
|
16
|
+
geoai/agents/__init__.py,sha256=MdJH4hA6dMV4mbXpq0wwhO7gMJdb5oDj8RJDJIRSr7A,65
|
17
|
+
geoai/agents/geo_agents.py,sha256=Yv9WYqjfV5mv8PN1n2ZP6aPhuy0MWDtgJgaVxLzc24A,13771
|
18
|
+
geoai/agents/map_tools.py,sha256=HrreesNpsj8jytwO3ZA1e2REYQ4nyas_5v23-xb5sdY,61354
|
19
|
+
geoai_py-0.12.0.dist-info/licenses/LICENSE,sha256=vN2L5U7cZ6ZkOHFmc8WiGlsogWsZc5dllMeNxnKVOZg,1070
|
20
|
+
geoai_py-0.12.0.dist-info/METADATA,sha256=NJ7ybA_ondbMpU3Jw58hDLOKD5maa_HMT04xnNY_cHI,10327
|
21
|
+
geoai_py-0.12.0.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
|
22
|
+
geoai_py-0.12.0.dist-info/entry_points.txt,sha256=uGp3Az3HURIsRHP9v-ys0hIbUuBBNUfXv6VbYHIXeg4,41
|
23
|
+
geoai_py-0.12.0.dist-info/top_level.txt,sha256=1YkCUWu-ii-0qIex7kbwAvfei-gos9ycyDyUCJPNWHY,6
|
24
|
+
geoai_py-0.12.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|