Aller au contenu principal

Photogrammétrie (reflex / hybride)

Utilisez ce flux quand vous photographiez avec un reflex, un hybride ou un drone et voulez en faire une carte AR Clip VPS.

Consignes de prise de vue

  • Visez 70 à 80 % de recouvrement entre deux photos consécutives.
  • Photographiez depuis plusieurs hauteurs et incluez des repères facilement reconnaissables.
  • Gardez une exposition constante ; évitez le flou de bougé.
  • Facultatif : posez des cibles de contrôle au sol, de la taille d'un QR code, pour valider l'échelle.

Reconstruction

  1. Importez le jeu de photos dans Metashape, RealityCapture, Meshroom ou votre suite de photogrammétrie préférée.
  2. Lancez l'alignement puis la reconstruction dense.
  3. Exportez le nuage de points obtenu en LAS/LAZ/PLY avec les attributs de couleur. Gardez une résolution de texture raisonnable (≤8K).

Envoi avec l'API REST Python

L'extrait ci-dessous reprend le flux d'arclip.design : demander un emplacement d'envoi, transmettre le fichier LAS/PLY en flux, puis finaliser la carte pour que le traitement côté serveur démarre.

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

API_BASE = "https://api.arclip.app/vps/api/v3"
TOKEN = os.environ["ARCLIP_TOKEN"] # créez un jeton personnel dans arclip.design
DATA_PATH = Path("outputs/cathedral.las")

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

payload = {
"name": "Old Town Square",
"dataType": "point_cloud",
"sourceFormat": "las",
"coordinate": {"lat": 50.08746, "lon": 14.42125, "alt": 194.2}
}

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

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"Map {map_id} queued → status: {finalize.json()['status']}")
  • ARCLIP_TOKEN est un jeton bearer généré dans Console → Settings → API tokens.
  • dataType et sourceFormat décrivent le contenu pour que le back-end choisisse le bon pipeline.
  • Mettez publish à True si vous voulez une publication automatique une fois le traitement terminé ; sinon, examinez d'abord la carte dans la Console.

Suivre le traitement

import os
import requests

API_BASE = "https://api.arclip.app/vps/api/v3"
TOKEN = os.environ["ARCLIP_TOKEN"]
MAP_ID = "map_12345"

resp = requests.get(f"{API_BASE}/maps/{MAP_ID}", headers={"Authorization": f"Bearer {TOKEN}"})
resp.raise_for_status()
print(resp.json()["status"]) # p. ex. PROCESSING → READY → PUBLISHED

Dès que le statut passe à READY, ouvrez arclip.design → MapsPreview pour inspecter la géométrie, la carte de chaleur et les ancres. Relancez l'étape de photogrammétrie si vous voyez des trous ou une géométrie inversée.