Geospatial Arsenal (location + project geo-placement)
Geospatial toolkit: extract/infer location from images/videos/maps, convert coordinates between CRS, and place engineering projects on global coordinates with Google Earth (KML/KMZ) export. Built for methodology site-tagging + dropping designs/models/plans onto their real-world location.
Two engines
1) geolocate.py — where is this?
bash
. /data/.openclaw/secrets/env.sh
python3 skills/geospatial-arsenal/geolocate.py exif photo.jpg # GPS from photo EXIF
python3 skills/geospatial-arsenal/geolocate.py video clip.mp4 # GPS from video metadata (ffprobe)
python3 skills/geospatial-arsenal/geolocate.py infer photo.jpg # infer location via Gemini Vision (best-effort)
python3 skills/geospatial-arsenal/geolocate.py geocode "Avcılar, Istanbul"
python3 skills/geospatial-arsenal/geolocate.py geocode "40.99,28.71" --reverse
2) project_geo.py — put the project on the map
bash
python3 skills/geospatial-arsenal/project_geo.py convert 644000 4538000 --src 32635 --dst 4326 # UTM<->WGS84
python3 skills/geospatial-arsenal/project_geo.py point 40.994 28.710 --name "Site" --out site.kml
python3 skills/geospatial-arsenal/project_geo.py footprint "lon,lat;lon,lat;..." --name Bldg --out b.kmz --kmz --height 30
python3 skills/geospatial-arsenal/project_geo.py route "lon,lat;lon,lat;..." --name Pipeline --out r.kml
python3 skills/geospatial-arsenal/project_geo.py overlay plan.png "north,south,east,west" --out plan.kmz
overlay = drop a building/bridge/infra/network plan onto Google Earth at its real coordinates.Verified (2026-06-05)
- geocode Avcılar → 40.98,28.72 · reverse Wael's coords → "Üniversite Mah., Avcılar 34320" (matches property file) ✅
- exif safe no-GPS handling ✅
- convert UTM 32635 → WGS84 (28.71,40.98) ✅
- point/footprint(3D)/overlay → valid KML/KMZ (OGC namespace, opens in Google Earth) ✅
Stack
exifread · pyproj (CRS) · geopy/Nominatim (free geocoding) · simplekml 1.3.2 · shapely/geopandas/rasterio · folium · utm · ffprobe · Mapbox token. CRS hints: Kuwait UTM EPSG:32638/39 · Istanbul UTM EPSG:32635 · WGS84 EPSG:4326.Workflow (engineering)
1. Methodology: tag project site (geolocate geocode / photo exif).
2. After 3D modelling (Pascal/APS): project_geo footprint/route --height → KMZ.
3. Drop design plan with overlay → opens in Google Earth at real location.Notes
infermode = best-effort, NOT precise. EXIF/video GPS authoritative when present.- Nominatim: respect rate limits (1 req/s).
🛰️ صور الأقمار الصناعية الحديثة — satellite.py (أحدث من Google Earth)
bash
. /data/.openclaw/secrets/env.sh
python3 skills/geospatial-arsenal/satellite.py mapbox 40.994 28.710 --zoom 17 --out site.jpg # high-res (Maxar/Mapbox)
python3 skills/geospatial-arsenal/satellite.py gibs 40.994 28.710 --date 2026-06-04 # NASA daily near-live
python3 skills/geospatial-arsenal/satellite.py links 40.994 28.710 # all sources incl. ESA browser
المصادر (مُتحقّقة حياً 2026-06-05):
- ✅ Mapbox Satellite (token جاهز): دقة عالية Maxar — verified بصرياً (أفجلار حضري كثيف).
- ✅ NASA GIBS (مجاني بلا مفتاح): صور يومية true-color (MODIS/VIIRS) — للحالة العامة near-live.
- ✅ ESA Copernicus Browser (مجاني): Sentinel-2 10m ~5-day dated — رابط جاهز في
links.
ترقيات (تحتاج مفاتيح — غير مفعّلة الآن):
- Sentinel-2 API: SENTINELHUB_CLIENT_ID/SECRET (مجاني بعد تسجيل dataspace.copernicus.eu) → 10m مؤرّخ برمجياً.
- Planet: PLANET_API_KEY → PlanetScope 3m يومي · SkySat 50cm tasking (الأحدث/الأدق لحالة الموقع بيوم محدد).
---
🌍 Planet (PlanetScope 3m daily / SkySat 50cm) — planet_imagery.py ✅ مفتاح مُتحقّق حي
bash
. /data/.openclaw/secrets/env.sh
python3 skills/geospatial-arsenal/planet_imagery.py search 40.994 28.710 --since 2026-05-20 --cloud 0.15
python3 skills/geospatial-arsenal/planet_imagery.py search 40.994 28.710 --item SkySatScene # 50cm
python3 skills/geospatial-arsenal/planet_imagery.py thumb <scene_id> --item PSScene --out scene.png
✅ مُتحقّق حياً 2026-06-05:
- PLANET_API_KEY = PLAK…157a (HTTP 200). search أفجلار: 16 مشهد، أحدثها أمس 2026-06-04 سحب 6%.
- thumb: نزّل صورة PlanetScope 512×512 — verified بصرياً (حضري + مطار + مسطح مائي، 3م).
- هذا أحدث بكثير من Google Earth (يومي vs سنوات). للموقع بيوم محدد: PlanetScope daily.
المصادر الكاملة لصور المواقع (مرتّبة بالأحدث/الأدق):
1. Planet SkySat (50cm، tasking) — الأدق، عند الحاجة. 2. Planet PlanetScope (3m، يومي) — ✅ مفتاح جاهز، الأفضل للمتابعة اليومية. 3. Mapbox Satellite (Maxar high-res أرشيفي) — ✅ جاهز. 4. Sentinel-2 (10m، ~5-day، مجاني) — عبر Copernicus (د. وائل فتح حساب — يحتاج SENTINELHUB_CLIENT_ID/SECRET أو CDSE OAuth). 5. NASA GIBS (يومي خشن، مجاني) — ✅ جاهز.---
🛰️ Sentinel-2 (10m, مجاني) — sentinel.py ✅ OAuth مُتحقّق حي 2026-06-05
bash
. /data/.openclaw/secrets/env.sh
python3 skills/geospatial-arsenal/sentinel.py search "28.69,40.98,28.72,41.00" --start 2026-05-25 --end 2026-06-05 --cloud 30
python3 skills/geospatial-arsenal/sentinel.py image "28.69,40.98,28.72,41.00" --date 2026-06-05 --out scene.png
- ✅ OAuth token (Copernicus CDSE) + search (6 صور، أحدثها اليوم) + image true-color → verified بصرياً (أفجلار حضري).
- bbox = west,south,east,north (WGS84). صور مؤرّخة، ~5-day revisit، 10m.
🎯 الترسانة الجيومكانية كاملة الآن (كل المصادر مفعّلة + مُتحقّقة):
| المصدر | الدقة | التحديث | الحالة | |---|---|---|---| | Planet SkySat | 50cm | tasking | ✅ مفتاح | | Planet PlanetScope | 3m | يومي | ✅ مفتاح + verified | | Mapbox (Maxar) | high-res | أرشيفي | ✅ verified | | Sentinel-2 | 10m | ~5-day مؤرّخ | ✅ OAuth verified | | Landsat 8/9 | 30m | ~8-16 يوم مؤرّخ | ✅ free, no key (USGS) | | NASA GIBS | خشن | يومي | ✅ مجاني |🛰️ Landsat 8/9 (30m, مجاني، USGS/NASA) — landsat.py ✅ مُتحقّق حياً 2026-06-08
مصدر مستقل تماماً عن Sentinel (ESA) — قمر مختلف (NASA/USGS). مثالي للمقارنة وتأكيد النتائج (cross-verification) واختيار الأفضل. أرشيف منذ 1972. بلا مفتاح.
bash
بحث: مشاهد Landsat مؤرّخة عند bbox (للمقارنة الزمنية + التأكد)
/usr/bin/python3 skills/geospatial-arsenal/landsat.py search --bbox 28.70 40.99 28.72 41.00 --start 2026-04-01 --end 2026-06-08 --max-cloud 30 --n 5
معاينة: روابط عرض عامة (LandsatLook viewer + STAC item) لمشهد محدد
/usr/bin/python3 skills/geospatial-arsenal/landsat.py preview --id LC09_L2SP_180032_20260507_02_T1
- STAC:
https://earth-search.aws.element84.com/v1(collectionlandsat-c2-l2) — مجاني بلا مفتاح. - قوة Landsat عندنا = كتالوج مشاهد مؤرّخ مستقل للتحقق المتبادل + الـ bands الكاملة (red/green/blue/nir/swir COGs) للمعالجة.
- ⚠️ صور الـ thumbnail بكسلية في bucket S3 requester-pays (تحتاج AWS auth)؛ للعرض البصري استخدم رابط LandsatLook viewer من
preview، أو Sentinel/Mapbox للصورة الجاهزة.