From ec970b5597ce919dd8328850cdc61d724b2099f1 Mon Sep 17 00:00:00 2001
From: shench3 <shench3@xiaopeng.com>
Date: 星期六, 07 三月 2026 21:01:25 +0800
Subject: [PATCH] feat: 多坐标点解析生成rtree

---
 xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/utils/XngpAreaRTreeFbsUtil.java |   28 ++++++++++++++++++++++++++++
 1 files changed, 28 insertions(+), 0 deletions(-)

diff --git a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/utils/XngpAreaRTreeFbsUtil.java b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/utils/XngpAreaRTreeFbsUtil.java
index 0d7a42d..3fa5c7d 100644
--- a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/utils/XngpAreaRTreeFbsUtil.java
+++ b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/utils/XngpAreaRTreeFbsUtil.java
@@ -1,6 +1,7 @@
 package com.xiaopeng.map.utils;
 
 import com.google.flatbuffers.FlatBufferBuilder;
+import com.xiaopeng.map.dto.AreaInput;
 import com.xiaopeng.map.dto.MapAreaDataDto;
 import com.xiaopeng.map.dto.OddAreaDto;
 import com.xiaopeng.map.dto.OddPointDto;
@@ -153,6 +154,33 @@
     }
 
     /**
+     * 从多个区域(AreaInput)生成 RTree fbs 字节数组。
+     *
+     * @param areas 区域列表,每个 AreaInput 含 points、areaId、isBlacklist
+     * @return fbs 二进制,失败返回 null
+     */
+    public static byte[] buildRTreeBytesFromMultiAreas(List<AreaInput> areas) {
+        if (areas == null || areas.isEmpty()) {
+            return null;
+        }
+        java.util.List<PbRTreeBuilder.RTreeNode> leafNodes = new java.util.ArrayList<>();
+        for (AreaInput area : areas) {
+            PbRTreeBuilder.RTreeNode leaf = buildLeafNode(
+                    area.getPoints(),
+                    area.getAreaId(),
+                    area.isBlacklist()
+            );
+            if (leaf != null) {
+                leafNodes.add(leaf);
+            }
+        }
+        if (leafNodes.isEmpty()) {
+            return null;
+        }
+        return buildRTreeBytes(leafNodes);
+    }
+
+    /**
      * 从多个区域的坐标点列表生成 RTree fbs 文件(多区域版本,与 C++ 完全对齐)。
      *
      * @param areaPoints     每个区域对应的坐标点列表

--
Gitblit v1.7.1