hoàn thành chức năng remove cloud train
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
"""
|
||||
Test Microsoft Planetary Computer connectivity và token
|
||||
"""
|
||||
import planetary_computer
|
||||
from pystac_client import Client
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
print("=" * 70)
|
||||
print("🧪 TESTING MICROSOFT PLANETARY COMPUTER CONNECTION")
|
||||
print("=" * 70)
|
||||
|
||||
# Test 1: Basic connection
|
||||
print("\n1️⃣ Testing basic connection...")
|
||||
try:
|
||||
catalog = Client.open(
|
||||
"https://planetarycomputer.microsoft.com/api/stac/v1",
|
||||
modifier=planetary_computer.sign_inplace,
|
||||
)
|
||||
print("✅ Successfully connected to Planetary Computer")
|
||||
print(f" Catalog ID: {catalog.id}")
|
||||
print(f" Title: {catalog.title}")
|
||||
except Exception as e:
|
||||
print(f"❌ Connection failed: {e}")
|
||||
exit(1)
|
||||
|
||||
# Test 2: List collections
|
||||
print("\n2️⃣ Testing collections access...")
|
||||
try:
|
||||
collections = list(catalog.get_collections())
|
||||
print(f"✅ Found {len(collections)} collections")
|
||||
sentinel_2 = [c for c in collections if 'sentinel-2' in c.id.lower()]
|
||||
print(f" Sentinel-2 collections: {[c.id for c in sentinel_2]}")
|
||||
except Exception as e:
|
||||
print(f"❌ Collections access failed: {e}")
|
||||
|
||||
# Test 3: Small search query (very conservative)
|
||||
print("\n3️⃣ Testing small search query...")
|
||||
try:
|
||||
# Tiny bbox in Vietnam
|
||||
bbox = [105.8, 10.0, 105.9, 10.1] # ~10km x 10km area
|
||||
end_date = datetime.now()
|
||||
start_date = end_date - timedelta(days=7) # Last 7 days only
|
||||
|
||||
time_range = f"{start_date.strftime('%Y-%m-%d')}/{end_date.strftime('%Y-%m-%d')}"
|
||||
|
||||
print(f" Bbox: {bbox}")
|
||||
print(f" Time: {time_range}")
|
||||
print(f" Searching...")
|
||||
|
||||
search = catalog.search(
|
||||
collections=["sentinel-2-l2a"],
|
||||
bbox=bbox,
|
||||
datetime=time_range,
|
||||
limit=5 # Only 5 items
|
||||
)
|
||||
|
||||
items = []
|
||||
for i, item in enumerate(search.items()):
|
||||
items.append(item)
|
||||
if i >= 4: # Stop at 5
|
||||
break
|
||||
|
||||
print(f"✅ Search successful! Found {len(items)} items")
|
||||
if items:
|
||||
first_item = items[0]
|
||||
print(f" First item: {first_item.id}")
|
||||
print(f" Date: {first_item.datetime}")
|
||||
|
||||
# Test token signing
|
||||
signed_item = planetary_computer.sign(first_item)
|
||||
print(f"✅ SAS token signing works")
|
||||
print(f" Asset keys: {list(signed_item.assets.keys())[:5]}")
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Search failed: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
print("\n" + "=" * 70)
|
||||
print("🏁 Test completed!")
|
||||
print("=" * 70)
|
||||
print("\n💡 Nếu test này PASS:")
|
||||
print(" → Planetary Computer hoạt động bình thường")
|
||||
print(" → Vấn đề là query quá lớn (bbox/time range/max_scenes)")
|
||||
print("\n💡 Nếu test này FAIL:")
|
||||
print(" → Kiểm tra internet connection")
|
||||
print(" → Thử lại sau (server có thể bị quá tải)")
|
||||
print(" → Xem xét dùng dữ liệu local")
|
||||
Reference in New Issue
Block a user