GeoZone
Dokumentace API

GeoZone Public API

GraphQL API, které vrací data o strukturálních zatěžovacích zónách, geografické charakteristiky a PDF zprávy pro libovolné souřadnice po celém světě.

7 dotazů1 odběrBearer auth
POSThttps://team-w.dlubal.com/api/geo-zone/pub/graphql

Webová aplikace

Nástroj GeoZone je k dispozici také jako interaktivní webová aplikace na dlubal.com. Vyberte libovolné místo na mapě a okamžitě zobrazte všechny hodnoty strukturálních zatěžovacích zón.

Webová aplikace GeoZone
Webová aplikace GeoZone

Autentizace

Většina dotazů vyžaduje Bearer token v hlavičce Authorization:

Authorization:Bearer YOUR_TOKEN

Dotazy označené jako Veřejné nevyžadují autentizaci. Všechny ostatní spotřebují jeden API kredit za požadavek.

getLoadZoneCharacteristics

DotazVyžaduje auth

Vrátí klasifikaci zatěžovací zóny a všechny charakteristiky pro dané souřadnice. Přijímá loadZoneId (z findLoadzones), layerId a zeměpisnou šířku/délku jako desetinné řetězce. Odpověď obsahuje podrobnosti adresy, zjištěnou zónu a seřazený seznam strukturálních charakteristik.

Pole code může být OK, COUNTRY_CHANGED (server automaticky zvolil vhodnější normu), ANNEX_CHANGED nebo ERROR.

Sněhové zóny
Sněhové zóny
Větrné zóny
Větrné zóny
Seizmické zóny
Seizmické zóny
graphql
query {
  getLoadZoneCharacteristics(
    input: {
      address: "Munich, Germany"
      type: SNOW
      standard: "EN 1991-1-3"
      annex: "Germany"
      layerId: 1
    }
    language: EN
  ) {
    code
    message
    geoLocation {
      latitude longitude altitude
      street zip city state country countryCode
    }
    characteristics {
      standard
      annex
      zoneCharacteristics {
        id
        zone { value }
        characteristics {
          name calculatedValue
          nameHtml unitsHtml description
          decimalPlaces sequence
        }
      }
    }
    noLiability
  }
}

getLoadZoneCharacteristicsV1

DotazVyžaduje auth

Starší verze getZoneCharacteristics. Vrací zkrácenou odpověď bez dat adresy nebo úplných sekvencí charakteristik. Zachováno pro zpětnou kompatibilitu — nové integrace by měly používat getZoneCharacteristics.

graphql
query {
  getLoadZoneCharacteristicsV1(
    input: {
      address: "Munich, Germany"
      type: SNOW
      standard: "EN 1991-1-3"
      annex: "Germany"
      layerId: 1
    }
    language: EN
  )
}

getGeoLocations

DotazVeřejné

Geokódovací vyhledávání — převádí adresu v textové podobě na výsledky souřadnic. Autentizace není vyžadována. Vrací až 10 seřazených výsledků s ulicí, městem, státem, zemí, PSČ a desetinnými souřadnicemi.

Vyhledávání adres
Vyhledávání adres
graphql
query {
  getGeoLocations(
    address: "Altdorf, Uri, Switzerland"
    language: EN
  ) {
    latitude longitude altitude
    displayName street zip city state country countryCode
  }
}

getLoadZoneScreenshot

DotazVyžaduje auth

Generuje snímek mapy zacentrovaný na zadané souřadnice jako PNG nebo JPEG zakódovaný v base64. Vhodné pro vkládání zónových map do zpráv nebo dashboardů.

graphql
query {
  getLoadZoneScreenshot(
    input: {
      address: "Munich, Germany"
      type: SNOW
      standard: "EN 1991-1-3"
      annex: "Germany"
      layerId: 1
      zoom: 8
      screenshotType: { type: PNG quality: 90 }
    }
    language: EN
  )
}

getLoadZoneStandards

DotazVeřejné

Vrátí úplnou hierarchii typů zatěžovacích zón, norem, národních příloh a vrstev. Použijte to k naplnění výběrových prvků nebo k zjištění platných hodnot loadZoneId s jejich ID vrstev, popisky zón a barvami.

graphql
query {
  getLoadZoneStandards(
    countryCode: "DE"
    language: EN
  ) {
    name
    standards {
      name
      annexes {
        name
        actual
        layers { id name }
      }
    }
  }
}

findLoadzones

DotazVyžaduje auth

Vrátí kompaktní seznam zatěžovacích zón seskupených podle typu — ideální pro zjišťování platných párů loadZoneId / layerId.

graphql
query {
  findLoadzones(
    countryCode: "DE"
    language: EN
  ) {
    country
    countryCode
    typeGroups {
      name
      loadzones {
        standard annex loadzoneId
        layers { id name }
      }
    }
  }
}

Příklad odpovědi

json
{
  "data": {
    "findLoadzones": {
      "country": "Germany",
      "countryCode": "DE",
      "typeGroups": [
        {
          "name": "Snow",
          "loadzones": [
            {
              "standard": "EN 1991-1-3",
              "annex": "Germany",
              "loadzoneId": "snow-eu-en-1991",
              "layers": [{ "id": 1, "name": null }]
            }
          ]
        },
        {
          "name": "Wind",
          "loadzones": [
            {
              "standard": "EN 1991-1-4",
              "annex": "Germany",
              "loadzoneId": "wind-eu-en-2005",
              "layers": [{ "id": 1, "name": null }]
            }
          ]
        }
      ]
    }
  }
}

getUserData

DotazVyžaduje auth

Vrátí e-mailovou adresu autentizovaného uživatele, zůstatek kreditů a zbývající počet API kliknutí pro aktuální fakturační období.

graphql
query {
  getUserData {
    email
    clicks
  }
}

getPdf

OdběrVyžaduje auth

Generuje úplnou PDF zprávu o zatěžovací zóně přes WebSocket připojení (GraphQL odběry pomocí graphql-ws). Server streamuje aktualizace průběhu; poslední zpráva obsahuje PDF zakódované v base64 a navrhovaný název souboru.

WebSocket endpoint: wss://team-w.dlubal.com/api/geo-zone/pub/graphql

graphql
subscription {
  getPdf(
    pdfInput: {
      address: "Munich, Germany"
      standard: "EN 1991-1-3"
      annex: "Germany"
      layerId: 1
    }
    language: EN
  ) {
    currentStep
    steps
    message
    pdfResult { pdf name }
  }
}

Příklad JavaScript klienta

javascript
import { createClient } from "graphql-ws";

const client = createClient({
  url: "wss://team-w.dlubal.com/api/geo-zone/pub/graphql",
  connectionParams: { Authorization: "Bearer YOUR_TOKEN" },
});

const unsubscribe = client.subscribe(
  {
    query: `subscription {
      getPdf(pdfInput: {
        address: "Munich, Germany"
        standard: "EN 1991-1-3"
        annex: "Germany"
        layerId: 1
      } language: EN) {
        currentStep steps message
        pdfResult { pdf name }
      }
    }`,
  },
  {
    next({ data }) {
      const step = data?.getPdf;
      console.log(`${step.currentStep}/${step.steps} — ${step.message}`);
      if (step.pdfResult) {
        // step.pdfResult.pdf is base64-encoded
        unsubscribe();
      }
    },
    error(err) { console.error(err); },
    complete()  { console.log("Done"); },
  }
);

Výčtové typy

LanguageEnum

HodnotaJazyk
ENEnglish
DEGerman
FRFrench
ITItalian
ESSpanish
PTPortuguese
PLPolish
CSCzech
RURussian
ZHChinese

LoadzoneTypeEnum

HodnotaPopis
SNOWSnow load zones (EN 1991-1-3)
WINDWind load zones (EN 1991-1-4)
EARTHQUAKESeismic zones (EN 1998)
TORNADOTornado zones (US only)

ScreenshotTypeEnum

HodnotaPopis
PNGLossless PNG image
JPEGCompressed JPEG image

Vstupní typy

CharacteristicsInput

PoleTypPopis
addressString!Free-text address or place name
typeLoadzoneTypeEnumZone type filter (SNOW, WIND, EARTHQUAKE, TORNADO)
standardStringStandard name filter
annexStringAnnex / national annex filter
layerIdIntLayer ID within the standard

GetLoadzoneScreenshotPublicInput

PoleTypPopis
addressString!Free-text address or place name
typeLoadzoneTypeEnumZone type filter
standardStringStandard name filter
annexStringAnnex filter
layerIdIntLayer ID
zoomIntMap zoom level (default 5)
mapStringMap tile style
layerOrderIntLayer rendering order
screenshotTypeScreenshotTypeInputImage format and quality

ScreenshotTypeInput

PoleTypPopis
typeScreenshotTypeEnum!PNG or JPEG (default PNG)
qualityInt!JPEG quality 0–100 (default 90)

GetLoadzonePdfInput

PoleTypPopis
addressString!Free-text address or place name
standardStringStandard name filter
annexStringAnnex filter
layerIdIntLayer ID

Výstupní typy

CharacteristicsResponseMiaType

PoleTypPopis
codeString!Response status code
messageStringHuman-readable message when code ≠ OK
geoLocationGeofinderDataTypeResolved location data
characteristics[CharacteristicsLoadzoneType2]Per-standard zone results
noLiabilityStringDisclaimer text

CharacteristicsLoadzoneType2

PoleTypPopis
standardString!Standard name
annexString!Annex name
zoneCharacteristicsCharacteristicsLayerType2!Layer result

CharacteristicsLayerType2

PoleTypPopis
idInt!Layer ID
zoneCharacteristicsZoneType2!Matched zone value
characteristics[CharacteristicsVariableType]!Ordered load values

CharacteristicsVariableType

PoleTypPopis
nameString!Parameter name (plain text)
nameHtmlString!Parameter name (HTML)
calculatedValueStringComputed value
unitsHtmlString!Units (HTML)
descriptionString!Parameter description
decimalPlacesInt!Display precision
sequenceInt!Display order

GeofinderDataType

PoleTypPopis
latitudeString!Resolved latitude
longitudeString!Resolved longitude
altitudeString!Elevation
streetStringStreet name and number
zipStringPostal code
cityStringCity / municipality
stateStringState or region
countryStringCountry name
countryCodeStringISO country code

GeoLocationType

PoleTypPopis
latitudeString!Latitude
longitudeString!Longitude
altitudeString!Elevation
displayNameStringFull formatted address
streetStringStreet name and number
zipStringPostal code
cityStringCity / municipality
stateStringState or region
countryStringCountry name
countryCodeStringISO country code

UserDataType

PoleTypPopis
emailString!Account email address
clicksInt!Remaining API calls this billing period

LoadzoneGroupShortType

PoleTypPopis
countryString!Country name
countryCodeString!ISO country code
typeGroups[LoadzoneTypeGroupType]!Zones grouped by type

LoadzoneShortType

PoleTypPopis
standardString!Standard name
annexString!Annex name
loadzoneIdString!Unique load zone identifier
layers[LoadzoneLayerShortType]!Available layers

PdfProgressType

PoleTypPopis
currentStepInt!Steps completed
stepsInt!Total steps
messageString!Status message
pdfResultPdfResultTypePresent on final message only

PdfResultType

PoleTypPopis
pdfString!Base64-encoded PDF
nameString!Suggested filename