v1STABIL

API dokumentáció

A SunTrace3D Partner API lehetővé teszi HD 3D városmodellek generálását, napenergia-hozam számítását és interaktív 3D megjelenítők beágyazását weboldalába. Minden végpont JSON-t és szabványos HTTP módszereket használ.

Megtekintés Markdown formátumban (géppel olvasható)
1

Áttekintés

A SunTrace3D API egy RESTful szolgáltatás a 3D városmodell-generálás és a napenergia-számítások programozott eléréséhez. Az API olyan partnerek számára készült, akik napenergia-elemzést szeretnének integrálni saját alkalmazásaikba, weboldalaikon vagy munkafolyamataikba.

Alap URL

https://suntrace3d.com/api/v1
REST API
JSON kérés/válasz
Bearer hitelesítés
API-kulcsos hitelesítés
HD minőség
Minden API-modell HD

Elérhető végpontok

POST/api/v1/modelsÚj HD 3D modell generálása
GET/api/v1/models/:idModellgenerálás állapotának ellenőrzése
POST/api/solar/calculateNapenergia-hozam számítása
GET/embedBeágyazható 3D megjelenítő (iframe)
GET/api/healthÁllapotellenőrzés (hitelesítés nem szükséges)
Partner portal showing API keys and usage statistics
A Partner portál — API-kulcsok kezelése, használati statisztikák megtekintése és beágyazási kód lekérése
2

Hitelesítés

Minden API-kéréshez Bearer token hitelesítés szükséges az Authorization fejlécben. Az API-kulcsok a Partner portálon kezelhetők.

API-kulcs beszerzése

  1. 1
    Fiók létrehozása
    Regisztráljon a /auth/signup oldalon, ha még nem tette meg.
  2. 2
    Váltás Pro-ra
    Az API-hozzáféréshez Pro előfizetés szükséges. Váltson a fiókbeállításokból.
  3. 3
    API-kulcs generálása
    Látogasson el a Partner portálra, és kattintson a 'Kulcs létrehozása' gombra. Másolja ki a kulcsot azonnal — többé nem lesz megjeleníthető.
  4. 4
    Használat a kérésekben
    Minden API-kérésben adja meg a kulcsot Bearer tokenként.
Hitelesítési fejlécbash
curl -H "Authorization: Bearer st_live_abc123def456..." \
  https://suntrace3d.com/api/v1/models

Tartsa titokban az API-kulcsát

Soha ne tegye közzé API-kulcsát kliens oldali JavaScript-ben, nyilvános kódtárakban vagy frontend kódban. Ha kulcsa kompromittálódott, azonnal vonja vissza a Partner portálon, és hozzon létre újat.

3

3D modell generálása

Kérje egy HD 3D városmodell generálását egy adott földrajzi helyszínhez. A modell aszinkron módon generálódik — kérdezze le az állapot-végpontot az elkészülés ellenőrzéséhez.

POST/api/v1/models

Kérés törzse

latitudenumberrequiredA középpont szélességi foka (-90 – 90)
longitudenumberrequiredA középpont hosszúsági foka (-180 – 180)
radiusKmnumberA modellezendő terület sugara km-ben (alapértelmezett: 0.3)

Válasz

idstringrequiredEgyedi modellazonosító az állapotellenőrzéshez
statusstringrequired"pending" | "processing" | "ready" | "failed"
modelUrlstringA GLB modellfájl URL-je (amikor kész)
progressnumberGenerálási folyamat 0-100 (feldolgozás közben)
stepstringAktuális generálási lépés leírása
Kérésbash
curl -X POST https://suntrace3d.com/api/v1/models \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "latitude": 44.8699,
    "longitude": 13.8420,
    "radiusKm": 0.3
  }'
Válasz (függőben)json
{
  "id": "hd_44.8699_13.8420_0.3",
  "status": "pending"
}
Válasz (kész)json
{
  "id": "hd_44.8699_13.8420_0.3",
  "status": "ready",
  "modelUrl": "https://s3.eu-central-1.amazonaws.com/suntrace-models/hd_44.8699_13.8420_0.3/scene.glb"
}

Modell-gyorsítótárazás

Ha az adott helyszínhez és sugárhoz már generáltak modellt, az API azonnal visszaadja a gyorsítótárazott eredményt 'ready' állapottal. A modellek 30 napig vannak gyorsítótárazva az S3-ban. A gyorsítótárazott eredmények nem számítanak bele a felhasználásba.

API request generating a 3D model
Az API aszinkron módon generál HD 3D modelleket — kérdezze le az állapot-végpontot az elkészülésig
4

Modell állapotának ellenőrzése

Kérdezze le ezt a végpontot a modellgenerálási kérés állapotának ellenőrzéséhez. A modell több szakaszon megy keresztül: pending → processing → ready.

GET/api/v1/models/:id
Kérésbash
curl https://suntrace3d.com/api/v1/models/hd_44.8699_13.8420_0.3 \
  -H "Authorization: Bearer YOUR_API_KEY"
Válasz (feldolgozás alatt)json
{
  "id": "hd_44.8699_13.8420_0.3",
  "status": "processing",
  "progress": 65,
  "step": "Generating textures..."
}
Válasz (kész)json
{
  "id": "hd_44.8699_13.8420_0.3",
  "status": "ready",
  "modelUrl": "https://s3.eu-central-1.amazonaws.com/suntrace-models/hd_44.8699_13.8420_0.3/scene.glb",
  "progress": 100,
  "step": null
}

Állapotértékek

pendingA feladat sorba van állítva és egy feldolgozó átvételére vár
processingA modell generálás alatt áll. Ellenőrizze a progress mezőt a százalékért.
readyA modell kész. A modelUrl mező tartalmazza a letöltési URL-t.
failedA generálás sikertelen. Újrapróbálhatja egy új kérés létrehozásával.

Lekérdezési ajánlás

5-10 másodpercenkénti lekérdezést ajánlunk. A tipikus generálási idő 30-120 másodperc a terület méretétől és a szerver terhelésétől függően. A progress mező egy százalékos értéket (0-100) biztosít a folyamatjelző megjelenítéséhez a felületén.

5

Napenergia számítása

Éves napenergia-hozam számítása adott panel-konfiguráció és helyszín alapján. Ez a végpont a PVGIS (Photovoltaic Geographical Information System) műholdas adatokat használja a pontos besugárzási értékekhez.

POST/api/solar/calculate

Kérés törzse

latitudenumberrequiredHelyszín szélességi foka
longitudenumberrequiredHelyszín hosszúsági foka
tiltDegnumberrequiredPanel dőlésszöge fokban (0-90)
azimuthDegnumberrequiredPanel azimutja fokban (0=Észak, 180=Dél)
panelAreaM2numberrequiredTeljes panelfelület négyzetméterben
panelEfficiencynumberrequiredPanel hatásfoka (0.0 - 1.0, jellemzően 0.18-0.22)
shadingLossFractionnumberÁrnyékveszteségi tényező (0.0-1.0, alapértelmezett: 0)

Válasz

annualYieldKwhnumberrequiredBecsült éves energiahozam kWh-ban
peakPowerKwnumberrequiredCsúcsteljesítmény kW-ban
specificYieldnumberrequiredFajlagos hozam kWh/kWp-ben
monthlyKwhnumber[]required12 havi kWh értékből álló tömb
sourcestringrequiredAdatforrás-azonosító ("pvgis")
Kérésbash
curl -X POST https://suntrace3d.com/api/solar/calculate \
  -H "Content-Type: application/json" \
  -d '{
    "latitude": 44.8699,
    "longitude": 13.8420,
    "tiltDeg": 35,
    "azimuthDeg": 180,
    "panelAreaM2": 20,
    "panelEfficiency": 0.20,
    "shadingLossFraction": 0.05
  }'
Válaszjson
{
  "annualYieldKwh": 4982,
  "peakPowerKw": 4.0,
  "specificYield": 1246,
  "monthlyKwh": [248, 305, 412, 465, 522, 548, 562, 530, 445, 368, 280, 232],
  "source": "pvgis"
}

Hitelesítés nem szükséges

A napenergia-számítási végpont nyilvánosan elérhető és nem igényel API-kulcsot. Az Európai Bizottság Közös Kutatóközpontja által fenntartott PVGIS nyilvános API-t használja.

Solar energy calculation API response
A napenergia-számítási API éves hozamot, csúcsteljesítményt és havi bontást ad vissza
6

Megjelenítő beágyazása

Ágyazzon be interaktív 3D napenergia-megjelenítőt weboldalába iframe segítségével. A beágyazott megjelenítő tartalmaz időkezelő vezérlőket az árnyékszimulációhoz, és asztali gépen és mobilon egyaránt működik.

Beágyazási URL paraméterek

latnumberrequiredA megjelenítendő helyszín szélességi foka
lngnumberrequiredA megjelenítendő helyszín hosszúsági foka
keystringrequiredAz Ön API-kulcsa a hitelesítéshez
Alapszintű beágyazási kódhtml
<iframe
  src="https://suntrace3d.com/embed?lat=44.8699&lng=13.8420&key=YOUR_API_KEY"
  width="100%"
  height="500"
  frameborder="0"
  allow="fullscreen"
  style="border-radius: 12px; border: 1px solid #e5e7eb;">
</iframe>
Reszponzív beágyazás (ajánlott)html
<div style="position: relative; width: 100%; padding-bottom: 56.25%; overflow: hidden; border-radius: 12px;">
  <iframe
    src="https://suntrace3d.com/embed?lat=44.8699&lng=13.8420&key=YOUR_API_KEY"
    style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none;"
    allow="fullscreen">
  </iframe>
</div>

Beágyazási funkciók

Interaktív 3D forgatás, eltolás és nagyítás
Időcsúszka az árnyékszimulációhoz
Reszponzív — mobilon is működik
Google 3D Tiles fotorealisztikus modellek
Nincs szükség további JavaScript-re
Teljes képernyő támogatás
Embedded 3D viewer in an iframe
A beágyazható megjelenítő tartalmaz időkezelő vezérlőket, és asztali gépen és mobilon egyaránt működik
7

Sebességkorlátok

Az API sebességkorlátokat alkalmaz a méltányos használat és a rendszerstabilitás biztosítása érdekében.

Modellgenerálás
POST /api/v1/models
10 kérés
óránként, API-kulcsonként
Állapot-lekérdezés
GET /api/v1/models/:id
Nincs korlát
Lekérdezés szükség szerint
Napenergia-számítás
POST /api/solar/calculate
Nincs korlát
Nyilvános végpont
Beágyazott megtekintések
GET /embed
Nincs korlát
Korlátlan megtekintés
Sebességkorlát túllépve válasz (429)json
{
  "error": "Rate limit exceeded. Maximum 10 generations per hour."
}
8

Hibakezelés

Az API szabványos HTTP állapotkódokat használ. Minden hibaválasz tartalmaz egy JSON törzset egy error mezővel, amely leírja a problémát.

HTTP állapotkódok

200Sikeres — a kérés sikeresen teljesült
400Hibás kérés — hiányzó vagy érvénytelen paraméterek
401Jogosulatlan — hiányzó vagy érvénytelen API-kulcs
404Nem található — a modellazonosító nem létezik
429Túl sok kérés — sebességkorlát túllépve
503Szolgáltatás nem elérhető — külső szolgáltatás (PVGIS) nem működik
Hibaválasz példajson
{
  "error": "latitude and longitude are required"
}
Hitelesítési hibajson
{
  "error": "Invalid or revoked API key"
}
9

Webhookok

A modell-elkészülési értesítések webhook támogatása egy jövőbeli kiadásban tervezett. Jelenleg az állapot-végpont lekérdezésével ellenőrizheti, hogy a modellek elkészültek-e.

Hamarosan

A webhook visszahívások POST kérést küldenek a megadott URL-re, amikor a modellgenerálás befejeződik, így nincs szükség lekérdezésre. Ez a funkció az ütemtervünkben szerepel.

10

Teljes példák

Teljes, másolásra kész példák gyakori integrációs forgatókönyvekhez.

Modell generálása és várakozás az elkészülésre

Bash — teljes munkafolyamatbash
#!/bin/bash
API_KEY="YOUR_API_KEY"
BASE_URL="https://suntrace3d.com"

# 1. Request model generation
echo "Requesting model generation..."
RESPONSE=$(curl -s -X POST "$BASE_URL/api/v1/models" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"latitude": 44.8699, "longitude": 13.8420, "radiusKm": 0.3}')

MODEL_ID=$(echo $RESPONSE | jq -r '.id')
STATUS=$(echo $RESPONSE | jq -r '.status')
echo "Model ID: $MODEL_ID (status: $STATUS)"

# 2. Poll until ready
while [ "$STATUS" != "ready" ] && [ "$STATUS" != "failed" ]; do
  sleep 5
  RESPONSE=$(curl -s "$BASE_URL/api/v1/models/$MODEL_ID" \
    -H "Authorization: Bearer $API_KEY")
  STATUS=$(echo $RESPONSE | jq -r '.status')
  PROGRESS=$(echo $RESPONSE | jq -r '.progress // 0')
  echo "Status: $STATUS ($PROGRESS%)"
done

# 3. Get the model URL
if [ "$STATUS" = "ready" ]; then
  MODEL_URL=$(echo $RESPONSE | jq -r '.modelUrl')
  echo "Model ready: $MODEL_URL"
else
  echo "Generation failed"
fi

JavaScript/Node.js integráció

Node.js — generálás és lekérdezésjavascript
const API_KEY = 'YOUR_API_KEY';
const BASE_URL = 'https://suntrace3d.com';

async function generateModel(lat, lng) {
  // 1. Request generation
  const res = await fetch(`${BASE_URL}/api/v1/models`, {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ latitude: lat, longitude: lng }),
  });

  const { id, status, modelUrl } = await res.json();

  // If already cached, return immediately
  if (status === 'ready') return { id, modelUrl };

  // 2. Poll until ready
  return pollStatus(id);
}

async function pollStatus(modelId) {
  while (true) {
    await new Promise(r => setTimeout(r, 5000)); // Wait 5s

    const res = await fetch(`${BASE_URL}/api/v1/models/${modelId}`, {
      headers: { 'Authorization': `Bearer ${API_KEY}` },
    });

    const data = await res.json();
    console.log(`Status: ${data.status} (${data.progress || 0}%)`);

    if (data.status === 'ready') return data;
    if (data.status === 'failed') throw new Error('Generation failed');
  }
}

// Usage
generateModel(44.8699, 13.8420)
  .then(data => console.log('Model URL:', data.modelUrl))
  .catch(err => console.error(err));

Python integráció

Python — generálás és napenergia-számításpython
import requests
import time

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://suntrace3d.com"

def generate_model(lat: float, lng: float) -> dict:
    """Generate an HD 3D model and wait for completion."""
    # Request generation
    res = requests.post(
        f"{BASE_URL}/api/v1/models",
        headers={"Authorization": f"Bearer {API_KEY}"},
        json={"latitude": lat, "longitude": lng, "radiusKm": 0.3},
    )
    data = res.json()

    if data["status"] == "ready":
        return data

    # Poll until ready
    model_id = data["id"]
    while True:
        time.sleep(5)
        res = requests.get(
            f"{BASE_URL}/api/v1/models/{model_id}",
            headers={"Authorization": f"Bearer {API_KEY}"},
        )
        data = res.json()
        print(f"Status: {data['status']} ({data.get('progress', 0)}%)")

        if data["status"] == "ready":
            return data
        if data["status"] == "failed":
            raise Exception("Generation failed")

def calculate_solar(lat: float, lng: float, tilt: float = 35, azimuth: float = 180) -> dict:
    """Calculate solar energy yield for a panel configuration."""
    res = requests.post(
        f"{BASE_URL}/api/solar/calculate",
        json={
            "latitude": lat,
            "longitude": lng,
            "tiltDeg": tilt,
            "azimuthDeg": azimuth,
            "panelAreaM2": 20,
            "panelEfficiency": 0.20,
        },
    )
    return res.json()

# Usage
model = generate_model(44.8699, 13.8420)
print(f"Model URL: {model['modelUrl']}")

solar = calculate_solar(44.8699, 13.8420)
print(f"Annual yield: {solar['annualYieldKwh']} kWh")
print(f"Monthly: {solar['monthlyKwh']}")
API integration code examples in multiple languages
Teljes kódpéldák Bash, JavaScript és Python nyelven az API-integrációhoz

Új a SunTrace3D-ben?

Tekintse meg a Felhasználói útmutatót a 3D megjelenítő, az árnyékszimuláció és a napelem-elemzés funkcióinak teljes körű bemutatásához.

Felhasználói útmutató