geoai-py 0.11.1__py2.py3-none-any.whl → 0.13.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 +2 -2
- geoai/agents/__init__.py +8 -0
- geoai/agents/geo_agents.py +580 -0
- geoai/agents/map_tools.py +1495 -0
- geoai/dinov3.py +12 -10
- geoai/geoai.py +6 -7
- geoai/map_widgets.py +3 -3
- geoai/utils.py +22 -22
- geoai_py-0.13.0.dist-info/METADATA +183 -0
- geoai_py-0.13.0.dist-info/RECORD +24 -0
- geoai_py-0.11.1.dist-info/METADATA +0 -158
- geoai_py-0.11.1.dist-info/RECORD +0 -21
- {geoai_py-0.11.1.dist-info → geoai_py-0.13.0.dist-info}/WHEEL +0 -0
- {geoai_py-0.11.1.dist-info → geoai_py-0.13.0.dist-info}/entry_points.txt +0 -0
- {geoai_py-0.11.1.dist-info → geoai_py-0.13.0.dist-info}/licenses/LICENSE +0 -0
- {geoai_py-0.11.1.dist-info → geoai_py-0.13.0.dist-info}/top_level.txt +0 -0
geoai/dinov3.py
CHANGED
@@ -8,22 +8,21 @@ import json
|
|
8
8
|
import math
|
9
9
|
import os
|
10
10
|
import sys
|
11
|
-
from typing import
|
11
|
+
from typing import Dict, List, Optional, Tuple, Union
|
12
12
|
|
13
|
+
import matplotlib.patches as patches
|
14
|
+
import matplotlib.pyplot as plt
|
13
15
|
import numpy as np
|
14
|
-
|
16
|
+
import rasterio
|
15
17
|
import torch
|
16
18
|
import torch.nn.functional as F
|
17
19
|
import torchvision.transforms as transforms
|
18
|
-
import rasterio
|
19
|
-
from rasterio.windows import Window
|
20
|
-
from rasterio.io import DatasetReader
|
21
|
-
import matplotlib.pyplot as plt
|
22
|
-
import matplotlib.patches as patches
|
23
|
-
|
24
20
|
from huggingface_hub import hf_hub_download
|
21
|
+
from PIL import Image
|
22
|
+
from rasterio.io import DatasetReader
|
23
|
+
from rasterio.windows import Window
|
25
24
|
|
26
|
-
from .utils import
|
25
|
+
from .utils import coords_to_xy, dict_to_image, dict_to_rioxarray, get_device
|
27
26
|
|
28
27
|
|
29
28
|
class DINOv3GeoProcessor:
|
@@ -47,7 +46,6 @@ class DINOv3GeoProcessor:
|
|
47
46
|
See https://github.com/facebookresearch/dinov3 for more details.
|
48
47
|
weights_path: Path to model weights (optional)
|
49
48
|
device: Torch device to use
|
50
|
-
dinov3_location: Path to DINOv3 repository
|
51
49
|
"""
|
52
50
|
|
53
51
|
dinov3_github_location = "facebookresearch/dinov3"
|
@@ -139,6 +137,10 @@ class DINOv3GeoProcessor:
|
|
139
137
|
repo_or_dir=self.dinov3_location,
|
140
138
|
model=self.model_name,
|
141
139
|
source=self.dinov3_source,
|
140
|
+
pretrained=False, # <-- critical: prevents downloading official weights
|
141
|
+
weights=None, # <-- be explicit; some hubs honor this
|
142
|
+
trust_repo=True, # optional: avoids interactivity prompts
|
143
|
+
skip_validation=True, # optional: speeds things up
|
142
144
|
)
|
143
145
|
# Load state dict manually
|
144
146
|
state_dict = torch.load(weights_path, map_location=self.device)
|
geoai/geoai.py
CHANGED
@@ -8,7 +8,6 @@ logging.getLogger("maplibre").setLevel(logging.ERROR)
|
|
8
8
|
import leafmap
|
9
9
|
import leafmap.maplibregl as maplibregl
|
10
10
|
|
11
|
-
from .change_detection import ChangeDetection
|
12
11
|
from .classify import classify_image, classify_images, train_classifier
|
13
12
|
from .download import (
|
14
13
|
download_naip,
|
@@ -26,6 +25,7 @@ from .download import (
|
|
26
25
|
)
|
27
26
|
from .extract import *
|
28
27
|
from .hf import *
|
28
|
+
from .map_widgets import DINOv3GUI
|
29
29
|
from .segment import *
|
30
30
|
from .train import (
|
31
31
|
get_instance_segmentation_model,
|
@@ -41,10 +41,9 @@ from .train import (
|
|
41
41
|
train_segmentation_model,
|
42
42
|
)
|
43
43
|
from .utils import *
|
44
|
-
from .map_widgets import DINOv3GUI
|
45
44
|
|
46
45
|
|
47
|
-
class
|
46
|
+
class LeafMap(leafmap.Map):
|
48
47
|
"""A subclass of leafmap.Map for GeoAI applications."""
|
49
48
|
|
50
49
|
def __init__(self, *args: Any, **kwargs: Any) -> None:
|
@@ -62,16 +61,16 @@ class Map(leafmap.Map):
|
|
62
61
|
return DINOv3GUI(raster, processor, features, host_map=self, **kwargs)
|
63
62
|
|
64
63
|
|
65
|
-
class
|
64
|
+
class Map(maplibregl.Map):
|
66
65
|
"""A subclass of maplibregl.Map for GeoAI applications."""
|
67
66
|
|
68
67
|
def __init__(self, *args: Any, **kwargs: Any) -> None:
|
69
|
-
"""Initialize the
|
68
|
+
"""Initialize the Map class."""
|
70
69
|
super().__init__(*args, **kwargs)
|
71
70
|
|
72
71
|
|
73
72
|
def create_vector_data(
|
74
|
-
m: Optional[
|
73
|
+
m: Optional[LeafMap] = None,
|
75
74
|
properties: Optional[Dict[str, List[Any]]] = None,
|
76
75
|
time_format: str = "%Y%m%dT%H%M%S",
|
77
76
|
column_widths: Optional[List[int]] = (9, 3),
|
@@ -153,7 +152,7 @@ def create_vector_data(
|
|
153
152
|
|
154
153
|
|
155
154
|
def edit_vector_data(
|
156
|
-
m: Optional[
|
155
|
+
m: Optional[LeafMap] = None,
|
157
156
|
filename: str = None,
|
158
157
|
properties: Optional[Dict[str, List[Any]]] = None,
|
159
158
|
time_format: str = "%Y%m%dT%H%M%S",
|
geoai/map_widgets.py
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
"""Interactive widget for GeoAI."""
|
2
2
|
|
3
3
|
import ipywidgets as widgets
|
4
|
+
|
4
5
|
from .utils import dict_to_image, dict_to_rioxarray
|
5
6
|
|
6
7
|
|
@@ -28,14 +29,13 @@ class DINOv3GUI(widgets.VBox):
|
|
28
29
|
colormap_options (list): The colormap options.
|
29
30
|
raster_args (dict): The raster arguments.
|
30
31
|
|
31
|
-
Returns:
|
32
|
-
None
|
33
|
-
|
34
32
|
Example:
|
35
33
|
>>> processor = DINOv3GeoProcessor()
|
36
34
|
>>> features, h_patches, w_patches = processor.extract_features(raster)
|
37
35
|
>>> gui = DINOv3GUI(raster, processor, features, host_map=m)
|
38
36
|
"""
|
37
|
+
super().__init__()
|
38
|
+
|
39
39
|
if raster_args is None:
|
40
40
|
raster_args = {}
|
41
41
|
|
geoai/utils.py
CHANGED
@@ -182,7 +182,6 @@ def view_image(
|
|
182
182
|
image (Union[np.ndarray, torch.Tensor]): The image to visualize.
|
183
183
|
transpose (bool, optional): Whether to transpose the image. Defaults to False.
|
184
184
|
bdx (Optional[int], optional): The band index to visualize. Defaults to None.
|
185
|
-
scale_factor (float, optional): The scale factor to apply to the image. Defaults to 1.0.
|
186
185
|
figsize (Tuple[int, int], optional): The size of the figure. Defaults to (10, 5).
|
187
186
|
axis_off (bool, optional): Whether to turn off the axis. Defaults to True.
|
188
187
|
title (Optional[str], optional): The title of the plot. Defaults to None.
|
@@ -396,9 +395,10 @@ def dict_to_rioxarray(data_dict: Dict) -> xr.DataArray:
|
|
396
395
|
xr.DataArray: The xarray DataArray.
|
397
396
|
"""
|
398
397
|
|
399
|
-
from affine import Affine
|
400
398
|
from collections import namedtuple
|
401
399
|
|
400
|
+
from affine import Affine
|
401
|
+
|
402
402
|
BoundingBox = namedtuple("BoundingBox", ["minx", "maxx", "miny", "maxy"])
|
403
403
|
|
404
404
|
# Extract components from the dictionary
|
@@ -710,7 +710,7 @@ def view_vector_interactive(
|
|
710
710
|
tiles_args (dict, optional): Additional arguments for the localtileserver client.
|
711
711
|
get_folium_tile_layer function. Defaults to None.
|
712
712
|
**kwargs: Additional keyword arguments to pass to GeoDataFrame.explore() function.
|
713
|
-
|
713
|
+
See https://geopandas.org/en/stable/docs/reference/api/geopandas.GeoDataFrame.explore.html
|
714
714
|
|
715
715
|
Returns:
|
716
716
|
folium.Map: The map object with the vector data added.
|
@@ -2508,7 +2508,7 @@ def batch_vector_to_raster(
|
|
2508
2508
|
fill_value=0,
|
2509
2509
|
dtype=np.uint8,
|
2510
2510
|
nodata=None,
|
2511
|
-
):
|
2511
|
+
) -> List[str]:
|
2512
2512
|
"""
|
2513
2513
|
Batch convert vector data to multiple rasters based on different extents or reference rasters.
|
2514
2514
|
|
@@ -2527,7 +2527,7 @@ def batch_vector_to_raster(
|
|
2527
2527
|
nodata (int): No data value for the output raster.
|
2528
2528
|
|
2529
2529
|
Returns:
|
2530
|
-
|
2530
|
+
List[str]: List of paths to the created raster files.
|
2531
2531
|
"""
|
2532
2532
|
# Create output directory if it doesn't exist
|
2533
2533
|
os.makedirs(output_dir, exist_ok=True)
|
@@ -3128,7 +3128,7 @@ def export_geotiff_tiles_batch(
|
|
3128
3128
|
skip_empty_tiles=False,
|
3129
3129
|
image_extensions=None,
|
3130
3130
|
mask_extensions=None,
|
3131
|
-
):
|
3131
|
+
) -> Dict[str, Any]:
|
3132
3132
|
"""
|
3133
3133
|
Export georeferenced GeoTIFF tiles from folders of images and masks.
|
3134
3134
|
|
@@ -3156,7 +3156,7 @@ def export_geotiff_tiles_batch(
|
|
3156
3156
|
mask_extensions (list): List of mask file extensions to process (default: common raster/vector formats)
|
3157
3157
|
|
3158
3158
|
Returns:
|
3159
|
-
|
3159
|
+
Dict[str, Any]: Dictionary containing batch processing statistics
|
3160
3160
|
|
3161
3161
|
Raises:
|
3162
3162
|
ValueError: If no images or masks found, or if counts don't match
|
@@ -3631,7 +3631,7 @@ def _process_image_mask_pair(
|
|
3631
3631
|
|
3632
3632
|
def create_overview_image(
|
3633
3633
|
src, tile_coordinates, output_path, tile_size, stride, geojson_path=None
|
3634
|
-
):
|
3634
|
+
) -> str:
|
3635
3635
|
"""Create an overview image showing all tiles and their status, with optional GeoJSON export.
|
3636
3636
|
|
3637
3637
|
Args:
|
@@ -3782,7 +3782,7 @@ def create_overview_image(
|
|
3782
3782
|
|
3783
3783
|
def export_tiles_to_geojson(
|
3784
3784
|
tile_coordinates, src, output_path, tile_size=None, stride=None
|
3785
|
-
):
|
3785
|
+
) -> str:
|
3786
3786
|
"""
|
3787
3787
|
Export tile rectangles directly to GeoJSON without creating an overview image.
|
3788
3788
|
|
@@ -4630,14 +4630,14 @@ def export_training_data(
|
|
4630
4630
|
|
4631
4631
|
|
4632
4632
|
def masks_to_vector(
|
4633
|
-
mask_path,
|
4634
|
-
output_path=None,
|
4635
|
-
simplify_tolerance=1.0,
|
4636
|
-
mask_threshold=0.5,
|
4637
|
-
min_object_area=100,
|
4638
|
-
max_object_area=None,
|
4639
|
-
nms_iou_threshold=0.5,
|
4640
|
-
):
|
4633
|
+
mask_path: str,
|
4634
|
+
output_path: Optional[str] = None,
|
4635
|
+
simplify_tolerance: float = 1.0,
|
4636
|
+
mask_threshold: float = 0.5,
|
4637
|
+
min_object_area: int = 100,
|
4638
|
+
max_object_area: Optional[int] = None,
|
4639
|
+
nms_iou_threshold: float = 0.5,
|
4640
|
+
) -> Any:
|
4641
4641
|
"""
|
4642
4642
|
Convert a building mask GeoTIFF to vector polygons and save as a vector dataset.
|
4643
4643
|
|
@@ -4651,7 +4651,7 @@ def masks_to_vector(
|
|
4651
4651
|
nms_iou_threshold: IoU threshold for non-maximum suppression (default: self.nms_iou_threshold)
|
4652
4652
|
|
4653
4653
|
Returns:
|
4654
|
-
GeoDataFrame with building footprints
|
4654
|
+
Any: GeoDataFrame with building footprints
|
4655
4655
|
"""
|
4656
4656
|
# Set default output path if not provided
|
4657
4657
|
# if output_path is None:
|
@@ -5654,7 +5654,7 @@ def orthogonalize(
|
|
5654
5654
|
min_segments=4,
|
5655
5655
|
area_tolerance=0.7,
|
5656
5656
|
detect_triangles=True,
|
5657
|
-
):
|
5657
|
+
) -> Any:
|
5658
5658
|
"""
|
5659
5659
|
Orthogonalizes object masks in a GeoTIFF file.
|
5660
5660
|
|
@@ -5678,7 +5678,7 @@ def orthogonalize(
|
|
5678
5678
|
detect_triangles (bool, optional): If True, performs additional check to avoid creating triangular shapes.
|
5679
5679
|
|
5680
5680
|
Returns:
|
5681
|
-
|
5681
|
+
Any: A GeoDataFrame containing the orthogonalized features.
|
5682
5682
|
"""
|
5683
5683
|
|
5684
5684
|
from functools import partial
|
@@ -7085,8 +7085,8 @@ def regularize(
|
|
7085
7085
|
num_cores: int = 1,
|
7086
7086
|
include_metadata: bool = False,
|
7087
7087
|
output_path: Optional[str] = None,
|
7088
|
-
**kwargs,
|
7089
|
-
) ->
|
7088
|
+
**kwargs: Any,
|
7089
|
+
) -> Any:
|
7090
7090
|
"""Regularizes polygon geometries in a GeoDataFrame by aligning edges.
|
7091
7091
|
|
7092
7092
|
Aligns edges to be parallel or perpendicular (optionally also 45 degrees)
|
@@ -0,0 +1,183 @@
|
|
1
|
+
Metadata-Version: 2.4
|
2
|
+
Name: geoai-py
|
3
|
+
Version: 0.13.0
|
4
|
+
Summary: A Python package for using Artificial Intelligence (AI) with geospatial data
|
5
|
+
Author-email: Qiusheng Wu <giswqs@gmail.com>
|
6
|
+
License: MIT License
|
7
|
+
Project-URL: Homepage, https://github.com/opengeos/geoai
|
8
|
+
Keywords: geoai
|
9
|
+
Classifier: Intended Audience :: Developers
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
11
|
+
Classifier: Natural Language :: English
|
12
|
+
Classifier: Programming Language :: Python :: 3.10
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
15
|
+
Classifier: Programming Language :: Python :: 3.13
|
16
|
+
Requires-Python: >=3.10
|
17
|
+
Description-Content-Type: text/markdown
|
18
|
+
License-File: LICENSE
|
19
|
+
Requires-Dist: albumentations
|
20
|
+
Requires-Dist: buildingregulariser
|
21
|
+
Requires-Dist: contextily
|
22
|
+
Requires-Dist: datasets>=3.0
|
23
|
+
Requires-Dist: ever-beta
|
24
|
+
Requires-Dist: geopandas
|
25
|
+
Requires-Dist: huggingface_hub
|
26
|
+
Requires-Dist: jupyter-server-proxy
|
27
|
+
Requires-Dist: leafmap
|
28
|
+
Requires-Dist: localtileserver
|
29
|
+
Requires-Dist: mapclassify
|
30
|
+
Requires-Dist: maplibre
|
31
|
+
Requires-Dist: opencv-python-headless
|
32
|
+
Requires-Dist: overturemaps
|
33
|
+
Requires-Dist: planetary-computer
|
34
|
+
Requires-Dist: psutil
|
35
|
+
Requires-Dist: pyarrow
|
36
|
+
Requires-Dist: pystac-client
|
37
|
+
Requires-Dist: rasterio
|
38
|
+
Requires-Dist: rioxarray
|
39
|
+
Requires-Dist: scikit-image
|
40
|
+
Requires-Dist: scikit-learn
|
41
|
+
Requires-Dist: torch
|
42
|
+
Requires-Dist: torchgeo
|
43
|
+
Requires-Dist: torchinfo
|
44
|
+
Requires-Dist: tqdm
|
45
|
+
Requires-Dist: transformers
|
46
|
+
Provides-Extra: extra
|
47
|
+
Requires-Dist: overturemaps; extra == "extra"
|
48
|
+
Requires-Dist: torchange; 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"
|
55
|
+
Dynamic: license-file
|
56
|
+
|
57
|
+
# GeoAI: Artificial Intelligence for Geospatial Data
|
58
|
+
|
59
|
+
[](https://pypi.python.org/pypi/geoai-py)
|
60
|
+
[](https://pepy.tech/project/geoai-py)
|
61
|
+
[](https://anaconda.org/conda-forge/geoai)
|
62
|
+
[](https://anaconda.org/conda-forge/geoai)
|
63
|
+
[](https://github.com/conda-forge/geoai-py-feedstock)
|
64
|
+
[](https://opensource.org/licenses/MIT)
|
65
|
+
[](https://tinyurl.com/GeoAI-Tutorials)
|
66
|
+
|
67
|
+
[](https://github.com/opengeos/geoai/blob/master/docs/assets/logo.png)
|
68
|
+
|
69
|
+
**A powerful Python package for integrating artificial intelligence with geospatial data analysis and visualization**
|
70
|
+
|
71
|
+
## 📖 Introduction
|
72
|
+
|
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.
|
74
|
+
|
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.
|
90
|
+
|
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
|
96
|
+
|
97
|
+
### 📊 Advanced Geospatial Data Visualization
|
98
|
+
|
99
|
+
- Interactive multi-layer visualization of vector and raster data stored locally or in cloud storage
|
100
|
+
- Customizable styling and symbology
|
101
|
+
- Time-series data visualization capabilities
|
102
|
+
|
103
|
+
### 🛠️ Data Preparation & Processing
|
104
|
+
|
105
|
+
- Streamlined access to satellite and aerial imagery from providers like Sentinel, Landsat, NAIP, and other open datasets
|
106
|
+
- Tools for downloading, mosaicking, and preprocessing remote sensing data
|
107
|
+
- Automated generation of training datasets with image chips and corresponding labels
|
108
|
+
- Vector-to-raster and raster-to-vector conversion utilities optimized for AI workflows
|
109
|
+
- Data augmentation techniques specific to geospatial data
|
110
|
+
- Support for integrating Overture Maps data and other open datasets for training and validation
|
111
|
+
|
112
|
+
### 🖼️ Image Segmentation
|
113
|
+
|
114
|
+
- Integration with [PyTorch Segmentation Models](https://github.com/qubvel-org/segmentation_models.pytorch) for automatic feature extraction
|
115
|
+
- Specialized segmentation algorithms optimized for satellite and aerial imagery
|
116
|
+
- Streamlined workflows for segmenting buildings, water bodies, wetlands,solar panels, etc.
|
117
|
+
- Export capabilities to standard geospatial formats (GeoJSON, Shapefile, GeoPackage, GeoParquet)
|
118
|
+
|
119
|
+
### 🔍 Image Classification
|
120
|
+
|
121
|
+
- Pre-trained models for land cover and land use classification
|
122
|
+
- Transfer learning utilities for fine-tuning models with your own data
|
123
|
+
- Multi-temporal classification support for change detection
|
124
|
+
- Accuracy assessment and validation tools
|
125
|
+
|
126
|
+
### 🌍 Additional Capabilities
|
127
|
+
|
128
|
+
- Change detection with AI-enhanced feature extraction
|
129
|
+
- Object detection in aerial and satellite imagery
|
130
|
+
- Georeferencing utilities for AI model outputs
|
131
|
+
|
132
|
+
## 📦 Installation
|
133
|
+
|
134
|
+
### Using pip
|
135
|
+
|
136
|
+
```bash
|
137
|
+
pip install geoai-py
|
138
|
+
```
|
139
|
+
|
140
|
+
### Using conda
|
141
|
+
|
142
|
+
```bash
|
143
|
+
conda install -c conda-forge geoai
|
144
|
+
```
|
145
|
+
|
146
|
+
### Using mamba
|
147
|
+
|
148
|
+
```bash
|
149
|
+
mamba install -c conda-forge geoai
|
150
|
+
```
|
151
|
+
|
152
|
+
## 📋 Documentation
|
153
|
+
|
154
|
+
Comprehensive documentation is available at [https://opengeoai.org](https://opengeoai.org), including:
|
155
|
+
|
156
|
+
- Detailed API reference
|
157
|
+
- Tutorials and example notebooks
|
158
|
+
- Contributing guide
|
159
|
+
|
160
|
+
## 📺 Video Tutorials
|
161
|
+
|
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:
|
167
|
+
|
168
|
+
[](https://tinyurl.com/GeoAI-Tutorials)
|
169
|
+
|
170
|
+
## 🤝 Contributing
|
171
|
+
|
172
|
+
We welcome contributions of all kinds! See our [contributing guide](https://opengeoai.org/contributing) for ways to get started.
|
173
|
+
|
174
|
+
## 📄 License
|
175
|
+
|
176
|
+
GeoAI is free and open source software, licensed under the MIT License.
|
177
|
+
|
178
|
+
## Acknowledgments
|
179
|
+
|
180
|
+
We gratefully acknowledge the support of the following organizations:
|
181
|
+
|
182
|
+
- [NASA](https://www.nasa.gov): This research is partially supported by the National Aeronautics and Space Administration (NASA) through Grant No. 80NSSC22K1742, awarded under the [Open Source Tools, Frameworks, and Libraries Program](https://bit.ly/3RVBRcQ).
|
183
|
+
- [AmericaView](https://americaview.org): This work is also partially supported by the U.S. Geological Survey through Grant/Cooperative Agreement No. G23AP00683 (GY23-GY27) in collaboration with AmericaView.
|
@@ -0,0 +1,24 @@
|
|
1
|
+
geoai/__init__.py,sha256=rKb_wHNQVHEFMzIYMkEXwp3_SlYN2YBzPvPFunMlZbs,3851
|
2
|
+
geoai/change_detection.py,sha256=XkJjMEU1nD8uX3-nQy7NEmz8cukVeSaRxKJHlrv8xPM,59636
|
3
|
+
geoai/classify.py,sha256=0DcComVR6vKU4qWtH2oHVeXc7ZTcV0mFvdXRtlNmolo,35637
|
4
|
+
geoai/detectron2.py,sha256=dOOFM9M9-6PV8q2A4-mnIPrz7yTo-MpEvDiAW34nl0w,14610
|
5
|
+
geoai/dinov3.py,sha256=u4Lulihhvs4wTgi84RjRw8jWQpB8omQSl-dVVryNVus,40377
|
6
|
+
geoai/download.py,sha256=B0EwpQFndJknOKmwRfEEnnCJhplOAwcLyNzFuA6FjZs,47633
|
7
|
+
geoai/extract.py,sha256=595MBcSaFx-gQLIEv5g3oEM90QA5In4L59GPVgBOlQc,122092
|
8
|
+
geoai/geoai.py,sha256=ZnGhcTvXbhqpO98Bmt2c4q09VXEgawn0yF8dqxGrlRg,10066
|
9
|
+
geoai/hf.py,sha256=HbfJfpO6XnANKhmFOBvpwULiC65TeMlnLNtyQHHmlKA,17248
|
10
|
+
geoai/map_widgets.py,sha256=QLmkILsztNaRXRULHKOd7Glb7S0pEWXSK9-P8S5AuzQ,5856
|
11
|
+
geoai/sam.py,sha256=O6S-kGiFn7YEcFbfWFItZZQOhnsm6-GlunxQLY0daEs,34345
|
12
|
+
geoai/segment.py,sha256=yBGTxA-ti8lBpk7WVaBOp6yP23HkaulKJQk88acrmZ0,43788
|
13
|
+
geoai/segmentation.py,sha256=7yEzBSKCyHW1dNssoK0rdvhxi2IXsIQIFSga817KdI4,11535
|
14
|
+
geoai/train.py,sha256=r9eioaBpc2eg6hckkGVI3aGhQZffKas_UVRj-AWruu8,136049
|
15
|
+
geoai/utils.py,sha256=ECl5IWkGQA7-_50Ws27T5EMIg_88EJuIktI8gprviBw,300932
|
16
|
+
geoai/agents/__init__.py,sha256=NndUtQ5-i8Zuim8CJftCZYKbCvrkDXj9iLVtiBtc_qE,178
|
17
|
+
geoai/agents/geo_agents.py,sha256=6vr5Asp18q_JD4aG9ZmebS7eNEseGsfrlZ0ChRKjLXk,21177
|
18
|
+
geoai/agents/map_tools.py,sha256=7aepLzzKHYPEyj43lTTgWZJme8DQP6dgPUNK4yeRqNE,60707
|
19
|
+
geoai_py-0.13.0.dist-info/licenses/LICENSE,sha256=vN2L5U7cZ6ZkOHFmc8WiGlsogWsZc5dllMeNxnKVOZg,1070
|
20
|
+
geoai_py-0.13.0.dist-info/METADATA,sha256=FP9x9Q2HS08x__vjOtpLlHNX2Q7NGGe7bnRCN4EMCOw,10345
|
21
|
+
geoai_py-0.13.0.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
|
22
|
+
geoai_py-0.13.0.dist-info/entry_points.txt,sha256=uGp3Az3HURIsRHP9v-ys0hIbUuBBNUfXv6VbYHIXeg4,41
|
23
|
+
geoai_py-0.13.0.dist-info/top_level.txt,sha256=1YkCUWu-ii-0qIex7kbwAvfei-gos9ycyDyUCJPNWHY,6
|
24
|
+
geoai_py-0.13.0.dist-info/RECORD,,
|
@@ -1,158 +0,0 @@
|
|
1
|
-
Metadata-Version: 2.4
|
2
|
-
Name: geoai-py
|
3
|
-
Version: 0.11.1
|
4
|
-
Summary: A Python package for using Artificial Intelligence (AI) with geospatial data
|
5
|
-
Author-email: Qiusheng Wu <giswqs@gmail.com>
|
6
|
-
License: MIT License
|
7
|
-
Project-URL: Homepage, https://github.com/opengeos/geoai
|
8
|
-
Keywords: geoai
|
9
|
-
Classifier: Intended Audience :: Developers
|
10
|
-
Classifier: License :: OSI Approved :: MIT License
|
11
|
-
Classifier: Natural Language :: English
|
12
|
-
Classifier: Programming Language :: Python :: 3.10
|
13
|
-
Classifier: Programming Language :: Python :: 3.11
|
14
|
-
Classifier: Programming Language :: Python :: 3.12
|
15
|
-
Classifier: Programming Language :: Python :: 3.13
|
16
|
-
Requires-Python: >=3.10
|
17
|
-
Description-Content-Type: text/markdown
|
18
|
-
License-File: LICENSE
|
19
|
-
Requires-Dist: albumentations
|
20
|
-
Requires-Dist: buildingregulariser
|
21
|
-
Requires-Dist: contextily
|
22
|
-
Requires-Dist: datasets>=3.0
|
23
|
-
Requires-Dist: ever-beta
|
24
|
-
Requires-Dist: geopandas
|
25
|
-
Requires-Dist: huggingface_hub
|
26
|
-
Requires-Dist: jupyter-server-proxy
|
27
|
-
Requires-Dist: leafmap
|
28
|
-
Requires-Dist: localtileserver
|
29
|
-
Requires-Dist: mapclassify
|
30
|
-
Requires-Dist: maplibre
|
31
|
-
Requires-Dist: opencv-python-headless
|
32
|
-
Requires-Dist: overturemaps
|
33
|
-
Requires-Dist: planetary-computer
|
34
|
-
Requires-Dist: pyarrow
|
35
|
-
Requires-Dist: pystac-client
|
36
|
-
Requires-Dist: rasterio
|
37
|
-
Requires-Dist: rioxarray
|
38
|
-
Requires-Dist: scikit-image
|
39
|
-
Requires-Dist: scikit-learn
|
40
|
-
Requires-Dist: torch
|
41
|
-
Requires-Dist: torchange
|
42
|
-
Requires-Dist: torchgeo
|
43
|
-
Requires-Dist: torchinfo
|
44
|
-
Requires-Dist: tqdm
|
45
|
-
Requires-Dist: transformers
|
46
|
-
Provides-Extra: extra
|
47
|
-
Requires-Dist: overturemaps; extra == "extra"
|
48
|
-
Dynamic: license-file
|
49
|
-
|
50
|
-
# GeoAI: Artificial Intelligence for Geospatial Data
|
51
|
-
|
52
|
-
[](https://pypi.python.org/pypi/geoai-py)
|
53
|
-
[](https://pepy.tech/project/geoai-py)
|
54
|
-
[](https://anaconda.org/conda-forge/geoai)
|
55
|
-
[](https://anaconda.org/conda-forge/geoai)
|
56
|
-
[](https://github.com/giswqs/geoai-py-feedstock)
|
57
|
-
[](https://opensource.org/licenses/MIT)
|
58
|
-
[](https://tinyurl.com/GeoAI-Tutorials)
|
59
|
-
|
60
|
-
[](https://github.com/opengeos/geoai/blob/master/docs/assets/logo.png)
|
61
|
-
|
62
|
-
**A powerful Python package for integrating Artificial Intelligence with geospatial data analysis and visualization**
|
63
|
-
|
64
|
-
GeoAI bridges the gap between AI and geospatial analysis, providing tools for processing, analyzing, and visualizing geospatial data using advanced machine learning techniques. Whether you're working with satellite imagery, LiDAR point clouds, or vector data, GeoAI offers intuitive interfaces to apply cutting-edge AI models.
|
65
|
-
|
66
|
-
- 📖 **Documentation:** [https://opengeoai.org](https://opengeoai.org)
|
67
|
-
- 💬 **Community:** [GitHub Discussions](https://github.com/opengeos/geoai/discussions)
|
68
|
-
- 🐛 **Issue Tracker:** [GitHub Issues](https://github.com/opengeos/geoai/issues)
|
69
|
-
|
70
|
-
## 🚀 Key Features
|
71
|
-
|
72
|
-
❗ **Important notes:** The GeoAI package is under active development and new features are being added regularly. Not all features listed below are available in the current release. If you have a feature request or would like to contribute, please let us know!
|
73
|
-
|
74
|
-
### 📊 Advanced Geospatial Data Visualization
|
75
|
-
|
76
|
-
- Interactive multi-layer visualization of vector, raster, and point cloud data
|
77
|
-
- Customizable styling and symbology
|
78
|
-
- Time-series data visualization capabilities
|
79
|
-
|
80
|
-
### 🛠️ Data Preparation & Processing
|
81
|
-
|
82
|
-
- Streamlined access to satellite and aerial imagery from providers like Sentinel, Landsat, NAIP, and other open datasets
|
83
|
-
- Tools for downloading, mosaicking, and preprocessing remote sensing data
|
84
|
-
- Automated generation of training datasets with image chips and corresponding labels
|
85
|
-
- Vector-to-raster and raster-to-vector conversion utilities optimized for AI workflows
|
86
|
-
- Data augmentation techniques specific to geospatial data
|
87
|
-
- Support for integrating Overture Maps data and other open datasets for training and validation
|
88
|
-
|
89
|
-
### 🖼️ Image Segmentation
|
90
|
-
|
91
|
-
- Integration with Meta's Segment Anything Model (SAM) for automatic feature extraction
|
92
|
-
- Specialized segmentation algorithms optimized for satellite and aerial imagery
|
93
|
-
- Streamlined workflows for segmenting buildings, roads, vegetation, and water bodies
|
94
|
-
- Export capabilities to standard geospatial formats (GeoJSON, Shapefile, GeoPackage, GeoParquet)
|
95
|
-
|
96
|
-
### 🔍 Image Classification
|
97
|
-
|
98
|
-
- Pre-trained models for land cover and land use classification
|
99
|
-
- Transfer learning utilities for fine-tuning models with your own data
|
100
|
-
- Multi-temporal classification support for change detection
|
101
|
-
- Accuracy assessment and validation tools
|
102
|
-
|
103
|
-
### 🌍 Additional Capabilities
|
104
|
-
|
105
|
-
- Terrain analysis with AI-enhanced feature extraction
|
106
|
-
- Point cloud classification and segmentation
|
107
|
-
- Object detection in aerial and satellite imagery
|
108
|
-
- Georeferencing utilities for AI model outputs
|
109
|
-
|
110
|
-
## 📦 Installation
|
111
|
-
|
112
|
-
### Using pip
|
113
|
-
|
114
|
-
```bash
|
115
|
-
pip install geoai-py
|
116
|
-
```
|
117
|
-
|
118
|
-
### Using conda
|
119
|
-
|
120
|
-
```bash
|
121
|
-
conda install -c conda-forge geoai
|
122
|
-
```
|
123
|
-
|
124
|
-
### Using mamba
|
125
|
-
|
126
|
-
```bash
|
127
|
-
mamba install -c conda-forge geoai
|
128
|
-
```
|
129
|
-
|
130
|
-
## 📋 Documentation
|
131
|
-
|
132
|
-
Comprehensive documentation is available at [https://opengeoai.org](https://opengeoai.org), including:
|
133
|
-
|
134
|
-
- Detailed API reference
|
135
|
-
- Tutorials and example notebooks
|
136
|
-
- Explanation of algorithms and models
|
137
|
-
- Best practices for geospatial AI
|
138
|
-
|
139
|
-
## 📺 Video Tutorials
|
140
|
-
|
141
|
-
Check out our [YouTube channel](https://tinyurl.com/GeoAI-Tutorials) for video tutorials on using GeoAI for geospatial data analysis and visualization.
|
142
|
-
|
143
|
-
[](https://tinyurl.com/GeoAI-Tutorials)
|
144
|
-
|
145
|
-
## 🤝 Contributing
|
146
|
-
|
147
|
-
We welcome contributions of all kinds! See our [contributing guide](https://opengeoai.org/contributing) for ways to get started.
|
148
|
-
|
149
|
-
## 📄 License
|
150
|
-
|
151
|
-
GeoAI is free and open source software, licensed under the MIT License.
|
152
|
-
|
153
|
-
## Acknowledgments
|
154
|
-
|
155
|
-
We gratefully acknowledge the support of the following organizations:
|
156
|
-
|
157
|
-
- [NASA](https://www.nasa.gov): This research is partially supported by the National Aeronautics and Space Administration (NASA) through Grant No. 80NSSC22K1742, awarded under the [Open Source Tools, Frameworks, and Libraries Program](https://bit.ly/3RVBRcQ).
|
158
|
-
- [AmericaView](https://americaview.org): This work is also partially supported by the U.S. Geological Survey through Grant/Cooperative Agreement No. G23AP00683 (GY23-GY27) in collaboration with AmericaView.
|
geoai_py-0.11.1.dist-info/RECORD
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
geoai/__init__.py,sha256=bf-BQ8_LOIWMsCC_0MMLRSBoeskwphJeLXAqyAHtuG8,3851
|
2
|
-
geoai/change_detection.py,sha256=XkJjMEU1nD8uX3-nQy7NEmz8cukVeSaRxKJHlrv8xPM,59636
|
3
|
-
geoai/classify.py,sha256=0DcComVR6vKU4qWtH2oHVeXc7ZTcV0mFvdXRtlNmolo,35637
|
4
|
-
geoai/detectron2.py,sha256=dOOFM9M9-6PV8q2A4-mnIPrz7yTo-MpEvDiAW34nl0w,14610
|
5
|
-
geoai/dinov3.py,sha256=pr7yFyw9yXGT95QkGO3Cmu__22rMyZJr3lHIPiLQ83U,40114
|
6
|
-
geoai/download.py,sha256=B0EwpQFndJknOKmwRfEEnnCJhplOAwcLyNzFuA6FjZs,47633
|
7
|
-
geoai/extract.py,sha256=595MBcSaFx-gQLIEv5g3oEM90QA5In4L59GPVgBOlQc,122092
|
8
|
-
geoai/geoai.py,sha256=UK3HLsg3u0hJQfSQ29avWm6iKcKW35GmQ0f6jDp0ywg,10110
|
9
|
-
geoai/hf.py,sha256=HbfJfpO6XnANKhmFOBvpwULiC65TeMlnLNtyQHHmlKA,17248
|
10
|
-
geoai/map_widgets.py,sha256=8S0WCAeH8f1jswtBJHzV_lGaO92er8P58GxxotbKUng,5862
|
11
|
-
geoai/sam.py,sha256=O6S-kGiFn7YEcFbfWFItZZQOhnsm6-GlunxQLY0daEs,34345
|
12
|
-
geoai/segment.py,sha256=yBGTxA-ti8lBpk7WVaBOp6yP23HkaulKJQk88acrmZ0,43788
|
13
|
-
geoai/segmentation.py,sha256=7yEzBSKCyHW1dNssoK0rdvhxi2IXsIQIFSga817KdI4,11535
|
14
|
-
geoai/train.py,sha256=r9eioaBpc2eg6hckkGVI3aGhQZffKas_UVRj-AWruu8,136049
|
15
|
-
geoai/utils.py,sha256=Vg8vNuIZ2PvmwPGAIZHN_1dHw4jC9ddjM_GmdkFN1KA,300899
|
16
|
-
geoai_py-0.11.1.dist-info/licenses/LICENSE,sha256=vN2L5U7cZ6ZkOHFmc8WiGlsogWsZc5dllMeNxnKVOZg,1070
|
17
|
-
geoai_py-0.11.1.dist-info/METADATA,sha256=7RYVHCX_BzOQXPiXg9hsejDQM4lUQaLKvO-22xLq0ow,6764
|
18
|
-
geoai_py-0.11.1.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
|
19
|
-
geoai_py-0.11.1.dist-info/entry_points.txt,sha256=uGp3Az3HURIsRHP9v-ys0hIbUuBBNUfXv6VbYHIXeg4,41
|
20
|
-
geoai_py-0.11.1.dist-info/top_level.txt,sha256=1YkCUWu-ii-0qIex7kbwAvfei-gos9ycyDyUCJPNWHY,6
|
21
|
-
geoai_py-0.11.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|