jxing vor 4 Jahren
Ursprung
Commit
fc423d1206
29 geänderte Dateien mit 131 neuen und 102 gelöschten Zeilen
  1. 1 1
      docs/dev/data-center/index.js
  2. 11 11
      docs/dev/data-center/relations/belongs/Bd2Sp.md
  3. 5 5
      docs/dev/data-center/relations/belongs/Eq2Bd.md
  4. 16 9
      docs/dev/data-center/relations/belongs/Eq2Fl.md
  5. 7 6
      docs/dev/data-center/relations/belongs/Eq2Sh.md
  6. 26 18
      docs/dev/data-center/relations/belongs/Eq2Sp.md
  7. 6 7
      docs/dev/data-center/relations/belongs/Fl2Fl.md
  8. 3 3
      docs/dev/data-center/relations/belongs/Pe2Bd.md
  9. 2 2
      docs/dev/data-center/relations/belongs/Pe2Fl.md
  10. 1 1
      docs/dev/data-center/relations/belongs/Pe2Sh.md
  11. 1 1
      docs/dev/data-center/relations/belongs/Pe2Sp.md
  12. 3 3
      docs/dev/data-center/relations/belongs/Sh2Bd.md
  13. 3 2
      docs/dev/data-center/relations/belongs/Sh2Sh.md
  14. 11 5
      docs/dev/data-center/relations/belongs/Sp2Fl.md
  15. 5 5
      docs/dev/data-center/relations/belongs/Sp2Sp.md
  16. 12 5
      docs/dev/data-center/relations/belongs/Sp2Sp2.md
  17. 1 1
      docs/dev/data-center/relations/belongs/Sy2Bd.md
  18. 1 1
      docs/dev/data-center/relations/belongs/Sy2Fl.md
  19. 1 1
      docs/dev/data-center/relations/belongs/Sy2Sh.md
  20. 1 1
      docs/dev/data-center/relations/belongs/Sy2Sp.md
  21. 3 3
      docs/dev/data-center/relations/belongs/f_rel_calc.md
  22. BIN
      docs/dev/data-center/relations/belongs/img/sp2sp2-1.PNG
  23. 1 1
      docs/dev/data-center/relations/other/calc_area_v3.md
  24. 5 5
      docs/dev/data-center/relations/other/calc_vertically_overlap.md
  25. 1 1
      docs/dev/data-center/relations/other/other_ispace_floor_overlap.md
  26. 1 1
      docs/dev/data-center/relations/other/rel_affected_space.md
  27. 1 1
      docs/dev/data-center/relations/other/rel_str_similar.md
  28. 1 1
      docs/dev/data-center/relations/topology/sys_block.md
  29. 1 1
      docs/dev/data-center/relations/topology/sys_direction.md

+ 1 - 1
docs/dev/data-center/index.js

@@ -32,7 +32,7 @@ const content = [
             ["/dev/data-center/relations/belongs/Sh2Sh", "竖井贯通关系"],
             ["/dev/data-center/relations/belongs/Sp2Fl", "业务空间所属楼层"],
             ["/dev/data-center/relations/belongs/Sp2Sp", "业务空间邻接关系"],
-            ["/dev/data-center/relations/belongs/Sp2Sp_new", "业务空间邻接关系(新)"],
+            ["/dev/data-center/relations/belongs/Sp2Sp2", "业务空间邻接关系(新)"],
             ["/dev/data-center/relations/belongs/Sy2Bd", "系统所在建筑"],
             ["/dev/data-center/relations/belongs/Sy2Fl", "系统所在楼层"],
             ["/dev/data-center/relations/belongs/Sy2Sh", "系统所在竖井"],

+ 11 - 11
docs/dev/data-center/relations/belongs/Bd2Sp.md

@@ -1,25 +1,24 @@
-建筑下的业务空间
+# 建筑下的业务空间
 ## 前置条件
-有所属楼层的业务空间(所有业务空间表都需要处理)
+    1. 业务空间必须要有所属的楼层
 ```
 FROM zone_* WHERE project_id='Pj4201050001' AND floor_id is not null
 ```
-## 处理方式
+## 处理逻辑
 
-从绑定的楼层里取建筑ID,
-将建筑ID填入设备ID(建筑ID为空,则设备的建筑ID也为空)。
+    1. 从业务空间绑定的楼层信息里取到楼层所属的建筑ID,
+    2. 取到的建筑ID即是业务空间的所属建筑 (建筑ID为空,则的建筑ID也为空).
 
 ## 实现方式
 SQL
 ```
-update zone_air_conditioning zone set zone.building_id = floor.building_id from floor where zone.floor_id = floor.id and zone.project_id = 'Pj4201050001' and zone.floor_id is not null
+update zone_space_base zone set zone.building_id = floor.building_id from floor where zone.floor_id = floor.id and zone.project_id = 'Pj4201050001' and zone.floor_id is not null
 ```
 
 # 函数
 ```
-create or replace function public.rel_bd2sp(tables text, project_id character varying) returns boolean
-as
-$$
+CREATE OR REPLACE FUNCTION "public"."rel_bd2sp"("tables" text, "project_id" varchar)
+  RETURNS "pg_catalog"."bool" AS $BODY$
 try:
     list = tables.split(',')
     # 将下面对数据库的操作作为一个事务, 出异常则自动rollback
@@ -33,8 +32,9 @@ except Exception as e:
     return False
 else:
     return True
-$$
-LANGUAGE 'plpython3u' VOLATILE;
+$BODY$
+  LANGUAGE plpython3u VOLATILE
+  COST 100
 ```
 
 ## 输入

+ 5 - 5
docs/dev/data-center/relations/belongs/Eq2Bd.md

@@ -1,16 +1,16 @@
-设备所在建筑
+# 设备所在建筑
 ## 前置条件
-设备已经绑定楼层
+    1. 设备已经绑定楼层
 ```
 FROM equipment WHERE project_id='Pj4201050001' AND floor_id is not null
 ```
 
 ## 依赖函数
     Eq2Fl
-## 处理方式
+## 处理逻辑
 
-从绑定的楼层里取建筑ID,
-将建筑ID填入设备ID(建筑ID为空,则设备的建筑ID也为空)。
+    1. 设备绑定的楼层里取楼层所属的建筑ID,
+    2. 将取到的建筑ID填入设备的所属建筑中(建筑ID为空,则设备的所属建筑ID也为空)。
 
 ## 实现方式
 SQL

+ 16 - 9
docs/dev/data-center/relations/belongs/Eq2Fl.md

@@ -1,20 +1,26 @@
 设备所在楼层
 ## 前置条件
-    1. 设备有ModelId信息点
-    2. 楼层有ModelId信息点
-    3. 楼层的ModelId信息点等于设备的ModelId所属模型楼层的信息点
-    4. 设备没有所在楼层关系
-    5. 设备有Location(非必要)
-    6. 楼层有Outline(非必要)
+    1. 设备有ModelId信息点  (模型web服务的模型id)
+    2. 楼层有ModelId信息点  (模型web服务的楼层id)
+    3. 设备没有所在楼层关系
+    4. 设备有Location(非必要)
+    5. 楼层有Outline(非必要)
     
 
-## 处理方式
-    1. 如果楼层有Outline, 设备有Location, 做点(Location)在多边形(Outline)内的判断, 在多边形内则认为有关系
-    2. 如果不满足条件1, 则判断ModelId信息点的值, 相等则认为有关系
+## 处理逻辑
+    1. 如果楼层有Outline, 设备有Location, 做点(Location)在多边形(Outline)内的判断, 点在多边形内则认为有关系
+    2. 如果不满足条件1, 即楼层没有Outline, 设备没有Location, 则判断它们ModelId信息点的值, 相等则认为有关系   
+        (此处的相等表示设备上的ModelId信息点在关系上从属于楼层上的ModelId信息点, 即模型web服务中的模型id属于楼层id)
+
+## 技术细节
+    1. 做点在多边形内的判断, 使用到了python的 shapely 库 中的 Path 类的contains_points 方法
 
 # 函数
 
 ## 代码
+<details>
+<summary>源码</summary>
+
 ```
 -- 设备所在楼层
 CREATE OR REPLACE FUNCTION "public"."rel_eq2fl"("project_id" varchar)
@@ -101,6 +107,7 @@ $BODY$
 
 select public.rel_eq2fl('Pj1101010015');
 ```
+</details>
 
 ## 输入
     1. 项目id

+ 7 - 6
docs/dev/data-center/relations/belongs/Eq2Sh.md

@@ -1,13 +1,14 @@
-设备所在竖井关系计算
+# 设备所在竖井关系计算
 ## 前置条件
-    1. 首先需要有设备所在业务空间关系
-    2. 需要有竖井包含业务空间关系
+    1. 设备需要有所在业务空间关系
+    2. 竖井需要有包含业务空间关系
     
 ## 依赖函数
     Eq2Sp
-## 计算过程
-    1. 通过 竖井--> 业务空间 --> 设备的间接关系, 堆出竖井和设备的关系
-    2. 结果保存到r_eq_in_sh表中
+    
+## 处理逻辑
+    1. 通过 竖井 --> 业务空间 --> 设备 的间接所属关系, 推出竖井和设备的关系
+    
 ## 函数
 ```
 -- 设备所在竖井

+ 26 - 18
docs/dev/data-center/relations/belongs/Eq2Sp.md

@@ -1,21 +1,23 @@
-设备所在业务空间
+# 设备所在业务空间
 ## 前置条件
-    1. 业务空间有所属楼层
-    2. 设备有所属楼层
-    3. 业务空间有轮廓数据(outline)
-    4. 设备有坐标信息(bimLocation)
+    1. 业务空间有所属楼层关系
+    2. 设备有所属楼层关系
+    3. 业务空间有轮廓数据(outline信息点)
+    4. 设备有坐标信息(bimLocation信息点)
 ## 依赖函数
-    Eq2Fl
-## 处理方式
-    将在同一楼层内的设备和业务空间取出, 判断设备的bim_location是否在业务空间的outline内, 
-    如果在, 则添加进对应的关系表内, 控制sign = 2
+    Eq2Fl, Sp2Fl
+## 处理逻辑
+    1. 取出项目内的所有业务空间和设备, 将在同一楼层内的设备和业务空间分成一组
+    2. 在一组内, 判断设备的bim_location是否在业务空间的outline内, 即做点在多边形内的判断, 点在多边形内则认为有关系
 
 # 函数
 ## 代码
+<details>
+<summary>源码</summary>
+
 ```
-create or replace function public.rel_eq2sp(tables text, out_tables text, project_id character varying, sign1 integer, sign2 integer) returns boolean
-as
-$$
+CREATE OR REPLACE FUNCTION "public"."rel_eq2sp"("tables" text, "out_tables" text, "project_id" varchar, "sign1" int4, "sign2" int4)
+  RETURNS "pg_catalog"."bool" AS $BODY$
 from matplotlib.path import Path
 import json
 
@@ -80,8 +82,9 @@ with plpy.subtransaction():
             if len(equips) == 0:
                 continue
             # 获取楼层下的业务空间
-            space_plan = plpy.prepare("select id, outline from {0} as sp where project_id = $1 and outline is not null and floor_id = $2".format(in_table_name), ["text", "text"])
-            spaces = space_plan.execute([project_id, floor_id])
+
+            space_plan = plpy.prepare("select sp.id, sp.outline, sp.object_type from public.r_sp_in_fl rel inner join {0} sp on rel.space_id = sp.id where outline is not null and rel.floor_id = $1".format(in_table_name), ["text"])
+            spaces = space_plan.execute([floor_id])
             if len(spaces) == 0:
                 continue
             # 判断设备的bim_location是否在业务空间的outline内
@@ -91,18 +94,23 @@ with plpy.subtransaction():
                         location = equip['bim_location'].split(',')
                         if is_point_in_polygon(location[0], location[1], space['outline']):
                             # 设备在业务空间内, 添加关系
-                            insert_plan = plpy.prepare("insert into {0}(equip_id, space_id, project_id, sign) values($1, $2, $3, 2) ".format(out_table_name.strip()), ["text", "text", 'text'])
-                            insert_plan.execute([equip['id'], space['id'], project_id])
+                            insert_plan = plpy.prepare("insert into {0}(eq_id, sp_id, project_id, sign, type, zone_type) values($1, $2, $3, 2, 'eq2sp_in', $4)".format(out_table_name.strip()), ["text", "text", "text", "text"])
+                            insert_plan.execute([equip['id'], space['id'], project_id, space['object_type']])
                     except Exception as ex:
+                        plpy.warning(ex)
                         continue
 return True
-$$
-LANGUAGE 'plpython3u' VOLATILE;
+$BODY$
+  LANGUAGE plpython3u VOLATILE
+  COST 100
 
 
 例子:
 select public.rel_eq2sp('zone_general,zone_lighting', 'r_eq_in_sp_zone_general,r_eq_in_sp_zone_lighting', 'Pj1101010015', 2, 2);
 ```
+</details>
+
+
 ## 输入
     1. 参与计算的业务空间表的全名称, 带schema名, 以英文逗号隔开
     2. 关系计算结果存储的表, 跟第一个参数一一对应, 带schema名, 以英文逗号隔开

+ 6 - 7
docs/dev/data-center/relations/belongs/Fl2Fl.md

@@ -1,14 +1,13 @@
-楼层贯通关系
+# 楼层贯通关系
 ## 前置条件
-两个楼层的model_id信息点需要一致并不能为空, 则认为两个楼层是贯通关系
+
+    1. 两个楼层的model_id信息点需要一致且不能为空, 则认为两个楼层是贯通关系
 ```
 FROM floor WHERE project_id='Pj4201050001' AND model_id is not null
 ```
-## 处理方式
-    1. 先删除项目下所有的贯通关系(只删除sign为2的关系)
-    2. 多表连接更新:
-        1. 根据model_id信息点多表连接
-        2. 将结果插入到r_fl_through_fl表中, sign置为2
+## 处理逻辑
+    1. 拿到所有楼层
+    2. 如果两个楼层的ModelId信息点相同, 则认为两楼层有贯通关系
 
 # 函数
 

+ 3 - 3
docs/dev/data-center/relations/belongs/Pe2Bd.md

@@ -1,11 +1,11 @@
-资产所在建筑
+# 资产所在建筑
 ## 前置条件
     1. 资产有绑定的设备或部件
     2. 绑定的设备或部件有所在建筑
 ## 依赖函数
     Eq2Bd
-## 计算流程
-    根据 资产 --> 设备/部件 --> 建筑 的间接关系, 来获取资产和建筑的所在关系
+## 处理逻辑
+    根据 资产 --> 设备/部件 --> 建筑 的间接从属关系, 来获取资产和建筑的所在关系
     
 ## 函数
 ```

+ 2 - 2
docs/dev/data-center/relations/belongs/Pe2Fl.md

@@ -1,10 +1,10 @@
-资产所在楼层
+# 资产所在楼层
 ## 前置条件
     1. 资产有绑定的设备或部件
     2. 绑定的设备或部件有所在楼层
 ## 依赖函数
     Eq2Fl
-## 计算流程
+## 处理逻辑
     根据 资产 --> 设备/部件 --> 楼层 的间接关系, 来获取资产所在建筑的关系
     
 ## 函数

+ 1 - 1
docs/dev/data-center/relations/belongs/Pe2Sh.md

@@ -1,4 +1,4 @@
-资产所在竖井
+# 资产所在竖井
 ## 前置条件
     1. 资产有绑定的设备或部件
     2. 绑定的设备或部件有所在竖井关系

+ 1 - 1
docs/dev/data-center/relations/belongs/Pe2Sp.md

@@ -1,4 +1,4 @@
-资产所在业务空间
+# 资产所在业务空间
 ## 前置条件
     1. 资产有绑定的设备或部件
     2. 绑定的设备或部件有所在业务空间关系

+ 3 - 3
docs/dev/data-center/relations/belongs/Sh2Bd.md

@@ -1,11 +1,11 @@
-竖井关联的建筑
+# 竖井关联的建筑
 
 # 计算流程
     
     根据竖井关联的空间关系来推导
     
-# 处理流程
-    1. 竖井包含有业务空间, 并且业务空间有所属建筑
+## 处理逻辑
+    1. 根据 竖井 --> 业务空间 --> 建筑 的间接关系, 来获取资产所在业务空间的关系
     
 # 函数
 

+ 3 - 2
docs/dev/data-center/relations/belongs/Sh2Sh.md

@@ -1,8 +1,9 @@
-竖井贯通关系
+# 竖井贯通关系
 ## 前置条件
     1. 竖井包含的有元空间(竖井在r_sh_contain_si表中有数据)
-## 处理流程
+## 处理逻辑
     1. 竖井包含有相同的元空间, 则认为两竖井贯通
+    (竖井包含元空间的数据是前端做划分)
 ## 函数
 ```
 -- 竖井贯通关系

+ 11 - 5
docs/dev/data-center/relations/belongs/Sp2Fl.md

@@ -1,16 +1,21 @@
-在多个楼层划分一个模型时, 根据已有的业务空间所属楼层数据重新计算业务空间所属楼层
+# 业务空间所属楼层 (关系由前端生成, 此算法是在多个楼层划分一个模型时, 根据已有的业务空间所属楼层数据重新计算业务空间所属楼层)
 ## 前置条件
     1. 楼层有外轮廓
     2. 业务空间有外轮廓
     3. 有2个或2个以上的楼层的ModelId相同(意思是一个模型划分成了多个楼层)
     4. 这些ModelId相同的楼层下有所属的业务空间关系
     5. 业务空间所属楼层表内维护的关系是正确的
-## 处理流程
-    1. 查出项目内所有ModelId相同的楼层(如果没有则返回)
-    2. 按照ModelId将楼层分组, 相同ModelId的楼层为一组, 每组内按照以下规则计算
-    3. 获取组内所有楼层下的业务空间, 将查出的业务空间的轮廓与楼层的轮廓比对是否有重叠部分(所有业务空间 X 所有楼层次对比), 如果有重叠则认为该业务空间和该楼层有关系
+    
+## 处理逻辑
+    1. 查出项目内所有ModelId相同的楼层(如果没有则结束)
+    2. 按照ModelId信息点将楼层分组, 相同ModelId的楼层为一组, 每组内按照以下规则计算
+    3. 获取组内所有楼层下的业务空间, 将查出的业务空间的轮廓与组内楼层的轮廓比对是否有重叠部分(所有业务空间 X 组内楼层个数次对比), 如果有重叠则认为该业务空间和该楼层有关系
     4. 在业务空间所属楼层表内删除该组楼层下的所有业务空间关系, 并插入新计算出的业务空间所属楼层的关系
 ## 函数
+
+<details>
+<summary>源码</summary>
+
 ```
 
 CREATE OR REPLACE FUNCTION "public"."rel_sp2fl"("project_id" varchar)
@@ -171,6 +176,7 @@ $BODY$
 
 select public.rel_sp2fl('Pj1101050001')
 ```
+</details>
 
 ## 入参
     1. 项目id

+ 5 - 5
docs/dev/data-center/relations/belongs/Sp2Sp.md

@@ -2,15 +2,15 @@
 ## 前置条件
     1. 业务空间有所在楼层
     2. 业务空间有外轮廓
-## 处理流程
+## 处理逻辑
     1. 查出所有有所在楼层, 并且外轮廓不是null的业务空间
-    2. 根据所在楼层, 业务空间分区来将业务空间分组
-    3. 计算每个分组内的业务空间的相邻关系
+    2. 根据所在楼层, 业务空间分区类型来将业务空间分组
+    3. 分别计算每个分组内的业务空间的相邻关系
     计算相邻算法:
-    1. 首先判断围成业务空间的线段, 两两空间之间是否有近似平行的线段(线段偏转误差小于1度)
+    1. 首先判断围成业务空间轮廓的线段, 两两业务空间之间是否有近似平行的线段(线段平行偏转误差小于1度算作近似平行)
         1). 近似平行判断: 首先获取两个线段的斜率, 再计算斜率的反正切(即与x轴的角度, 不过是以pi为单位), 再判断两个角度差的绝对值是否小于1度
     2. 如果有近似平行的线段, 判断是否相互有投影在线段上, 有投影在线段上, 则认为是两平行线段有重合部分, 业务空间有相邻的可能性
-    3. 判断互相有投影点在对方线段上之后, 判断投影线的长度, 是否小于250mm(墙的最大厚度), 如果小于250mm则认为两空间相邻
+    3. 判断互相有投影点在对方线段上之后, 判断投影线的长度, 是否小于250mm(墙的最大厚度), 如果小于250mm则认为两空间相邻
 ## 函数
 ```
 create or replace function public.rel_sp2sp1(project_id character varying) returns boolean

+ 12 - 5
docs/dev/data-center/relations/belongs/Sp2Sp2.md

@@ -2,9 +2,9 @@
 ## 前置条件
     1. 业务空间有所在楼层
     2. 业务空间有外轮廓
-## 处理流程
-    1. 查出所有有所在楼层, 并且外轮廓不是null的业务空间
-    2. 根据所在楼层, 业务空间分区类型来将业务空间分组
+## 处理逻辑
+    1. 查出所有有所在楼层关系, 并且外轮廓不是null的业务空间
+    2. 根据所在楼层, 业务空间分区类型来将业务空间分为不同的 (例如 : A 楼层下的默认业务空间是一组, A楼层下的空调分区是另外一组)
     3. 计算每个分组内的业务空间的相邻关系
     计算相邻算法 (如下图):
     1. 在一个分组内, 遍历每个业务空间上组成外轮廓的每条线段, 根据线段的长度, 是否超过delta_distance来区分成两种情况判断
@@ -12,12 +12,17 @@
         在P5点处作AB线段的垂线线段, 上下两边长度均为door_length长, 找到点P4和P6. 同理可以找到点P7和P9. 
         2). 如果线段长度小于或等于delta_distance, 假设线段AE长度小于delta_distance, 则在线段中间点P2处作垂直于AE的垂线线段, 
         上下两边长度均为door_length长, 找到点P1和P3.
-    2. 将上面找到的点, 依次与其他业务空间外轮廓做一次点是否在多边形内的判断, 如果在, 则认为该多边形与图中多边形相邻
+    2. 将上面找到的点, 依次与组内其他业务空间外轮廓做一次点是否在多边形内的判断, 如果在, 则认为该多边形与图中多边形相邻
     
    
-  ![Image text](img/sp2sp2-1.PNG)
+![Image text](./img/sp2sp2-1.PNG)
 
 ## 函数
+
+
+<details>
+<summary>源码</summary>
+
 ```
 create function rel_sp2sp_v2(project_id character varying) returns boolean
     language plpython3u
@@ -300,6 +305,8 @@ alter function rel_sp2sp_v2(varchar) owner to postgres;
 select public.rel_sp2sp_v2('Pj1101050001')
 ```
 
+</details>
+
 ## 入参
     1. 项目id
 ## 例子

+ 1 - 1
docs/dev/data-center/relations/belongs/Sy2Bd.md

@@ -4,7 +4,7 @@
     2. 系统下的设备有所属建筑的关系
 ## 依赖函数
     Eq2Bd
-## 计算流程
+## 处理逻辑
     1. 通过 系统 --> 设备 --> 建筑 的间接关系, 获取系统所在建筑的关系
     2. 结果存储在 r_sy_in_bd 表中
     

+ 1 - 1
docs/dev/data-center/relations/belongs/Sy2Fl.md

@@ -4,7 +4,7 @@
     2. 系统下的设备有所属楼层关系
 ## 依赖函数
     Eq2Fl
-## 计算流程
+## 处理逻辑
     1. 通过 系统 --> 设备 --> 楼层 的间接关系, 获取系统所在楼层的关系
     2. 计算关系存储在表 r_sy_in_fl 中
 ## 函数

+ 1 - 1
docs/dev/data-center/relations/belongs/Sy2Sh.md

@@ -4,7 +4,7 @@
     2. 系统下的设备有所在竖井关系
 ## 依赖函数
     Eq2Sh
-## 计算流程
+## 处理逻辑
     1. 根据 系统 --> 设备 --> 竖井 来间接获取系统所属竖井关系
     2. 计算后的关系存储在表 r_sy_in_sh
 ## 函数

+ 1 - 1
docs/dev/data-center/relations/belongs/Sy2Sp.md

@@ -4,7 +4,7 @@
     2. 系统下的设备有所在业务空间关系
 ## 依赖函数
     Eq2Sp
-## 计算流程
+## 处理逻辑
     1. 根据 系统 --> 设备 --> 业务空间 的间接关系, 获取系统和业务空间的关系
     2. 计算结果存储在r_sy_in_sp_*中
 ## 函数

+ 3 - 3
docs/dev/data-center/relations/belongs/f_rel_calc.md

@@ -1,4 +1,4 @@
-管理关系计算函数依赖和函数输入类型
+# 管理关系计算函数依赖和函数输入类型
 
 # 说明
     classify 该变量是根据函数的输入将函数分类
@@ -6,12 +6,13 @@
 
 # 函数
 ## 代码
+
 ```
 CREATE OR REPLACE FUNCTION "public"."f_rel_calc"("func" text, "project_id" varchar, "tables" text, "out_tables" text, "sign1" int4, "sign2" int4)
   RETURNS "pg_catalog"."int4" AS $BODY$
 # 根据函数输入类型分类
 classify = {"eq2bd":1, "eq2fl":1, "sp2fl":1, "eq2sh":1, "pe2bd":1, "pe2fl":1, "pe2sh":1, "pe2sp":1, "sh2sh":1, "sy2bd":1,
-    "sy2fl":1, "sy2sh":1, "sy2sp":1, "bd2sp":2, "eq2sp":3, "fl2fl":4}
+    "sy2fl":1, "sy2sh":1, "sy2sp":1, "sh2bd":1, "bd2sp":2, "eq2sp":3, "fl2fl":4}
 dependency = {"eq2bd":["eq2fl"], "eq2sh":["eq2sp"], "eq2sp":["eq2fl", "sp2fl"], "pe2bd":["eq2bd"], "pe2fl":["eq2fl"], "pe2sh":["eq2sh"],
     "pe2sp":["eq2sp"], "sy2bd":["eq2bd"], "sy2fl":["eq2fl"], "sy2sh":["eq2sh"], "sy2sp":["eq2sp"]}
 def get_type_by_func_name(func_name):
@@ -76,7 +77,6 @@ $BODY$
   LANGUAGE plpython3u VOLATILE
   COST 100
 
-
 例子:
 select public.f_rel_calc('rel_eq2sh', 'Pj*******', 'zone_space_base','relationship.r_eq2sp', 2, 2)
 ```

BIN
docs/dev/data-center/relations/belongs/img/sp2sp2-1.PNG


+ 1 - 1
docs/dev/data-center/relations/other/calc_area_v3.md

@@ -3,7 +3,7 @@
 
 
-## 处理方式
+## 处理逻辑
 
 根据业务空间轮廓的格式, 以此计算内部每个小轮廓的面积, 加和在一起为最终结果
 小轮廓面积计算: 计算首个子轮廓面积, 并减去随后所有子轮廓的面积. 结果为小轮廓面积

+ 5 - 5
docs/dev/data-center/relations/other/calc_vertically_overlap.md

@@ -4,12 +4,12 @@
 ```
 
 ```
-## 处理方式
+## 处理逻辑
 
-获取所有建筑, for循环获取每个建筑下所有的业务空间, 按楼层分类
-每个楼层的每个业务空间分别和别的楼层的每个业务空间判断is_vertically_overlap
-将结果是true的两个业务空间保存起来
-删除旧业务空间的垂直交通关系(自动计算的), 添加新关系
+    1. 获取所有建筑, for循环获取每个建筑下所有的业务空间, 按楼层分类
+    2. 每个楼层的每个业务空间分别和别的楼层的每个业务空间判断is_vertically_overlap
+    3. 将结果是true的两个业务空间保存起来
+    4. 删除旧业务空间的垂直交通关系(自动计算的), 添加新关系
 
 ## 实现方式
 

+ 1 - 1
docs/dev/data-center/relations/other/other_ispace_floor_overlap.md

@@ -3,7 +3,7 @@
     1. 元空间和楼层必须都有轮廓
     2. 轮廓必须符合规则
     
-# 处理方式
+# 处理逻辑
 
     将楼层的外轮廓与元空间的最外层轮廓做是否重叠检查操作
 

+ 1 - 1
docs/dev/data-center/relations/other/rel_affected_space.md

@@ -9,7 +9,7 @@
 
 ## 依赖函数
-## 处理方式
+## 处理逻辑
 
     1. 查询出所有绑定该revit模型楼层的数据中心楼层
         SELECT id FROM public.floor where model_id = 'revit模型楼层'

+ 1 - 1
docs/dev/data-center/relations/other/rel_str_similar.md

@@ -6,7 +6,7 @@
 
 ## 依赖函数
-## 处理方式
+## 处理逻辑
 
     根据编辑距离来计算相似度
 

+ 1 - 1
docs/dev/data-center/relations/topology/sys_block.md

@@ -5,7 +5,7 @@
 3. 相邻层立管开放端口坐标位置相等(距离差值不能超过0.01)
 4. (非强制)通过模型检查:连接件检查、系统类型名称检查、管网及相关设备检查、管段检查
 
-## 处理方式
+## 处理逻辑
 
 1. 获取所有当前项目project_id下的的有模型文件models; 表:revit.model_folder、revit.model_floor、revit.model_file
 2. 遍历models,获取model层的系统图systemGraphs;

+ 1 - 1
docs/dev/data-center/relations/topology/sys_direction.md

@@ -4,7 +4,7 @@
 1. 通过管网系统分块计算;
 2. 指定源。
 
-## 处理方式
+## 处理逻辑
 
 1. 从connected_block表中取出所有关系,构建无向图
 2. 从connected_block_source表中取出所有的源