yvokeller commited on
Commit
85a3285
·
1 Parent(s): 6a6a25d

switch to secure AWS S3 signed urls; loading all tifs from S3

Browse files
Files changed (3) hide show
  1. .gitignore +2 -1
  2. inference.py +23 -4
  3. requirements.txt +1 -0
.gitignore CHANGED
@@ -3,4 +3,5 @@ __pycache__
3
  .DS_Store
4
  data/*
5
  !data/dataset_info.json
6
- !data/chips_stats.yaml
 
 
3
  .DS_Store
4
  data/*
5
  !data/dataset_info.json
6
+ !data/chips_stats.yaml
7
+ .env
inference.py CHANGED
@@ -11,9 +11,14 @@ import numpy as np
11
  from rasterio.features import shapes
12
  from shapely.geometry import shape
13
  import geopandas as gpd
 
 
14
 
15
  from messis.messis import LogConfusionMatrix
16
 
 
 
 
17
  class InferenceDataLoader:
18
  def __init__(self, features_path, labels_path, field_ids_path, stats_path, window_size=224, n_timesteps=3, fold_indices=None, debug=False):
19
  self.features_path = features_path
@@ -198,11 +203,25 @@ def crop_predictions_to_gdf(field_ids, targets, predictions, transform, crs, cla
198
 
199
  return gdf
200
 
201
- def perform_inference(lon, lat, model, config, debug=False):
202
- features_path = "https://messis-demo.s3.amazonaws.com/stacked_features_cog.tif?AWSAccessKeyId=AKIA3FRRI6ANTH5QNBPK&Signature=QAQhG6chOCMP2s3bTDEw3SWeTz8%3D&Expires=1723669590"
203
- labels_path = "https://messis-demo.s3.amazonaws.com/labels_cog.tif?AWSAccessKeyId=AKIA3FRRI6ANTH5QNBPK&Signature=09%2BDmxVaT3Kd0sYL4Y%2FheatH93w%3D&Expires=1723669590"
204
- field_ids_path = "https://messis-demo.s3.amazonaws.com/field_ids_cog.tif?AWSAccessKeyId=AKIA3FRRI6ANTH5QNBPK&Signature=C242sw0VzpNDvDRfoNgflPT8Mb4%3D&Expires=1723669590"
 
205
 
 
 
 
 
 
 
 
 
 
 
 
 
 
206
  stats_path = "./data/chips_stats.yaml"
207
  dataset_info_path = "./data/dataset_info.json"
208
 
 
11
  from rasterio.features import shapes
12
  from shapely.geometry import shape
13
  import geopandas as gpd
14
+ import boto3
15
+ from dotenv import load_dotenv
16
 
17
  from messis.messis import LogConfusionMatrix
18
 
19
+ # Load environment variables from .env file
20
+ load_dotenv()
21
+
22
  class InferenceDataLoader:
23
  def __init__(self, features_path, labels_path, field_ids_path, stats_path, window_size=224, n_timesteps=3, fold_indices=None, debug=False):
24
  self.features_path = features_path
 
203
 
204
  return gdf
205
 
206
+ def generate_presigned_url(bucket_name, object_key, expiration=3600):
207
+ """Generate a pre-signed URL for an S3 object."""
208
+ s3_client = boto3.client('s3', region_name='eu-central-1')
209
+ presigned_url = s3_client.generate_presigned_url('get_object', Params={'Bucket': bucket_name, 'Key': object_key}, ExpiresIn=expiration)
210
+ return presigned_url
211
 
212
+ def perform_inference(lon, lat, model, config, debug=False):
213
+ # Bucket and object paths
214
+ bucket_name = 'messis-demo'
215
+ features_key = 'stacked_features_cog.tif'
216
+ labels_key = 'labels_cog.tif'
217
+ field_ids_key = 'field_ids_cog.tif'
218
+
219
+ # Generate pre-signed URLs for the GeoTIFF files
220
+ features_path = generate_presigned_url(bucket_name, features_key)
221
+ labels_path = generate_presigned_url(bucket_name, labels_key)
222
+ field_ids_path = generate_presigned_url(bucket_name, field_ids_key)
223
+
224
+ # Local paths for stats and dataset info
225
  stats_path = "./data/chips_stats.yaml"
226
  dataset_info_path = "./data/dataset_info.json"
227
 
requirements.txt CHANGED
@@ -20,3 +20,4 @@ numpy==1.26.4
20
  lion-pytorch==0.2.2
21
  timm==0.9.16
22
  pyproj
 
 
20
  lion-pytorch==0.2.2
21
  timm==0.9.16
22
  pyproj
23
+ boto3