eotdl 2023.11.2.post5__py3-none-any.whl → 2023.11.3.post2__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.
- eotdl/__init__.py +1 -1
- eotdl/access/__init__.py +6 -3
- eotdl/access/airbus/__init__.py +5 -1
- eotdl/access/airbus/client.py +356 -338
- eotdl/access/airbus/parameters.py +19 -4
- eotdl/access/airbus/utils.py +26 -21
- eotdl/access/download.py +30 -14
- eotdl/access/search.py +17 -6
- eotdl/access/sentinelhub/__init__.py +5 -1
- eotdl/access/sentinelhub/client.py +57 -54
- eotdl/access/sentinelhub/evalscripts.py +38 -39
- eotdl/access/sentinelhub/parameters.py +43 -23
- eotdl/access/sentinelhub/utils.py +38 -28
- eotdl/auth/errors.py +2 -1
- eotdl/commands/auth.py +3 -3
- eotdl/curation/__init__.py +5 -1
- eotdl/curation/stac/__init__.py +5 -1
- eotdl/curation/stac/assets.py +55 -32
- eotdl/curation/stac/dataframe.py +20 -14
- eotdl/curation/stac/dataframe_bck.py +2 -2
- eotdl/curation/stac/dataframe_labeling.py +15 -12
- eotdl/curation/stac/extensions/__init__.py +6 -2
- eotdl/curation/stac/extensions/base.py +8 -4
- eotdl/curation/stac/extensions/dem.py +6 -3
- eotdl/curation/stac/extensions/eo.py +10 -6
- eotdl/curation/stac/extensions/label/__init__.py +5 -1
- eotdl/curation/stac/extensions/label/base.py +40 -26
- eotdl/curation/stac/extensions/label/image_name_labeler.py +64 -43
- eotdl/curation/stac/extensions/label/scaneo.py +59 -56
- eotdl/curation/stac/extensions/ml_dataset.py +154 -56
- eotdl/curation/stac/extensions/projection.py +11 -9
- eotdl/curation/stac/extensions/raster.py +22 -14
- eotdl/curation/stac/extensions/sar.py +12 -7
- eotdl/curation/stac/extent.py +67 -40
- eotdl/curation/stac/parsers.py +18 -10
- eotdl/curation/stac/stac.py +81 -62
- eotdl/datasets/__init__.py +1 -1
- eotdl/datasets/download.py +42 -55
- eotdl/datasets/ingest.py +68 -11
- eotdl/files/__init__.py +1 -1
- eotdl/files/ingest.py +3 -1
- eotdl/models/download.py +1 -1
- eotdl/repos/AuthAPIRepo.py +0 -1
- eotdl/repos/DatasetsAPIRepo.py +22 -146
- eotdl/repos/FilesAPIRepo.py +7 -92
- eotdl/repos/ModelsAPIRepo.py +0 -1
- eotdl/tools/__init__.py +5 -1
- eotdl/tools/geo_utils.py +78 -48
- eotdl/tools/metadata.py +13 -11
- eotdl/tools/paths.py +14 -14
- eotdl/tools/stac.py +36 -31
- eotdl/tools/time_utils.py +53 -26
- eotdl/tools/tools.py +84 -50
- {eotdl-2023.11.2.post5.dist-info → eotdl-2023.11.3.post2.dist-info}/METADATA +5 -3
- eotdl-2023.11.3.post2.dist-info/RECORD +84 -0
- eotdl-2023.11.2.post5.dist-info/RECORD +0 -84
- {eotdl-2023.11.2.post5.dist-info → eotdl-2023.11.3.post2.dist-info}/WHEEL +0 -0
- {eotdl-2023.11.2.post5.dist-info → eotdl-2023.11.3.post2.dist-info}/entry_points.txt +0 -0
eotdl/tools/tools.py
CHANGED
@@ -2,22 +2,22 @@
|
|
2
2
|
Module for data engineeringt
|
3
3
|
"""
|
4
4
|
|
5
|
-
import geopandas as gpd
|
6
|
-
import pandas as pd
|
7
|
-
import tarfile
|
8
5
|
import re
|
6
|
+
import tarfile
|
9
7
|
import datetime
|
10
8
|
import json
|
11
|
-
|
12
|
-
from .geo_utils import get_image_bbox
|
13
|
-
from shapely.geometry import box
|
14
9
|
from os.path import exists
|
15
10
|
from typing import Union, Optional
|
11
|
+
import geopandas as gpd
|
12
|
+
import pandas as pd
|
13
|
+
|
14
|
+
from shapely.geometry import box
|
15
|
+
from .geo_utils import get_image_bbox
|
16
16
|
|
17
17
|
|
18
18
|
def get_images_by_location(gdf: gpd.GeoDataFrame) -> pd.DataFrame:
|
19
19
|
"""
|
20
|
-
Generate a GeoDataFrame with the available images for each location in the dataset.
|
20
|
+
Generate a GeoDataFrame with the available images for each location in the dataset.
|
21
21
|
|
22
22
|
:param gdf: GeoDataFrame generated from the ItemCollection of a sen12floods collection
|
23
23
|
:return gdf_dates_per_aoi: GeoDataFrame with the available images for each location in
|
@@ -27,7 +27,7 @@ def get_images_by_location(gdf: gpd.GeoDataFrame) -> pd.DataFrame:
|
|
27
27
|
- images_count: the count of available images of each location.
|
28
28
|
- images_dates: list with the dates of the available images of each location.
|
29
29
|
"""
|
30
|
-
uniques_location_id = gdf[
|
30
|
+
uniques_location_id = gdf["scene_id"].unique() # List of unique location ids
|
31
31
|
uniques_location_id.sort()
|
32
32
|
|
33
33
|
images_count_list, images_dates_list = [], []
|
@@ -35,83 +35,105 @@ def get_images_by_location(gdf: gpd.GeoDataFrame) -> pd.DataFrame:
|
|
35
35
|
# Iterate the unique location ids, count the number of images per location and generate
|
36
36
|
# a list with the dates of every image in a location
|
37
37
|
for location_id in uniques_location_id:
|
38
|
-
dates = gdf[gdf[
|
38
|
+
dates = gdf[gdf["scene_id"] == location_id]["datetime"]
|
39
39
|
images_count_list.append(dates.count())
|
40
40
|
images_dates_list.append(dates.tolist())
|
41
41
|
|
42
|
-
images_dates_list.sort()
|
43
|
-
data = {
|
42
|
+
images_dates_list.sort() # Sort the list of dates
|
43
|
+
data = {
|
44
|
+
"scene_id": uniques_location_id,
|
45
|
+
"dates_count": images_count_list,
|
46
|
+
"dates_list": images_dates_list,
|
47
|
+
}
|
44
48
|
df_dates_per_aoi = pd.DataFrame.from_dict(data)
|
45
49
|
|
46
50
|
return df_dates_per_aoi
|
47
51
|
|
48
52
|
|
49
|
-
def generate_location_payload(
|
53
|
+
def generate_location_payload(
|
54
|
+
gdf: Union[gpd.GeoDataFrame, pd.DataFrame], path: str
|
55
|
+
) -> dict:
|
50
56
|
"""
|
51
|
-
Generate a dictionary with the location payload of the locations in the GeoDataFrame,
|
57
|
+
Generate a dictionary with the location payload of the locations in the GeoDataFrame,
|
52
58
|
such as the bounding box and the time interval to search for available data.
|
53
59
|
"""
|
54
60
|
payload_cache = f"{path}/location_payload.json"
|
55
61
|
if exists(payload_cache):
|
56
62
|
# Read as dict
|
57
|
-
with open(payload_cache,
|
63
|
+
with open(payload_cache, "r", encoding="utf-8") as f:
|
58
64
|
payload = json.load(f)
|
59
65
|
return payload
|
60
|
-
|
61
|
-
bbox_date_by_location =
|
62
|
-
for
|
66
|
+
|
67
|
+
bbox_date_by_location = {}
|
68
|
+
for _, row in gdf.iterrows():
|
63
69
|
# Get list from dates_list column
|
64
|
-
dates_list = list(row[
|
70
|
+
dates_list = list(row["dates_list"])
|
65
71
|
for date in dates_list:
|
66
|
-
location_id = row[
|
67
|
-
date_formatted = datetime.datetime.strptime(
|
68
|
-
|
72
|
+
location_id = row["location_id"]
|
73
|
+
date_formatted = datetime.datetime.strptime(
|
74
|
+
date, "%Y-%m-%dT%H:%M:%S.%fZ"
|
75
|
+
).strftime("%Y-%m-%d")
|
76
|
+
location_id_formatted = f"{location_id}_{date_formatted}"
|
69
77
|
bbox_date_by_location[location_id_formatted] = {
|
70
|
-
|
78
|
+
"bounding_box": row["geometry"].bounds,
|
71
79
|
# Convert str to datetime
|
72
|
-
|
80
|
+
"time_interval": (date, date),
|
73
81
|
}
|
74
82
|
|
75
83
|
# Save to json
|
76
|
-
with open(payload_cache,
|
84
|
+
with open(payload_cache, "w", encoding="utf-8") as f:
|
77
85
|
json.dump(bbox_date_by_location, f)
|
78
86
|
|
79
87
|
return bbox_date_by_location
|
80
88
|
|
81
89
|
|
82
|
-
def get_tarfile_image_info(
|
90
|
+
def get_tarfile_image_info(
|
91
|
+
tar: str,
|
92
|
+
path: Optional[str] = None,
|
93
|
+
pattern: Optional[str] = r"\d{8}T\d{6}",
|
94
|
+
level: Optional[int] = 2,
|
95
|
+
):
|
83
96
|
"""
|
97
|
+
Generate a GeoDataFrame with the available images for each location in the dataset.
|
84
98
|
"""
|
85
99
|
if path:
|
86
100
|
gdf_cache = f"{path}/tarfile_images_info.csv"
|
87
101
|
if exists(gdf_cache):
|
88
|
-
images_gdf = gpd.read_file(
|
89
|
-
|
90
|
-
|
102
|
+
images_gdf = gpd.read_file(
|
103
|
+
gdf_cache, GEOM_POSSIBLE_NAMES="geometry", KEEP_GEOM_COLUMNS="NO"
|
104
|
+
)
|
91
105
|
images_gdf.set_crs(epsg=4326, inplace=True)
|
92
|
-
|
106
|
+
|
93
107
|
return images_gdf
|
94
|
-
|
108
|
+
|
95
109
|
images_df = pd.DataFrame()
|
96
|
-
with tarfile.open(tar,
|
97
|
-
rasters = [
|
110
|
+
with tarfile.open(tar, "r:gz") as tarf:
|
111
|
+
rasters = [
|
112
|
+
i for i in tarf.getnames() if i.endswith(".tif") or i.endswith(".tiff")
|
113
|
+
]
|
98
114
|
for raster in rasters:
|
99
|
-
r =
|
115
|
+
r = tarf.extractfile(raster)
|
100
116
|
bbox = get_image_bbox(r)
|
101
117
|
date = extract_image_date_in_folder(raster, pattern)
|
102
|
-
|
103
|
-
id = extract_image_id_in_folder(raster, level)
|
118
|
+
image_id = extract_image_id_in_folder(raster, level)
|
104
119
|
# Use pd.concat to append to dataframe
|
105
|
-
images_df = pd.concat(
|
106
|
-
|
107
|
-
|
120
|
+
images_df = pd.concat(
|
121
|
+
[
|
122
|
+
images_df,
|
123
|
+
pd.DataFrame(
|
124
|
+
{"location_id": [image_id], "datetime": [date], "bbox": [bbox]}
|
125
|
+
),
|
126
|
+
]
|
127
|
+
)
|
108
128
|
|
109
129
|
# Clean duplicates
|
110
130
|
images_df = images_df.drop_duplicates(subset=["location_id", "datetime"])
|
111
131
|
# Convert to geodataframe
|
112
|
-
images_gdf = gpd.GeoDataFrame(
|
113
|
-
|
114
|
-
|
132
|
+
images_gdf = gpd.GeoDataFrame(
|
133
|
+
images_df,
|
134
|
+
crs="EPSG:4326",
|
135
|
+
geometry=images_df["bbox"].apply(lambda x: box(x[0], x[1], x[2], x[3])),
|
136
|
+
)
|
115
137
|
# Drop bbox column
|
116
138
|
images_gdf = images_gdf.drop(columns=["bbox"])
|
117
139
|
# Set crs
|
@@ -126,32 +148,44 @@ def get_tarfile_image_info(tar: str, path: Optional[str] = None, pattern: Option
|
|
126
148
|
|
127
149
|
|
128
150
|
def extract_image_date_in_folder(raster_path: str, pattern: str):
|
151
|
+
"""
|
152
|
+
Extract the date from the folder name of the image.
|
153
|
+
"""
|
129
154
|
case = re.findall(pattern, raster_path)
|
130
155
|
|
131
156
|
if case:
|
132
157
|
date = case[0]
|
133
158
|
# Convert date to format YYYY-MM-DDT00:00:00.000Z as datetime object
|
134
|
-
formatted_date = datetime.datetime.strptime(date,
|
159
|
+
formatted_date = datetime.datetime.strptime(date, "%Y%m%dT%H%M%S").strftime(
|
160
|
+
"%Y-%m-%dT%H:%M:%S.%fZ"
|
161
|
+
)
|
135
162
|
return formatted_date
|
136
|
-
|
163
|
+
|
137
164
|
return None
|
138
165
|
|
139
166
|
|
140
167
|
def extract_image_id_in_folder(raster_path: str, level: int):
|
168
|
+
"""
|
169
|
+
Extract the location id from the folder name of the image, given the level of the folder.
|
170
|
+
"""
|
141
171
|
return raster_path.split("/")[level]
|
142
172
|
|
143
173
|
|
144
|
-
def format_product_location_payload(
|
145
|
-
|
146
|
-
|
147
|
-
) -> dict:
|
174
|
+
def format_product_location_payload(
|
175
|
+
location_payload: dict, images_response: dict, all_info: bool = False
|
176
|
+
) -> dict:
|
148
177
|
"""
|
178
|
+
Format the location payload with the images response.
|
149
179
|
"""
|
150
|
-
for
|
180
|
+
for _, _ in location_payload.items():
|
151
181
|
# Add new key to the dictionary
|
152
182
|
if all_info:
|
153
|
-
location_payload[id][
|
183
|
+
location_payload[id]["image"] = (
|
184
|
+
images_response[id] if id in images_response else None
|
185
|
+
)
|
154
186
|
else:
|
155
|
-
location_payload[id][
|
187
|
+
location_payload[id]["image"] = (
|
188
|
+
images_response[id]["properties"]["id"] if images_response[id] else None
|
189
|
+
)
|
156
190
|
|
157
191
|
return location_payload
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: eotdl
|
3
|
-
Version: 2023.11.
|
3
|
+
Version: 2023.11.3.post2
|
4
4
|
Summary: Earth Observation Training Data Lab
|
5
5
|
License: MIT
|
6
6
|
Author: EarthPulse
|
@@ -12,11 +12,13 @@ Classifier: Programming Language :: Python :: 3.8
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.9
|
13
13
|
Classifier: Programming Language :: Python :: 3.10
|
14
14
|
Classifier: Programming Language :: Python :: 3.11
|
15
|
+
Requires-Dist: black (>=23.10.1,<24.0.0)
|
15
16
|
Requires-Dist: geomet (>=1.0.0,<2.0.0)
|
16
17
|
Requires-Dist: geopandas (>=0.13.2,<0.14.0)
|
18
|
+
Requires-Dist: mypy (>=1.6.1,<2.0.0)
|
17
19
|
Requires-Dist: pydantic (>=1.10.6,<2.0.0)
|
18
20
|
Requires-Dist: pyjwt (>=2.6.0,<3.0.0)
|
19
|
-
Requires-Dist: pystac (
|
21
|
+
Requires-Dist: pystac[validation] (==1.8.2)
|
20
22
|
Requires-Dist: pyyaml (>=6.0.1,<7.0.0)
|
21
23
|
Requires-Dist: rasterio (>=1.3.9,<2.0.0)
|
22
24
|
Requires-Dist: requests (>=2.28.2,<3.0.0)
|
@@ -27,7 +29,7 @@ Description-Content-Type: text/markdown
|
|
27
29
|
|
28
30
|
<p align="center">
|
29
31
|
<a href="https://www.eotdl.com/">
|
30
|
-
<img src="eotdl.png"
|
32
|
+
<img src="eotdl.png" alt="EOTDL" />
|
31
33
|
</a>
|
32
34
|
</p>
|
33
35
|
|
@@ -0,0 +1,84 @@
|
|
1
|
+
eotdl/__init__.py,sha256=JyoWMS0RH1JISCfn7O3JUM4EY_4a2Vbcc8a4JgM8SC8,29
|
2
|
+
eotdl/access/__init__.py,sha256=jbyjD7BRGJURlTNmtcbBBhw3Xk4EiZvkqmEykM-bJ1k,231
|
3
|
+
eotdl/access/airbus/__init__.py,sha256=G_kkRS9eFjXbQ-aehmTLXeAxh7zpAxz_rgB7J_w0NRg,107
|
4
|
+
eotdl/access/airbus/client.py,sha256=zjfgB_NTsCCIszoQesYkyLJgheKg-eTh28vbleXYxfw,12018
|
5
|
+
eotdl/access/airbus/parameters.py,sha256=Z8XIrxG5wAOuOoH-fkdKfdNMEMLFp6PaxJN7v4MefMI,1009
|
6
|
+
eotdl/access/airbus/utils.py,sha256=oh_N1Rn4fhcvUgNPpH2QzVvpe4bA0gqRgNguzRVqUps,652
|
7
|
+
eotdl/access/download.py,sha256=3LxfGbiZoPO2ReefKtscwnF5cMQdyLBfOnBDQA5xnlw,1568
|
8
|
+
eotdl/access/search.py,sha256=sO2hml6JLK30DncNUqTWq16zy9LvRiWC6wtt5bNRzrI,633
|
9
|
+
eotdl/access/sentinelhub/__init__.py,sha256=YpvaUBTRXM26WrXipo51ZUBCDv9WjRIdT8l1Pklpt_M,238
|
10
|
+
eotdl/access/sentinelhub/client.py,sha256=GW4Mr7CpKLWGiL64Fi-ktpB80aJDNFIZTHKNrscVViM,4098
|
11
|
+
eotdl/access/sentinelhub/evalscripts.py,sha256=uuLC6Km7IPssvM1xiIlLkx--TA1Ash159M4jov_I1Y4,4315
|
12
|
+
eotdl/access/sentinelhub/parameters.py,sha256=kZSVdq85UiZjIRDe81TJ8IpOSCeVIOlbDWA5u8Ylg8Q,2050
|
13
|
+
eotdl/access/sentinelhub/utils.py,sha256=XSDJD6Etg4Cg5D9dsXPbZnC09L4kWrQxTspGqY8LHs8,3305
|
14
|
+
eotdl/auth/__init__.py,sha256=OuGNfJQ-8Kymn4zIywlHQfImEO8DJMJIwOwTQm-u_dc,99
|
15
|
+
eotdl/auth/auth.py,sha256=voxwxTERghLQdqrBSyjZrgvKrcF01aWUTc0-vxLFFgY,1601
|
16
|
+
eotdl/auth/errors.py,sha256=E1lv3Igk--J-SOgNH18i8Xx9bXrrMyBSHKt_CAUmGPo,308
|
17
|
+
eotdl/auth/is_logged.py,sha256=QREuhkoDnarZoUZwCxVCNoESGb_Yukh0lJo1pXvrV9Q,115
|
18
|
+
eotdl/auth/logout.py,sha256=P_Sp6WmVvnG3R9V1L9541KNyHFko9DtQPqAKD2vaguw,161
|
19
|
+
eotdl/cli.py,sha256=QzqlUs2q_2fk-e0ZzXJSjgUPN68899z8VvwxpReYppI,448
|
20
|
+
eotdl/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
21
|
+
eotdl/commands/auth.py,sha256=WzA0aFGRoscy7fPKQTxiphBc0LJztJxBBl7rjDBRVfI,1544
|
22
|
+
eotdl/commands/datasets.py,sha256=XeDq-tJec-EmliocIXHPkg_1wBwCR2DJqxBxRbwjSGg,4473
|
23
|
+
eotdl/commands/models.py,sha256=7JPzjgxrnLLuj2c_D6RS2pc-m54MhmYIpGcob8pRJ_Q,4362
|
24
|
+
eotdl/curation/__init__.py,sha256=Qdp1cRR_wUYjnpyzGfyRFnL3X7aKtmgZQS8NNzPCc1s,269
|
25
|
+
eotdl/curation/stac/__init__.py,sha256=BGBDvW-IqcxhrxvLap2Ocj0nINYaqjgjzFuAipRcoa4,220
|
26
|
+
eotdl/curation/stac/assets.py,sha256=SuoUxbDkI-lqv89XpaE7YiyUkgC1ZWKRxi5r7dEGmGI,4510
|
27
|
+
eotdl/curation/stac/dataframe.py,sha256=sks5CcJAYaOUsnJYI30mbnXfkCvxmiLtsQPCnsUpDBI,5371
|
28
|
+
eotdl/curation/stac/dataframe_bck.py,sha256=PwAwol7kll0xYtlkhLeQ_Sc5TBQ85cVd6eyzdfTMJnE,8493
|
29
|
+
eotdl/curation/stac/dataframe_labeling.py,sha256=F22-4gpF9zFuCLqRva2XAyArOmGdrgGxXbgo9d54BFE,1520
|
30
|
+
eotdl/curation/stac/extensions/__init__.py,sha256=NSzKe14Iyr8Pm2AVg8RHxddtBD2so45--BRJmJd8bTs,629
|
31
|
+
eotdl/curation/stac/extensions/base.py,sha256=HDisHg43aC3tJjqKdJVyQMfXc0jLHZEVYrTve9lmZak,671
|
32
|
+
eotdl/curation/stac/extensions/dem.py,sha256=ecCLfg_izIjfWBvoKNl_WLNVuNqNiQWLaWxshNucTyY,370
|
33
|
+
eotdl/curation/stac/extensions/eo.py,sha256=cT4RrbyoimIuuOxNRLkamhZgHpDbj4z_Ziat2G2gTuA,4004
|
34
|
+
eotdl/curation/stac/extensions/label/__init__.py,sha256=R6xLkgJaZHoMh5BhpmueupWdM9NWKvmaRurum-ryU_s,159
|
35
|
+
eotdl/curation/stac/extensions/label/base.py,sha256=5xbniQWjzXkrQxxXp8v9QQxFQdRYnaFPBd5_in1QXUw,4069
|
36
|
+
eotdl/curation/stac/extensions/label/image_name_labeler.py,sha256=bivZN-qEtIXE6ehqwPKRsJO9RVckZ1lK2BG8ifUbaA8,8074
|
37
|
+
eotdl/curation/stac/extensions/label/scaneo.py,sha256=LPrebS3TUsKjy8tnV7yG_T3xI4iKlv5lg5YOfjpu3CQ,8721
|
38
|
+
eotdl/curation/stac/extensions/ml_dataset.py,sha256=SjOX_EvVRhwIUc4iQLw6YX_bG3VTqlRd9SpmpNCnRak,21429
|
39
|
+
eotdl/curation/stac/extensions/projection.py,sha256=ussVIwr_wOOhn07OmpAWY4qqbeAmYUxKjbE8onrAy7o,1236
|
40
|
+
eotdl/curation/stac/extensions/raster.py,sha256=o5U_1ow8BsgwZXpSQYwQIvMJldhyn7xoGoJmUANTJTE,1540
|
41
|
+
eotdl/curation/stac/extensions/sar.py,sha256=Akw3_5brY_x2yU094nSLbv0E6M9jnAeUC0Vo5fJDRME,1633
|
42
|
+
eotdl/curation/stac/extent.py,sha256=Jb3K4v59eu_h5t429r0762o0zG_LA50iEE-abWNL0e0,5108
|
43
|
+
eotdl/curation/stac/parsers.py,sha256=H5IukLA61mpLojeuhWNQdiZk2eiYHAfpJBFxmjdGDso,1529
|
44
|
+
eotdl/curation/stac/stac.py,sha256=9GdiB1mV8iyREvXZoJmNJKQGawWyK3h9Eu0hJX5u6O4,13180
|
45
|
+
eotdl/datasets/__init__.py,sha256=oFSUD0OLvUS4_iwu_V1iAQ_VAML-8RWDbxgtuFdU5ZA,170
|
46
|
+
eotdl/datasets/download.py,sha256=tgWCGhRfy8EtH_6Q6Hn8CHaKvIkPZ03iCW5_Aotrkok,3812
|
47
|
+
eotdl/datasets/ingest.py,sha256=Z-PFfSp1tO3z7cusADPrniOdbNpYqIPYpP74vpWrqJ8,4020
|
48
|
+
eotdl/datasets/metadata.py,sha256=L23_EziGVSDJ-WZbYUYNN22GrgbCdMGxwJhgK9uzW0U,390
|
49
|
+
eotdl/datasets/retrieve.py,sha256=DJz5K1bCLizg9YNwBnhHMFzcxMXar2socYkFONdSL4c,1041
|
50
|
+
eotdl/datasets/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
51
|
+
eotdl/datasets/usecases/datasets/DownloadFile.py,sha256=PoP0Dl2LBshKzbgArgxwxIVs-KT2IsfZKi0qSyiBsoI,936
|
52
|
+
eotdl/datasets/usecases/datasets/DownloadFileURL.py,sha256=6OcNuCys45MXu9-7GtES0zg2QmY02EAkj_P3cVKVUvo,603
|
53
|
+
eotdl/datasets/usecases/datasets/IngestDataset.py,sha256=d2H5nPXsEj-LhZpWGwNDSPs9uYNXRO2V07xsTFygQDc,953
|
54
|
+
eotdl/datasets/usecases/datasets/IngestLargeDataset.py,sha256=yRl4eqDCNPcmbU0rrtooWDq1OPpi88rSFSl8C4RE7oM,1424
|
55
|
+
eotdl/datasets/usecases/datasets/IngestLargeDatasetParallel.py,sha256=G6uVmpZLkn6lqUVQkjw0ne1xlBcJKHoJik4xLnlqd6o,1612
|
56
|
+
eotdl/datasets/usecases/datasets/IngestSTAC.py,sha256=QAMLSkMFlc-ic0JWaIdAf0SXPkYcawy-RJqfvDqTD7A,3075
|
57
|
+
eotdl/datasets/usecases/datasets/__init__.py,sha256=Tx4ISHtcjbu4KUVgjTac_pjpT0vsN-QpkIwtyx8xUYg,383
|
58
|
+
eotdl/files/__init__.py,sha256=wStggK9L_Ni3vdZkKtKmKVdAaZRVuiMbsjYBCrJ8rxs,53
|
59
|
+
eotdl/files/ingest.py,sha256=dlUuijXThWqbtDpJiF92diMdjkfu5SykwltyP_nd98M,6057
|
60
|
+
eotdl/models/__init__.py,sha256=fe1VfnlOxlfviphkkzaY4q8mkm0QxcdJxB3peScBZYk,108
|
61
|
+
eotdl/models/download.py,sha256=NaKpi2nB4tpVnLWaHanprnaD1JDhAj6hA9-SkN1kiJA,4339
|
62
|
+
eotdl/models/ingest.py,sha256=Zxv9oL5VOqPXgJgaOROt7v2twRPqzajllpP5ZgyNf3Q,1519
|
63
|
+
eotdl/models/metadata.py,sha256=L23_EziGVSDJ-WZbYUYNN22GrgbCdMGxwJhgK9uzW0U,390
|
64
|
+
eotdl/models/retrieve.py,sha256=-Ij7dT4J1p7MW4n13OlPB9OW4tBaBXPwk9dW8IuCZPc,664
|
65
|
+
eotdl/repos/APIRepo.py,sha256=tjvtr96d1fhnKEdGDmc90NrwBW7YVCtdsKLLtV82SBE,402
|
66
|
+
eotdl/repos/AuthAPIRepo.py,sha256=0ovz92NMOvQsOZOJ_shetO8wsS_80mBf-tDKVfwttH0,760
|
67
|
+
eotdl/repos/AuthRepo.py,sha256=6AWOdWgXKAVYJ2pB3Fj6X2KABoH2u-tpUyhEkNMWxX0,1001
|
68
|
+
eotdl/repos/DatasetsAPIRepo.py,sha256=2YYOIG_9Yx4D8H7L-HIGdMiIYA6QscCQ0yaJ5jKRLGg,4667
|
69
|
+
eotdl/repos/FilesAPIRepo.py,sha256=luln1RI8YviPLxkI-ZKlXn0y_eAYGKZdPVwOyz4vlV4,7626
|
70
|
+
eotdl/repos/ModelsAPIRepo.py,sha256=nYBaAmGlD4H7XMpeHMwx7GYacmIoWqfhH9PZ4sRfp90,1201
|
71
|
+
eotdl/repos/__init__.py,sha256=WvX5TP49k7yYb5dWWNjv5kzbdluO3dJ4LqjQxRIOUVc,222
|
72
|
+
eotdl/shared/__init__.py,sha256=mF7doJC8Z5eTPmB01UQvPivThZac32DRY33T6qshXfg,41
|
73
|
+
eotdl/shared/checksum.py,sha256=4IB6N9jRO0chMDNJzpdnFDhC9wcFF9bO5oHq2HodcHw,479
|
74
|
+
eotdl/tools/__init__.py,sha256=_p3n2dw3ulwyr1OlVw5d_jMV64cNYfajQMUbzFfvIpU,178
|
75
|
+
eotdl/tools/geo_utils.py,sha256=yZA100UH0pbH8T6wb9Kfv_VRDKYYtQDPTud3Ddkdsok,7320
|
76
|
+
eotdl/tools/metadata.py,sha256=RvNmoMdfEKoo-DzhEAqL-f9ZCjIe_bsdHQwACMk6w1E,1664
|
77
|
+
eotdl/tools/paths.py,sha256=yWhOtVxX4NxrDrrBX2fuye5N1mAqrxXFy_eA7dffd84,1152
|
78
|
+
eotdl/tools/stac.py,sha256=ovXdrPm4Sn9AAJmrP88WnxDmq2Ut-xPoscjphxz3Iyo,5763
|
79
|
+
eotdl/tools/time_utils.py,sha256=qJ3-rk1I7ne722SLfAP6-59kahQ0vLQqIf9VpOi0Kpg,4691
|
80
|
+
eotdl/tools/tools.py,sha256=ESmvh-gCyWHmXsOdqtB70EmdRK_Vzap6kVOuYmlp5gw,6353
|
81
|
+
eotdl-2023.11.3.post2.dist-info/METADATA,sha256=fcl9zAZLMuQ6l_I7uJn_fq0Mt_qMPlKpPl8sIivLyTc,3998
|
82
|
+
eotdl-2023.11.3.post2.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
|
83
|
+
eotdl-2023.11.3.post2.dist-info/entry_points.txt,sha256=s6sfxUfRrSX2IP2UbrzTFTvRCtLgw3_OKcHlOKf_5F8,39
|
84
|
+
eotdl-2023.11.3.post2.dist-info/RECORD,,
|
@@ -1,84 +0,0 @@
|
|
1
|
-
eotdl/__init__.py,sha256=9DvpaznPuqeogwAsdPVevf8C8syVQvDkm_9Lwu4OJ_I,29
|
2
|
-
eotdl/access/__init__.py,sha256=OFdCDemao6Ez1w18-ydQ8G_CqeQ8h43hFcdsJcq2UKI,208
|
3
|
-
eotdl/access/airbus/__init__.py,sha256=KdVilLghjjs_EEMGlbZntveRR7yA6pg_CdV04ulZWiQ,75
|
4
|
-
eotdl/access/airbus/client.py,sha256=thVIfCscsrOp6l2uizY6Fai4Jk4e_r-2luyr15YAxn0,11017
|
5
|
-
eotdl/access/airbus/parameters.py,sha256=vwv8Nga-LS_kyXzFhSYsQkbtCPL2Z6ym_aHV9cEoBxI,851
|
6
|
-
eotdl/access/airbus/utils.py,sha256=plDycaeGTK0U89A4e-zMJmQRl2sbqBKQeryJgn9vNrU,564
|
7
|
-
eotdl/access/download.py,sha256=2bPKuFrcvc9Ch6ps93178c-9tCc_uVbHtIhNTvFaIRg,1654
|
8
|
-
eotdl/access/search.py,sha256=RCTQfwkaZLFK9CXheAEtq0E91cKjH_VJzBUESEixaME,621
|
9
|
-
eotdl/access/sentinelhub/__init__.py,sha256=N0tYM8M5aNtCYwM5CqQJmvpH19SKGQDAursK6TambNc,195
|
10
|
-
eotdl/access/sentinelhub/client.py,sha256=B6ABWtu_0NQ_8oaTPS4RtxGNWMVEtpm9QqSwQz6_kjk,4329
|
11
|
-
eotdl/access/sentinelhub/evalscripts.py,sha256=1nkadlHDjdsoqfRC0K4aY_Xax1X9oQ8Zqjnv-KZmL2Y,4362
|
12
|
-
eotdl/access/sentinelhub/parameters.py,sha256=ZB4WLVVUStmVk9QR2F1FK5BMkS7GTbSYNlJfFfC_DI0,1878
|
13
|
-
eotdl/access/sentinelhub/utils.py,sha256=CqApkUxXKDLJOqGMbyrBaHMgy0A6YVm2SBHP6MLdoIM,3279
|
14
|
-
eotdl/auth/__init__.py,sha256=OuGNfJQ-8Kymn4zIywlHQfImEO8DJMJIwOwTQm-u_dc,99
|
15
|
-
eotdl/auth/auth.py,sha256=voxwxTERghLQdqrBSyjZrgvKrcF01aWUTc0-vxLFFgY,1601
|
16
|
-
eotdl/auth/errors.py,sha256=PpnFU2DvnRo8xrM77wgskKi0tfEJ1Rhle4xv2RD1qpk,306
|
17
|
-
eotdl/auth/is_logged.py,sha256=QREuhkoDnarZoUZwCxVCNoESGb_Yukh0lJo1pXvrV9Q,115
|
18
|
-
eotdl/auth/logout.py,sha256=P_Sp6WmVvnG3R9V1L9541KNyHFko9DtQPqAKD2vaguw,161
|
19
|
-
eotdl/cli.py,sha256=QzqlUs2q_2fk-e0ZzXJSjgUPN68899z8VvwxpReYppI,448
|
20
|
-
eotdl/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
21
|
-
eotdl/commands/auth.py,sha256=rcHObEkDfdGzcWtDnBV3-V9PudXxWpUdv0fRyDc70W0,1547
|
22
|
-
eotdl/commands/datasets.py,sha256=XeDq-tJec-EmliocIXHPkg_1wBwCR2DJqxBxRbwjSGg,4473
|
23
|
-
eotdl/commands/models.py,sha256=7JPzjgxrnLLuj2c_D6RS2pc-m54MhmYIpGcob8pRJ_Q,4362
|
24
|
-
eotdl/curation/__init__.py,sha256=n_zpB3byU4Dg5R33eyIMmMUBAyze_meopR-FjGbNM-Q,243
|
25
|
-
eotdl/curation/stac/__init__.py,sha256=MYeO3zfiLrou6oxSHBujyJtfDefYt6xDHU7Y6-ujMjA,198
|
26
|
-
eotdl/curation/stac/assets.py,sha256=Ejdm_vjrcyo7KplaPrxHLZDApirshFGdze6cdq9V7fE,4284
|
27
|
-
eotdl/curation/stac/dataframe.py,sha256=OUHEaZBvQGMzovHBJ44aFTeU-v3YQLaSLWzdJ8OQT68,5307
|
28
|
-
eotdl/curation/stac/dataframe_bck.py,sha256=0sMc00gnYNp58ShEGvXWbBh_5QOSpvKKYA0bKC5fFL4,8495
|
29
|
-
eotdl/curation/stac/dataframe_labeling.py,sha256=ZXl5edYHyKAjJDxsQyNXprJcnrPZyz9yzU0zHTgk99o,1414
|
30
|
-
eotdl/curation/stac/extensions/__init__.py,sha256=I3IspniNTkgeyLHdR9a_-kuXZm6TpH92b4dpWafh1Rk,596
|
31
|
-
eotdl/curation/stac/extensions/base.py,sha256=W9fPMmHtxMQ15QHIfv36O_mVmdOrPo67ljsKH_dzjv0,605
|
32
|
-
eotdl/curation/stac/extensions/dem.py,sha256=GtDPNuOc_-Qxw1kJJgirGGRzZqk7hJTWHWVc7tKRV-I,323
|
33
|
-
eotdl/curation/stac/extensions/eo.py,sha256=aiN5YTNPvyC4kid0gQYzJK5MYAeUe40YmGcU9PfxHQ4,3965
|
34
|
-
eotdl/curation/stac/extensions/label/__init__.py,sha256=1MDoAAm9Va4eRkFALwzFTQ5CcWbIN25KSnjL6k75nSQ,121
|
35
|
-
eotdl/curation/stac/extensions/label/base.py,sha256=n914NVhtH7FTMmmhPIFbJh0n1wJasVgxTrvgSUMxP3c,4063
|
36
|
-
eotdl/curation/stac/extensions/label/image_name_labeler.py,sha256=ZhUG5njBSCeo17SC0_LCdNnYxVPvqSNuFGTrWd_XtUI,7922
|
37
|
-
eotdl/curation/stac/extensions/label/scaneo.py,sha256=C_3azPqN3QzMWNGJcrxt0wKO_14YFKL5D6bg83pSPqs,8757
|
38
|
-
eotdl/curation/stac/extensions/ml_dataset.py,sha256=HKtszM6nl-rI5PQHgdgYdho9v3w2SIPJHb-VCe2pMe4,19222
|
39
|
-
eotdl/curation/stac/extensions/projection.py,sha256=NZndrCnqa_0PWtfcTAFbXjkpO83Szj2fldaUAMWM7Jc,1200
|
40
|
-
eotdl/curation/stac/extensions/raster.py,sha256=UD6cTtb4HTILw5iie1xvl7b0SmypxzyRyamFlf1YZXo,1399
|
41
|
-
eotdl/curation/stac/extensions/sar.py,sha256=_1a9MWA7YElem6u1z9ynjdfLWaeI6J8qwF8yDRqr3XI,1582
|
42
|
-
eotdl/curation/stac/extent.py,sha256=6RMaiZ9d_iDHrewldmRZ_g6h4hh_smEawvS_9QslDYI,4941
|
43
|
-
eotdl/curation/stac/parsers.py,sha256=KumL2ieBt0ATGgKoGyc-AJ99zSMeLD4-tI5MF9ruYPw,1380
|
44
|
-
eotdl/curation/stac/stac.py,sha256=Rm5ogUxj3xLqZon4ub2VmXJfyjfim7ul-PMQe6rRTOo,13353
|
45
|
-
eotdl/datasets/__init__.py,sha256=GIfgqrFq1LblG8qT1zNthm28drw1faLAenGbKjX0rdw,174
|
46
|
-
eotdl/datasets/download.py,sha256=SBUsYqnKahw4MMOSzT2pxX5bDD1f1wAu31ovtuQu4Fo,4381
|
47
|
-
eotdl/datasets/ingest.py,sha256=oQ3KycGXRC8qBiV4VFfdyDfQn2HP86RAx78ZiM2MKf8,1792
|
48
|
-
eotdl/datasets/metadata.py,sha256=L23_EziGVSDJ-WZbYUYNN22GrgbCdMGxwJhgK9uzW0U,390
|
49
|
-
eotdl/datasets/retrieve.py,sha256=DJz5K1bCLizg9YNwBnhHMFzcxMXar2socYkFONdSL4c,1041
|
50
|
-
eotdl/datasets/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
51
|
-
eotdl/datasets/usecases/datasets/DownloadFile.py,sha256=PoP0Dl2LBshKzbgArgxwxIVs-KT2IsfZKi0qSyiBsoI,936
|
52
|
-
eotdl/datasets/usecases/datasets/DownloadFileURL.py,sha256=6OcNuCys45MXu9-7GtES0zg2QmY02EAkj_P3cVKVUvo,603
|
53
|
-
eotdl/datasets/usecases/datasets/IngestDataset.py,sha256=d2H5nPXsEj-LhZpWGwNDSPs9uYNXRO2V07xsTFygQDc,953
|
54
|
-
eotdl/datasets/usecases/datasets/IngestLargeDataset.py,sha256=yRl4eqDCNPcmbU0rrtooWDq1OPpi88rSFSl8C4RE7oM,1424
|
55
|
-
eotdl/datasets/usecases/datasets/IngestLargeDatasetParallel.py,sha256=G6uVmpZLkn6lqUVQkjw0ne1xlBcJKHoJik4xLnlqd6o,1612
|
56
|
-
eotdl/datasets/usecases/datasets/IngestSTAC.py,sha256=QAMLSkMFlc-ic0JWaIdAf0SXPkYcawy-RJqfvDqTD7A,3075
|
57
|
-
eotdl/datasets/usecases/datasets/__init__.py,sha256=Tx4ISHtcjbu4KUVgjTac_pjpT0vsN-QpkIwtyx8xUYg,383
|
58
|
-
eotdl/files/__init__.py,sha256=71KfzCidZzFV82Zmc2GRxXzpB9sZKGI95lBxySRxbPY,33
|
59
|
-
eotdl/files/ingest.py,sha256=52wI8CQm4LVCH3j9FnIZtjHzFY5zofxxSsZlWv4MPaU,6000
|
60
|
-
eotdl/models/__init__.py,sha256=fe1VfnlOxlfviphkkzaY4q8mkm0QxcdJxB3peScBZYk,108
|
61
|
-
eotdl/models/download.py,sha256=hWFEuJUZsjYnSDixMkHgmYDwxNMJEQ13-AJQPnyZOiY,4340
|
62
|
-
eotdl/models/ingest.py,sha256=Zxv9oL5VOqPXgJgaOROt7v2twRPqzajllpP5ZgyNf3Q,1519
|
63
|
-
eotdl/models/metadata.py,sha256=L23_EziGVSDJ-WZbYUYNN22GrgbCdMGxwJhgK9uzW0U,390
|
64
|
-
eotdl/models/retrieve.py,sha256=-Ij7dT4J1p7MW4n13OlPB9OW4tBaBXPwk9dW8IuCZPc,664
|
65
|
-
eotdl/repos/APIRepo.py,sha256=tjvtr96d1fhnKEdGDmc90NrwBW7YVCtdsKLLtV82SBE,402
|
66
|
-
eotdl/repos/AuthAPIRepo.py,sha256=T-TPDjZa1u-JnUsKoKp-T9x__L0aUfLUUdP7xZFV_hI,770
|
67
|
-
eotdl/repos/AuthRepo.py,sha256=6AWOdWgXKAVYJ2pB3Fj6X2KABoH2u-tpUyhEkNMWxX0,1001
|
68
|
-
eotdl/repos/DatasetsAPIRepo.py,sha256=HQh4PCS9zP6zPK86lsfUX08jhKIlOKUOswZaROVMkYY,9979
|
69
|
-
eotdl/repos/FilesAPIRepo.py,sha256=WgGTyYljlSFxD8-0BePEwdks6voVy5rPjqdTruc31MQ,10924
|
70
|
-
eotdl/repos/ModelsAPIRepo.py,sha256=6PDn1eHb0g3dVyQyB5aEGnIlWi9Ez8Vlnj4A_QL3Ea8,1211
|
71
|
-
eotdl/repos/__init__.py,sha256=WvX5TP49k7yYb5dWWNjv5kzbdluO3dJ4LqjQxRIOUVc,222
|
72
|
-
eotdl/shared/__init__.py,sha256=mF7doJC8Z5eTPmB01UQvPivThZac32DRY33T6qshXfg,41
|
73
|
-
eotdl/shared/checksum.py,sha256=4IB6N9jRO0chMDNJzpdnFDhC9wcFF9bO5oHq2HodcHw,479
|
74
|
-
eotdl/tools/__init__.py,sha256=keLICmgtaXy3rc6oOHNDli8H9YHFhElTg2GtF8Vb-eM,136
|
75
|
-
eotdl/tools/geo_utils.py,sha256=vrTOq456Ck-qZiFT1mYM2cnlacm-4Q8D_dPadsqr_NY,7153
|
76
|
-
eotdl/tools/metadata.py,sha256=YzXyOHfF3j6c_Az6RRgIHEI9n69vOI2DvYaMmLNatSU,1658
|
77
|
-
eotdl/tools/paths.py,sha256=IEzfpjadd3KnwOQ6F_1vBRyxnm12QcD1TboPRd-I15w,1166
|
78
|
-
eotdl/tools/stac.py,sha256=cqv9Dc2uUnonMKF6MP9C5h9fHs-oENjgmcnRJNRWNgA,5937
|
79
|
-
eotdl/tools/time_utils.py,sha256=pb8h4bCQTTarNHq38UfjNotefm5l4qGjpYBENzzcqHY,4212
|
80
|
-
eotdl/tools/tools.py,sha256=x2UFa5wHunX4qn3lqZYP0BtPHZB-w3dMwK1fac8LUhI,6100
|
81
|
-
eotdl-2023.11.2.post5.dist-info/METADATA,sha256=JN-7QqoIw6AI3pn8DJrUYvaD-EiG_zeZwerKbQTXFJU,3929
|
82
|
-
eotdl-2023.11.2.post5.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
|
83
|
-
eotdl-2023.11.2.post5.dist-info/entry_points.txt,sha256=s6sfxUfRrSX2IP2UbrzTFTvRCtLgw3_OKcHlOKf_5F8,39
|
84
|
-
eotdl-2023.11.2.post5.dist-info/RECORD,,
|
File without changes
|
File without changes
|