三盘API文档 - 本命盘+戴维森盘+行运盘
接口说明
本命盘+戴维森盘+行运盘接口用于生成三层星盘的对比分析。内圈显示本命盘,中圈显示戴维森盘,外圈显示行运盘,用于综合分析个人本命、关系戴维森盘和当前行运的影响。
| 参数 | 值 |
|---|---|
| Base URL | https://chart.12sign.top |
| 接口URL | /trichart |
| 请求方式 | POST |
| Content-Type | application/json |
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type1 | String | 是 | 第一层星盘类型,固定值:"natal" |
| type2 | String | 是 | 第二层星盘类型,固定值:"davison" |
| type3 | String | 是 | 第三层星盘类型,固定值:"transit" |
| data1 | Object | 是 | 本命盘数据(内圈) |
| data2 | Object | 是 | 戴维森盘数据(中圈)- 包含两人的出生信息 |
| data3 | Object | 是 | 行运盘数据(外圈) |
| house_system | String | 是 | 宫位系统,例如:"P"(普拉西德) |
自定义天体计算参数 (可选)
通过以下参数,可以精确控制每个盘面计算哪些天体。如果提供,将仅计算列表中的天体。
| 参数名 | 类型 | 说明 |
|---|---|---|
| chart1_custom_planets | List<String> | 内圈自定义行星列表,如 ["SUN", "MOON"] |
| chart2_custom_planets | List<String> | 中圈自定义行星列表 |
| chart3_custom_planets | List<String> | 外圈自定义行星列表 |
| chart{1/2/3}_custom_asteroids | List<String> | 小行星列表,如 ["Chiron"] |
| chart{1/2/3}_custom_arabic_parts | List<String> | 阿拉伯点列表,如 ["Part of Fortune"] |
| chart{1/2/3}_custom_special_points | List<String> | 特殊点列表,如 ["Ascendant", "MC"] |
绘图显示控制参数 (可选)
控制生成的 SVG 中显示哪些元素。
| 参数名 | 类型 | 说明 |
|---|---|---|
| display_planets1 | List<String> | 内圈显示的星体列表,如 ["SUN", "MOON", "ASC"]。不传则显示所有计算出的星体。 |
| display_planets2 | List<String> | 中圈显示的星体列表 |
| display_planets3 | List<String> | 外圈显示的星体列表 |
| display_aspects | Boolean/List | 控制相位显示。True 显示所有,False 不显示,或传入列表指定显示的相位类型。 |
| fixed_stars_in_svg | Boolean | 是否在 SVG 中绘制恒星。 |
data1和data3的参数结构
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| datetime | String | 是 | 日期时间,格式:"YYYY-MM-DD HH:MM:SS" |
| lat | Number | 是 | 纬度,范围:-90到90 |
| lon | Number | 是 | 经度,范围:-180到180 |
| tz | Number | 是 | 时区偏移,例如:8.0(东八区) |
data2(戴维森盘)的参数结构
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| person1 | Object | 是 | 第一人的出生信息 |
| person2 | Object | 是 | 第二人的出生信息 |
person1和person2的参数结构
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| datetime | String | 是 | 日期时间,格式:"YYYY-MM-DD HH:MM:SS" |
| lat | Number | 是 | 纬度,范围:-90到90 |
| lon | Number | 是 | 经度,范围:-180到180 |
| tz | Number | 是 | 时区偏移,例如:8.0(东八区) |
请求示例
{
"type1": "natal",
"type2": "davison",
"type3": "transit",
"data1": {
"datetime": "1990-01-01 12:00:00",
"lat": 39.9042,
"lon": 116.4074,
"tz": 8.0
},
"data2": {
"person1": {
"datetime": "1990-01-01 12:00:00",
"lat": 39.9042,
"lon": 116.4074,
"tz": 8.0
},
"person2": {
"datetime": "1992-06-15 14:30:00",
"lat": 31.2304,
"lon": 121.4737,
"tz": 8.0
}
},
"data3": {
"datetime": "2024-12-25 15:00:00",
"lat": 39.9042,
"lon": 116.4074,
"tz": 8.0
},
"house_system": "P",
"include_svg": true,
"chart1_custom_planets": ["SUN", "MOON", "MERCURY", "VENUS", "MARS", "JUPITER", "SATURN"],
"chart1_custom_special_points": ["Ascendant", "Midheaven"],
"chart2_custom_planets": ["SUN", "MOON", "MARS"],
"display_planets1": ["SUN", "MOON", "Ascendant"],
"display_planets2": ["SUN", "MOON"],
"display_planets3": ["SATURN", "JUPITER"]
}
返回参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| success | Boolean | 请求是否成功 |
| data | Object | 星盘数据 |
| data.type1 | String | 第一层星盘类型:"natal" |
| data.type2 | String | 第二层星盘类型:"davison" |
| data.type3 | String | 第三层星盘类型:"transit" |
| data.house_cusps | Array | 宫头位置数组(12个元素) |
| data.chart1_planets | Object | 本命盘行星位置数据 |
| data.chart2_planets | Object | 戴维森盘行星位置数据 |
| data.chart3_planets | Object | 行运盘行星位置数据 |
| svg | String | SVG格式的星盘图像(当include_svg为true时) |
| message | String | 响应消息 |
返回示例
{
"success": true,
"data": {
"type1": "natal",
"type2": "davison",
"type3": "transit",
"house_cusps": [0.0, 30.0, 60.0, 90.0, 120.0, 150.0, 180.0, 210.0, 240.0, 270.0, 300.0, 330.0],
"chart1_planets": {
"Sun": {"longitude": 280.123, "speed": 1.0},
"Moon": {"longitude": 45.678, "speed": 13.2}
},
"chart2_planets": {
"Sun": {"longitude": 135.456, "speed": 1.0},
"Moon": {"longitude": 210.789, "speed": 13.1}
},
"chart3_planets": {
"Sun": {"longitude": 275.123, "speed": 1.0},
"Moon": {"longitude": 180.456, "speed": 13.3}
}
},
"svg": "",
"message": "三盘计算成功"
}
Python测试代码示例
import requests
import json
import os
from datetime import datetime, timezone
class TrichartNatalDavisonTransitAPITest:
def __init__(self, base_url="https://chart.12sign.top"):
self.base_url = base_url
self.endpoint = f"{base_url}/trichart"
# 创建输出目录
self.output_dir = "test_chart_outputs"
if not os.path.exists(self.output_dir):
os.makedirs(self.output_dir)
def test_natal_davison_transit_chart(self):
"""测试本命+戴维森+行运三盘API"""
# 使用当前时间作为行运时间
now_utc = datetime.now(timezone.utc)
current_time = now_utc.strftime('%Y-%m-%d %H:%M:%S')
payload = {
"type1": "natal",
"type2": "davison",
"type3": "transit",
"data1": {
"datetime": "1990-01-01 12:00:00",
"lat": 39.9042,
"lon": 116.4074,
"tz": 8.0
},
"data2": {
# 注意:在三盘API中,戴维森盘的data2使用扁平结构,而不是嵌套的person1/person2结构
"datetime": "1992-06-15 14:30:00",
"lat": 31.2304,
"lon": 121.4737,
"tz": 8.0
},
"data3": {
"datetime": current_time,
"lat": 39.9042,
"lon": 116.4074,
"tz": 8.0
},
"house_system": "P",
"include_svg": True
}
try:
print(f"正在测试本命+戴维森+行运三盘API: {self.endpoint}")
print(f"请求数据: {json.dumps(payload, indent=2, ensure_ascii=False)}")
response = requests.post(
self.endpoint,
json=payload,
headers={'Content-Type': 'application/json'}
)
print(f"响应状态码: {response.status_code}")
if response.status_code == 200:
result = response.json()
print("本命+戴维森+行运三盘API测试成功!")
print(f"返回数据包含: {list(result.keys())}")
# 保存SVG文件
if 'svg' in result and result['svg']:
svg_filename = os.path.join(self.output_dir, 'trichart_natal_davison_transit_test.svg')
with open(svg_filename, 'w', encoding='utf-8') as f:
f.write(result['svg'])
print(f"SVG文件已保存: {svg_filename}")
return result
else:
print(f"API请求失败: {response.status_code}")
print(f"错误信息: {response.text}")
return None
except Exception as e:
print(f"请求出错: {e}")
return None
if __name__ == "__main__":
tester = TrichartNatalDavisonTransitAPITest()
tester.test_natal_davison_transit_chart()
注意事项
- 时间格式必须为
YYYY-MM-DD HH:MM:SS或YYYY-MM-DD HH:MM - 时区格式为数字,东时区为正数,西时区为负数
- type1必须设置为"natal",type2必须设置为"davison",type3必须设置为"transit"
- data1为本命盘数据(内圈),data2为戴维森盘数据(中圈),data3为行运盘数据(外圈)
- 戴维森盘是通过计算两人出生时间和地点的中点而形成的关系盘
- 戴维森盘需要提供两人的完整出生信息
- 戴维森盘与组合盘不同,它使用时间和地点的中点而非行星位置的中点
- 行运盘显示指定时间的实际天体位置
- 三个时间点通常为:个人出生时间、关系形成时间、当前时间
- 适用于分析个人与关系在特定时期的综合影响
- 返回的行星位置包含经度和速度信息