baremetal-int/shadow-geolocate

GitHub: baremetal-int/shadow-geolocate

利用阴影方向与太阳几何关系进行照片/视频地理定位推断的开源工具,支持城市体积模拟与 EXIF 交叉验证。

Stars: 0 | Forks: 0

# shadow-geolocate [![ci](https://static.pigsec.cn/wp-content/uploads/repos/cas/99/993938d8ce5e902ccfb9d6747725c320d855dea3235ed9a304cedf0d94c9321f.svg)](https://github.com/baremetal-int/shadow-geolocate/actions/workflows/ci.yml) [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) ![python](https://img.shields.io/badge/python-3.12-blue.svg) 基于阴影和太阳几何的地理位置推断,并提供城市体积支持。 验证社区的链接。其中最有价值的文件是 [`docs/limits.md`](docs/limits.md) —— 记录了每种方法失效的场景。 ``` src/shadow_geolocate/ solar.py azimuth, elevation (pysolar / suncalc) urban.py Shadowmap / ShadeMap integration horizon.py horizon-line validation exif.py EXIF cross-check video.py ffmpeg decomposition, mosaicking docs/limits.md <- read this first ``` ## 功能及其适用范围 在自然地形和宏观尺度下,平坦的太阳几何是可靠的。在 城市峡谷中,建筑物的高度会扭曲投影,导致几何计算产生偏差。 `docs/limits.md` 说明了密度阈值,超过该阈值时你必须转而使用 体积模拟,以及任何方法都完全失效的情况:阴天、 漫反射阴影、至日歧义。 ## 安装 ``` pip install -e ".[dev]" # core (numpy + pyyaml) plus test/lint tooling ``` 分析核心在导入时仅依赖 `numpy` 和 `pyyaml`。繁重的操作 后端(pysolar, piexif/exifread, ffmpeg-python, rasterio, shapely, geopandas) 位于 `full` extra 中,并在使用它们的函数内部进行懒加载: ``` pip install -e ".[full]" # volumetric ShadeMap, EXIF/GPS parsing, ffmpeg ``` ## 快速入门 获取特定地点和 UTC 时间的太阳方位角/高度角,以及其投射的阴影: ``` python -c "import datetime as dt; from shadow_geolocate import solar, urban; \ p = solar.solar_position(45.0, 0.0, solar.solar_noon_utc(0.0, dt.date(2023,3,20))); \ print(round(p.azimuth,1), round(p.elevation,1), round(urban.shadow_length(10.0, p.elevation),2))" # -> 180.0 44.5 10.16 (正南方向,向上约 45 度,一根 10 m 的桅杆投射出约 10 m 的阴影) ``` 根据照片声称的阴影方位与其 EXIF 时间和 GPS 进行交叉验证: ``` import datetime as dt from shadow_geolocate import exif check = exif.shadow_direction_consistency( observed_shadow_azimuth=5.0, latitude=48.0, longitude=0.0, when=dt.datetime(2023, 6, 21, 9, 0, 0), ) print(check.consistent, round(check.residual_deg, 1)) ``` 运行测试: ``` PYTHONPATH=src pytest -q ``` ## 许可证 MIT。
标签:Python, 图像情报, 地理定位, 城市体积, 太阳几何, 恶意代码分类, 无后门, 逆向工具, 阴影分析