Перейти к основному содержимому

Пайплайн LiDAR

Подходит для облаков точек, снятых стационарными или ручными LiDAR-сканерами (Leica, FARO, Trimble, BLK2GO и др.).

Предобработка

  1. Очистка — удалите шум от штатива, движущиеся объекты, мультивозвраты (Cyclone, ReCap, CloudCompare).
  2. Регистрация — совмещайте станции через таргеты или cloud-to-cloud.
  3. Колоризация — наложите фото либо переведите интенсивность в оттенки серого.

Экспорт

  • Сформируйте облегчённый меш (≤ 5 млн треугольников) для предпросмотра.
  • Экспортируйте облако в E57/LAZ/PLY.
  • Используйте согласованную систему координат (локальную — indoors, WGS84 — outdoors).

Загрузка через Python REST API

# upload_lidar.py
from pathlib import Path
import os
import requests

API_BASE = "https://was-vps.web-ar.xyz/vps/api/v3"
TOKEN = os.environ["WEBAR3_TOKEN"]
DATA_PATH = Path("outputs/plant.e57")

headers = {"Authorization": f"Bearer {TOKEN}"}

payload = {
"name": "Цех",
"dataType": "point_cloud",
"sourceFormat": "e57",
"hybrid": True,
"coordinate": {"lat": 55.75176, "lon": 37.61752}
}

init = requests.post(f"{API_BASE}/maps/import", json=payload, headers=headers)
init.raise_for_status()
info = init.json()
map_id, upload_url = info["mapId"], info["uploadUrl"]

with DATA_PATH.open("rb") as src:
put = requests.put(upload_url, data=src, headers={"Content-Type": "application/octet-stream"})
put.raise_for_status()

finalize = requests.post(f"{API_BASE}/maps/{map_id}/finalize", json={"publish": False}, headers=headers)
finalize.raise_for_status()
print(f"LiDAR-карта {map_id} поставлена в очередь → {finalize.json()['status']}")
  • hybrid=True сообщает, что вместе с облаком загружается меш.
  • Блок coordinate можно опустить для сугубо indoor-проектов.

Анкоры и публикация

После перехода карты в READY:

anchors = [
{"name": "CNC-01", "position": [2.4, 0.0, 8.7]},
{"name": "safety_exit", "position": [-11.2, 0.0, 3.1]}
]
resp = requests.post(
f"{API_BASE}/maps/{map_id}/anchors",
headers=headers,
json={"items": anchors}
)
resp.raise_for_status()

Затем опубликуйте карту через консоль или вызовом POST /maps/{id}/publish.