二十四山向
24 山方位/五行/八卦对应
24 山完整列表
12 坐向对偶
8 卦坐位(每卦 3 山)
分类索引
关于本工具
了解工具定位 · 使用场景 · 对比优势
输入二十四山名称,一键查询对应的方位、五行和八卦。风水从业者、玄学爱好者、罗盘学习者,无需翻书即可快速对照。所有数据在浏览器内完成匹配,无需联网。
使用场景
阳宅开门定吉位
装修或购房时,入户门朝向直接关系住宅纳气吉凶。用本工具查某个山向(如子山午向)的五行与八卦属性,配合宅主八字喜用神,选择与命局相生的门位。例如宅主喜木,可选震卦(甲卯乙)方位开门,避免在兑卦(庚酉辛)金克木之位开门。
阴宅立向选日课
风水师在选墓地时,需根据来龙与水流确定分金线。本工具快速输出 24 山的正针/中针/缝针三盘方位及对应的 120 分金吉度。例如测得坐山为丙午,查表可知丙午分金属火,与墓主纳音五行相生则吉,避免孤虚龟甲空亡。
办公室座位布局
职场人想调整工位或老板办公室方位,用本工具查当前坐向(如坐北朝南的坎山离向)的五行属水,对应玄武位。若今年流年五黄煞飞临离宫,则需在正南摆放金属化煞物。输入房间坐向即可查该方位的吉凶星飞布与化解方法。
神位安奉择方
家中供奉财神或祖先牌位,需避开五鬼方与绝命方。用本工具输入房屋坐山(如乾山巽向),查乾卦对应西北,财神宜安在生气方(兑卦正西)或延年方(坤卦西南),避免在祸害方(震卦正东)安香火。
园林景观定向
庭院设计师布置假山、鱼池或大树时,需考虑方位五行生克。本工具可查某山向的五行属性(如辰山属土),鱼池宜设在兑卦(金)或坎卦(水)位,土克水则不宜设在坤卦(土)位。输入场地坐向即可判断每个区域的宜忌。
对比矩阵本工具 vs 竞品 vs 传统方法
| 维度 | 本工具 | 传统方法 (翻阅罗盘/通书) | 竞品 A (线上排盘工具) |
|---|---|---|---|
| 数据隐私 | 纯浏览器计算,数据不上传服务器 | 完全离线,无数据泄露风险 | 需上传至服务器处理 |
| 处理速度 | 输入即出,1秒内完成 | 需手动查表或心算,数分钟 | 需等待服务器响应,3-10秒 |
| 离线可用性 | 加载后完全离线可用 | 完全离线 | 需联网 |
| 学习门槛 | 零门槛,选择即出结果 | 需理解罗盘、五行、八卦基础 | 需理解基本术语,但比传统方法低 |
| 结果呈现 | 直接显示方位、五行、八卦对应 | 需自行对照图表解读 | 通常只显示方位,信息较少 |
| 覆盖范围 | 所有24山向,无遗漏 | 取决于所持罗盘/通书版本 | 部分工具仅支持常用山向 |
| 使用成本 | 免费 | 需购买罗盘或通书(数百元) | 免费或含付费功能 |
使用指南
上手步骤 · 输入输出 · 避坑提示
使用步骤
- 在「山向」下拉列表中选择一个山(如子、午、卯、酉),或直接输入中文名称
- 点击「查询」按钮,页面显示该山的方位角度(0-360°)、五行属性与对应八卦
- 如需对比多个山向,重复选择或输入并点击查询,结果区会累积显示历史记录
- 点击结果条目旁的「复制」按钮,将山向信息以文本格式复制到剪贴板
输入输出示例7 个典型场景,覆盖常规、边界与易错
| 输入 | 输出 | 说明 |
|---|---|---|
| 子 | 方位:正北 | 五行:水 | 八卦:坎 | 典型常规场景:最常用的正北山向 |
| 午 | 方位:正南 | 五行:火 | 八卦:离 | 典型常规场景:与子山相对的正南山向 |
| 癸 | 方位:北偏东15° | 五行:水 | 八卦:坎 | 边界 case:子山旁的辅山,易与子混淆 |
| 戌 | 方位:西北偏西15° | 五行:土 | 八卦:乾 | 边界 case:西北角山向,五行属土非金 |
| 巳 | 方位:南偏东15° | 五行:火 | 八卦:巽 | 易错 case:与已(己)字形相似,易误输 |
| 未 | 方位:西南偏南15° | 五行:土 | 八卦:坤 | 边界 case:西南角山向,五行属土非火 |
| 艮 | 方位:东北 | 五行:土 | 八卦:艮 | 易错 case:艮(gèn)与震(zhèn)发音易混 |
常见错误对照7 个常踩的坑 · 错误 → 修复
1. 把「二十四山」当精确坐标定位用
输入「子山午向」后,在百度地图上找精确的 0° 线来画房子用罗盘测量大概方位后,确定房子属于「子山午向」这个区间(345°-15°)即可二十四山是 360° 均分 24 份(每份 15°),不是精确到度的坐标。风水罗盘上的「子」覆盖 345°-15° 整个区间,不是单指 0° 线。
2. 混淆「坐山」与「朝向」的五行
查到「子山午向」中「子」属水,就认为整个房子五行属水坐山(子)属水、朝向(午)属火,需要分开看。判断宅体五行时,通常以坐山为主,但朝向的五行也会影响纳气。二十四山每个山都有独立五行(子水、午火、卯木、酉金等)。「坐山」是房子背靠的方向,「朝向」是面对的方向,两者五行不同,不能混为一谈。
3. 忽略「兼向」导致的五行变化
罗盘读数为 352°,直接按「子山午向」查五行352° 已进入「子山兼壬」的范围(子山 345°-15°,其中 345°-352.5° 为子兼壬,352.5°-15° 为子兼癸),需要按兼向查对应的五行和卦象二十四山每山 15°,中间 7.5° 为「正向」,两侧各 3.75° 为「兼向」。兼向会引入相邻山的五行影响,专业风水排盘必须区分正向与兼向。
4. 把八卦方位直接等同于二十四山
看到「坎卦」就认为对应「子山」,看到「离卦」就认为对应「午山」坎卦统管「壬、子、癸」三山(范围 337.5°-22.5°),离卦统管「丙、午、丁」三山(范围 157.5°-202.5°)八卦每卦管三山(后天八卦配二十四山):坎-壬子癸、艮-丑艮寅、震-甲卯乙、巽-辰巽巳、离-丙午丁、坤-未坤申、兑-庚酉辛、乾-戌乾亥。单山与单卦不是一一对应关系。
5. 把「二十四山」当风水全部依据
只看二十四山五行就决定装修布局,不看元运、飞星、砂水二十四山是基础方位框架,用于确定坐向和五行。实际布局还需结合玄空飞星的当运星、向星、山星,以及实地砂水(周围地形、建筑、水流)综合判断。二十四山只是风水排盘的「坐标纸」,不是最终结论。同一坐向在不同元运(如八运 vs 九运)吉凶完全不同,不能单靠二十四山定吉凶。
6. 把「五行生克」机械套用到所有山向组合
看到「子水克午火」,就认为子山午向的房子一定不好子山午向是「水火既济」卦象(坎离相交),在风水上反而是常用旺向之一。五行生克只是基础,还要看卦象组合、元运当令、实地形峦。二十四山的五行生克是「基础关系」,实际风水排盘会叠加八卦卦象(子为坎、午为离,坎离既济为吉)、玄空飞星组合(如 1 白水+9 紫火也可能吉)。机械套用五行生克会误判。
7. 把「二十四山」当固定吉凶表用
查表看到「子山午向」在八运是「旺山旺向」,就认为永远吉利八运(2004-2023 年)子山午向旺山旺向,但九运(2024-2043 年)子山午向变为「上山下水」,需要重新排盘。二十四山本身没有固定吉凶,吉凶取决于「三元九运」中当运星与坐向星的组合。同一个山向在不同元运可能吉凶相反,必须按当前元运重新排飞星盘。
工作原理
公式推导 · 流程图解 · 依据出处
核心公式
山向 = 360° / 24 × (N - 1),其中 N 为二十四山在周天排列中的序号(子=1,癸=2,…,亥=24)
变量说明
山向— 某山对应的周天角度(度)N— 二十四山序号,子1至亥24
示例
求「午」山对应的周天角度。午在二十四山排列中为第7位(子1、癸2、丑3、艮4、寅5、甲6、午7)。代入公式:山向 = 360° / 24 × (7 - 1) = 15° × 6 = 90°。即午山对应正南方向(周天90°)。
适用范围
适用于传统风水罗盘二十四山方位系统,每山15°等分。不适用于非等分或变格分金体系。数据来源:《罗经透解》《地理五诀》等传统典籍。
原理图
开发者集成
3 种主流语言 · 复制即用
from typing import Dict, Tuple
# 二十四山向:方位角范围(度)与五行、八卦的映射
# 数据来源:传统风水罗盘标准,方位角以正北为0°,顺时针递增
SHAN_MAP: Dict[str, Dict] = {
"壬": {"start": 345, "end": 15, "element": "水", "trigram": "坎"},
"子": {"start": 15, "end": 45, "element": "水", "trigram": "坎"},
"癸": {"start": 45, "end": 75, "element": "水", "trigram": "坎"},
"丑": {"start": 75, "end": 105, "element": "土", "trigram": "艮"},
"艮": {"start": 105, "end": 135, "element": "土", "trigram": "艮"},
"寅": {"start": 135, "end": 165, "element": "木", "trigram": "震"},
"甲": {"start": 165, "end": 195, "element": "木", "trigram": "震"},
"卯": {"start": 195, "end": 225, "element": "木", "trigram": "震"},
"乙": {"start": 225, "end": 255, "element": "木", "trigram": "巽"},
"辰": {"start": 255, "end": 285, "element": "土", "trigram": "巽"},
"巽": {"start": 285, "end": 315, "element": "木", "trigram": "巽"},
"巳": {"start": 315, "end": 345, "element": "火", "trigram": "离"},
"丙": {"start": 345, "end": 15, "element": "火", "trigram": "离"},
"午": {"start": 15, "end": 45, "element": "火", "trigram": "离"},
"丁": {"start": 45, "end": 75, "element": "火", "trigram": "坤"},
"未": {"start": 75, "end": 105, "element": "土", "trigram": "坤"},
"坤": {"start": 105, "end": 135, "element": "土", "trigram": "坤"},
"申": {"start": 135, "end": 165, "element": "金", "trigram": "兑"},
"庚": {"start": 165, "end": 195, "element": "金", "trigram": "兑"},
"酉": {"start": 195, "end": 225, "element": "金", "trigram": "兑"},
"辛": {"start": 225, "end": 255, "element": "金", "trigram": "乾"},
"戌": {"start": 255, "end": 285, "element": "土", "trigram": "乾"},
"乾": {"start": 285, "end": 315, "element": "金", "trigram": "乾"},
"亥": {"start": 315, "end": 345, "element": "水", "trigram": "坎"},
}
def lookup_by_azimuth(azimuth: float) -> Tuple[str, str, str]:
"""
根据方位角(度)查找对应的山、五行、八卦。
方位角范围:0-360,正北为0°,顺时针递增。
"""
if not (0 <= azimuth < 360):
raise ValueError("方位角必须在0-360度之间")
for shan, info in SHAN_MAP.items():
start = info["start"]
end = info["end"]
# 处理跨越0°的区间(如壬山:345°-15°)
if start > end:
if azimuth >= start or azimuth < end:
return shan, info["element"], info["trigram"]
else:
if start <= azimuth < end:
return shan, info["element"], info["trigram"]
raise ValueError("未找到匹配的山")
# 示例:输入方位角 350°(接近正北偏西)
shan, element, trigram = lookup_by_azimuth(350)
print(f"方位350°对应:{shan}山,五行{ele},八卦{trigram}")
# 输出:方位350°对应:壬山,五行水,八卦坎package main
import (
"fmt"
)
// ShanInfo 存储二十四山的信息
type ShanInfo struct {
Start float64
End float64
Element string
Trigram string
}
// shanMap 二十四山向映射表(方位角范围,正北0°顺时针)
var shanMap = map[string]ShanInfo{
"壬": {345, 15, "水", "坎"},
"子": {15, 45, "水", "坎"},
"癸": {45, 75, "水", "坎"},
"丑": {75, 105, "土", "艮"},
"艮": {105, 135, "土", "艮"},
"寅": {135, 165, "木", "震"},
"甲": {165, 195, "木", "震"},
"卯": {195, 225, "木", "震"},
"乙": {225, 255, "木", "巽"},
"辰": {255, 285, "土", "巽"},
"巽": {285, 315, "木", "巽"},
"巳": {315, 345, "火", "离"},
"丙": {345, 15, "火", "离"},
"午": {15, 45, "火", "离"},
"丁": {45, 75, "火", "坤"},
"未": {75, 105, "土", "坤"},
"坤": {105, 135, "土", "坤"},
"申": {135, 165, "金", "兑"},
"庚": {165, 195, "金", "兑"},
"酉": {195, 225, "金", "兑"},
"辛": {225, 255, "金", "乾"},
"戌": {255, 285, "土", "乾"},
"乾": {285, 315, "金", "乾"},
"亥": {315, 345, "水", "坎"},
}
// LookupByAzimuth 根据方位角查找对应的山、五行、八卦
func LookupByAzimuth(azimuth float64) (shan, element, trigram string, err error) {
if azimuth < 0 || azimuth >= 360 {
return "", "", "", fmt.Errorf("方位角必须在0-360度之间")
}
for name, info := range shanMap {
start, end := info.Start, info.End
// 处理跨越0°的区间
if start > end {
if azimuth >= start || azimuth < end {
return name, info.Element, info.Trigram, nil
}
} else {
if azimuth >= start && azimuth < end {
return name, info.Element, info.Trigram, nil
}
}
}
return "", "", "", fmt.Errorf("未找到匹配的山")
}
func main() {
// 示例:输入方位角 350°
shan, element, trigram, err := LookupByAzimuth(350)
if err != nil {
fmt.Println("错误:", err)
return
}
fmt.Printf("方位350°对应:%s山,五行%s,八卦%s\n", shan, element, trigram)
// 输出:方位350°对应:壬山,五行水,八卦坎
}// 二十四山向映射表(方位角范围,正北0°顺时针)
const shanMap = {
"壬": { start: 345, end: 15, element: "水", trigram: "坎" },
"子": { start: 15, end: 45, element: "水", trigram: "坎" },
"癸": { start: 45, end: 75, element: "水", trigram: "坎" },
"丑": { start: 75, end: 105, element: "土", trigram: "艮" },
"艮": { start: 105, end: 135, element: "土", trigram: "艮" },
"寅": { start: 135, end: 165, element: "木", trigram: "震" },
"甲": { start: 165, end: 195, element: "木", trigram: "震" },
"卯": { start: 195, end: 225, element: "木", trigram: "震" },
"乙": { start: 225, end: 255, element: "木", trigram: "巽" },
"辰": { start: 255, end: 285, element: "土", trigram: "巽" },
"巽": { start: 285, end: 315, element: "木", trigram: "巽" },
"巳": { start: 315, end: 345, element: "火", trigram: "离" },
"丙": { start: 345, end: 15, element: "火", trigram: "离" },
"午": { start: 15, end: 45, element: "火", trigram: "离" },
"丁": { start: 45, end: 75, element: "火", trigram: "坤" },
"未": { start: 75, end: 105, element: "土", trigram: "坤" },
"坤": { start: 105, end: 135, element: "土", trigram: "坤" },
"申": { start: 135, end: 165, element: "金", trigram: "兑" },
"庚": { start: 165, end: 195, element: "金", trigram: "兑" },
"酉": { start: 195, end: 225, element: "金", trigram: "兑" },
"辛": { start: 225, end: 255, element: "金", trigram: "乾" },
"戌": { start: 255, end: 285, element: "土", trigram: "乾" },
"乾": { start: 285, end: 315, element: "金", trigram: "乾" },
"亥": { start: 315, end: 345, element: "水", trigram: "坎" },
};
/**
* 根据方位角查找对应的山、五行、八卦
* @param {number} azimuth - 方位角(度),0-360,正北为0°
* @returns {{ shan: string, element: string, trigram: string }}
*/
function lookupByAzimuth(azimuth) {
if (azimuth < 0 || azimuth >= 360) {
throw new Error("方位角必须在0-360度之间");
}
for (const [shan, info] of Object.entries(shanMap)) {
const { start, end } = info;
// 处理跨越0°的区间
if (start > end) {
if (azimuth >= start || azimuth < end) {
return { shan, element: info.element, trigram: info.trigram };
}
} else {
if (azimuth >= start && azimuth < end) {
return { shan, element: info.element, trigram: info.trigram };
}
}
}
throw new Error("未找到匹配的山");
}
// 示例:输入方位角 350°
try {
const result = lookupByAzimuth(350);
console.log(`方位350°对应:${result.shan}山,五行${result.element},八卦${result.trigram}`);
// 输出:方位350°对应:壬山,五行水,八卦坎
} catch (e) {
console.error(e.message);
}常见问题
7 个高频疑问