Passer au contenu principal
S

dsh-astro-plan

siriusyang91/dsh-astro-plan

Astrophotography planner: 18 target types across 173 Chinese sites, ranked by light pollution, altitude, moon phase, ephemeris events and 7-day weather, with framing and exposure advice plus a Stellarium-style 3D sky preview. The 7-day weather comes from Open-Meteo, which needs network access; everything else runs offline.

Installer

dsh plugin --profile web add github:siriusyang91/dsh-astro-plan

README

dsh-astro-plan · 星野计划

npm license guide

星野计划(by Sirius YANG):按 18 类天象与深空目标、全国 173 站、最长一年检索,结合光污染、方位、月相、星历事件与 7 天天气,给出推荐排序、地景、焦段与曝光;每条结果附 Stellarium 风格 3D 天球画面模拟(真实银河等值线、真实月相、实测天际线)。

查询区与页头

功能速览

能力规模 / 说明
目标类型18 类,两级菜单:星野 6(银河/流星雨/彗星/星轨/黄道光/极光)· 日月 2 · 行星 4(单个行星/冲日/大距/合)· 深空 5(全部深空/星系/星云/星团/行星状星云)
站点库173 个,覆盖 34 个省级行政区、8 个地区,含海拔、波特尔指数、实测天际线
时间跨度单次最长 365 天(夜的定义:当日 15:00 至次日 09:00)
天气未来 7 天内接入 Open-Meteo 逐时预报,更远只按天文条件评估
评分五维加权:天象 0.4 · 天气 0.2 · 地景 0.2 · 光污染 0.1 · 月相 0.1,缺维度按参与权重归一
画面模拟立体投影 3D 天球、真实银河等值线、真实日月大小与月相、实测天际线、5°–180° 缩放、地平/赤道双坐标
运行时依赖零(星历用 vendored astronomy-engine,星表/银河为构建期快照)

安装

三种方式任选其一,装完重启 DSH 桌面应用。

1)插件市场:侧边栏「插件」→「发现」→ 添加索引

https://raw.githubusercontent.com/SiriusYANG91/dsh-astro-plan/main/docs/market-index.json

2)npm

dsh plugin --profile desktop add dsh-astro-plan@0.1.1

3)本地目录(开发)

dsh plugin --profile desktop add "<本目录绝对路径>"

验证:curl http://127.0.0.1:<端口>/astro-plan/api/meta

打开

入口位置
会话 Tab侧边栏「星野计划」
独立页面http://127.0.0.1:<端口>/astro-plan/
工具对话里让模型调用 astro_plan

页面参数:?theme=light|dark 强制配色、?withSim=0 关闭画面模拟。

用法(对话里)

  1. 「这周末海坨山能拍什么?」
  2. 「今年 8 月英仙座流星雨,华北哪个站点最好?」
  3. 「明年 3 月去西藏拍深空,推荐 3 个目标,要星系」
  4. 「10 月 14 日北京日食能看到吗?」
  5. 「下个月有没有适合拍银河的暗夜窗口?」
  6. 「M42 和 M31 哪个更适合我这周去拍?」
  7. 「给我一条青海冷湖的整夜时间轴」
  8. 「这几个目标的焦距和曝光分别是多少?」
action作用
search按条件检索推荐(默认)
window某站某夜逐小时时间轴
meta数据概览(类型、地区、站点数、天气覆盖)
events天象事件(流星雨、银河季节窗口等)
params某目标的拍摄参数(targetId,如 m42)

常用参数:eventType、location(站点/城市/省份/lat,lon/「全国」)、region、province、dateStart、dateEnd、minAltitude、maxBortle、limit、originLat/originLon。

界面

查询区:三行。拍摄日期(跨度上限一年,前端校验);目的地与出发地(地区→省份→站点三级联动,出发地默认「目前所在地」,定位失败先复用上次结果再按北京估算);拍摄目标(18 类两级菜单、高度角 ≥ 默认 0°、波特尔 ≤ 默认 6)。「查询」「重置」,打开页面不自动检索。

结果列表:八列 —— #、推荐度、目标类型、目标、拍摄地点、日期、最佳时段、最高高度;按推荐度排序,20 条/页,序号跨页连续,可跳页。

便签详情:点行展开,七个区块 —— 目标、时间与月相、地点、方位与构图、拍摄参数、天气、推荐度明细与推荐理由。维度随题材变化(日食只算天象/天气/地景;月食不算月相;行星与深空不算地景),缺维度不扣分。窄屏(< 1100px)时画面模拟排在最上面一行,其余便签移到它下方,宽屏仍是「左七块 + 右模拟」。

画面模拟:便签右侧整列(或窄屏时置顶)。立体投影投满整幅画面,无圆形取景框;银河按 5 级等值线加色绘制,暗尘带是真空洞;日月按真实视直径、月球按真实相位(晨昏线椭圆、亮面朝太阳);天际线来自实测高程(36 方位、1.5–140 km);缩放 5°–180°,地平/赤道网格切换,HUD 给时间、坐标系、视野、高度/方位(赤道模式另给赤经赤纬);播放覆盖最佳时段(最多 72 帧),带跟踪开关。

评分模型

维度权重说明
天象0.4可见性(高度、时长)与事件分值合并
天气0.27 天内来自 Open-Meteo;更远不参与
地景0.2前景与目标的配合度、不可替代性
光污染0.1波特尔指数,越低越好
月相0.1月照度越低越好;月食/日食不参与

缺哪个维度就把它的权重从分母里去掉(不会把缺失当 0 分),最后换算成百分制:≥80 条件很好、60–80 值得去、<60 建议换目标或日期。

数据与更新

数据规模来源
站点173 个 / 34 省 / 8 地区自建(海拔、波特尔、天际线、地景标签)
目标71 个(深空 47:星系 12 / 星云 18 / 星团 11 / 行星状星云 6)自建 + 通用星表
彗星103 颗MPC 轨道根数,每周首次启动自动重建
天球632 颗亮星(≤ 4.2 等)、76 星座、5 级银河、11 场流星雨d3-celestial(BSD-3-Clause),构建期快照

页面第一行小字显示彗星库最近一次成功重建时间;除天气外,插件运行时不联网。

截图

便签详情

合月与真实月相

完整图文说明(14 章、9 张截图)见 用户指南。

开发

node --test --test-isolation=none "tests/*.test.js"   # 全部测试
node scripts/validate-sites.mjs                       # 站点库校验
node tools/build-comets.mjs                           # 重建彗星库(需联网)
node tools/build-sky.mjs                              # 重建星表/星座/银河(需联网)
node tools/sync-sky-renderer.mjs                      # 改完 skyview.js 的 RENDER_SRC 后同步到 Tab
node tools/make-guide-images.mjs                      # 重出用户指南配图(需无头 Edge)
node tools/publish.mjs --check|--publish              # 发布 npm 并刷新市场索引
node tools/push-repo.mjs                              # 把代码推到 GitHub

沙箱环境里 node --test 会为每个测试文件 spawn 子进程并被拒绝(EPERM),用 --test-isolation=none 单进程跑。

目录

lib/index.js     宿主入口:astro_plan 工具 + /astro-plan 路由
lib/planner.js   检索 → 可见窗口 → 五维评分 → 排序 / 时间轴
lib/skyview.js   画面模拟:星表岁差、meta.sky、sim 数据与 3D 渲染器源码
lib/astro.js     星历(高度方位/升落/暮光/月相,含岁差与时角)
lib/events.js    天象事件现算(食/冲/大距/合·合月 + 站级可见性)
lib/comets.js    MPC 轨道根数 → 二体传播 + 亮度模型
lib/weather.js   Open-Meteo 抓取与评分(10 分钟缓存)
lib/webui.js     自包含页面        lib/client.js  会话 Tab(零构建)
lib/data/        站点 / 目标 / 参数 / 彗星 / 天际线 / 星表(+ NOTICE.md)
tools/ scripts/  构建、发布、配图与校验脚本      tests/  测试

许可

插件代码 MIT。lib/vendor/astronomy-engine.js 来自 cosinekitty/astronomy(MIT,Don Cross);lib/data/sky.json 由 d3-celestial(BSD-3-Clause,Olaf Frohn)的公开星表裁剪生成,详见 lib/data/NOTICE.md。

Plugins associés