Zum Hauptinhalt springen

Fotogrammetrie (DSLR / spiegellos)

Nehmen Sie diesen Ablauf, wenn Sie mit einer DSLR, einer spiegellosen Kamera oder einer Drohne Standbilder aufnehmen und daraus eine AR-Clip-VPS-Karte machen wollen.

Aufnahmehinweise

  • Zielen Sie auf 70–80 % Überlappung zwischen aufeinanderfolgenden Fotos.
  • Fotografieren Sie aus mehreren Höhen und nehmen Sie gut erkennbare Landmarken mit ins Bild.
  • Halten Sie die Belichtung konstant; vermeiden Sie Bewegungsunschärfe.
  • Optional: Legen Sie Bodenkontrollmarken in QR-Code-Größe aus, um den Maßstab zu prüfen.

Rekonstruktion

  1. Importieren Sie den Bildsatz in Metashape, RealityCapture, Meshroom oder Ihre bevorzugte Fotogrammetrie-Suite.
  2. Führen Sie Ausrichtung und dichte Rekonstruktion durch.
  3. Exportieren Sie die entstandene Punktwolke als LAS/LAZ/PLY mit Farbattributen. Halten Sie die Texturauflösung handhabbar (≤8K).

Upload mit der Python-REST-API

Der folgende Ausschnitt spiegelt den Ablauf aus arclip.design: einen Upload-Slot anfordern, die LAS/PLY-Datei streamen und die Karte finalisieren, damit die Verarbeitung im Backend startet.

# 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"] # legen Sie ein persönliches Token in arclip.design an
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 ist ein Bearer-Token, erzeugt unter Console → Settings → API tokens.
  • dataType und sourceFormat beschreiben die Nutzlast, damit das Backend die richtige Pipeline wählt.
  • Setzen Sie publish auf True, wenn nach der Verarbeitung automatisch veröffentlicht werden soll; andernfalls sehen Sie sich die Karte erst in der Console an.

Die Verarbeitung verfolgen

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"]) # z. B. PROCESSING → READY → PUBLISHED

Sobald der Status auf READY springt, öffnen Sie arclip.design → MapsPreview und prüfen Geometrie, Heatmap und Anker. Wiederholen Sie den Fotogrammetrieschritt, wenn Sie Lücken oder gespiegelte Geometrie bemerken.