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ó)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.
https://suntrace3d.com/api/v1/api/v1/modelsÚj HD 3D modell generálása/api/v1/models/:idModellgenerálás állapotának ellenőrzése/api/solar/calculateNapenergia-hozam számítása/embedBeágyazható 3D megjelenítő (iframe)/api/healthÁllapotellenőrzés (hitelesítés nem szükséges)
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.
curl -H "Authorization: Bearer st_live_abc123def456..." \
https://suntrace3d.com/api/v1/modelsSoha 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.
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.
/api/v1/modelslatitudenumberrequiredA 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)idstringrequiredEgyedi modellazonosító az állapotellenőrzéshezstatusstringrequired"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ásacurl -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
}'{
"id": "hd_44.8699_13.8420_0.3",
"status": "pending"
}{
"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"
}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.

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.
/api/v1/models/:idcurl https://suntrace3d.com/api/v1/models/hd_44.8699_13.8420_0.3 \
-H "Authorization: Bearer YOUR_API_KEY"{
"id": "hd_44.8699_13.8420_0.3",
"status": "processing",
"progress": 65,
"step": "Generating textures..."
}{
"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
}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.
É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.
/api/solar/calculatelatitudenumberrequiredHelyszín szélességi fokalongitudenumberrequiredHelyszín hosszúsági fokatiltDegnumberrequiredPanel dőlésszöge fokban (0-90)azimuthDegnumberrequiredPanel azimutja fokban (0=Észak, 180=Dél)panelAreaM2numberrequiredTeljes panelfelület négyzetméterbenpanelEfficiencynumberrequiredPanel 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)annualYieldKwhnumberrequiredBecsült éves energiahozam kWh-banpeakPowerKwnumberrequiredCsúcsteljesítmény kW-banspecificYieldnumberrequiredFajlagos hozam kWh/kWp-benmonthlyKwhnumber[]required12 havi kWh értékből álló tömbsourcestringrequiredAdatforrás-azonosító ("pvgis")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
}'{
"annualYieldKwh": 4982,
"peakPowerKw": 4.0,
"specificYield": 1246,
"monthlyKwh": [248, 305, 412, 465, 522, 548, 562, 530, 445, 368, 280, 232],
"source": "pvgis"
}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.

Á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.
latnumberrequiredA megjelenítendő helyszín szélességi fokalngnumberrequiredA megjelenítendő helyszín hosszúsági fokakeystringrequiredAz Ön API-kulcsa a hitelesítéshez<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><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>
Az API sebességkorlátokat alkalmaz a méltányos használat és a rendszerstabilitás biztosítása érdekében.
{
"error": "Rate limit exceeded. Maximum 10 generations per hour."
}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.
{
"error": "latitude and longitude are required"
}{
"error": "Invalid or revoked API key"
}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.
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.
Teljes, másolásra kész példák gyakori integrációs forgatókönyvekhez.
#!/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"
ficonst 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));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']}")
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ó