GeoZone
Documentation API

GeoZone Public API

Une API GraphQL qui retourne des données de zones de charge structurelles, des caractéristiques géographiques et des rapports PDF pour n'importe quelles coordonnées dans le monde.

7 Requêtes1 SouscriptionAuth Bearer
POSThttps://team-w.dlubal.com/api/geo-zone/pub/graphql

Application Web

L'outil GeoZone est également disponible en tant qu'application web interactive sur dlubal.com. Sélectionnez n'importe quel emplacement sur la carte pour afficher instantanément toutes les valeurs de zones de charge structurelles.

Application web GeoZone
Application web GeoZone

Authentification

La plupart des requêtes nécessitent un token Bearer dans l'en-tête Authorization :

Authorization:Bearer YOUR_TOKEN

Les requêtes marquées Public ne nécessitent pas d'authentification. Toutes les autres consomment un crédit API par requête.

getLoadZoneCharacteristics

RequêteAuth requise

Retourne la classification de zone de charge et toutes les caractéristiques pour une coordonnée donnée. Accepte un loadZoneId (depuis findLoadzones), layerId, et la latitude/longitude décimale sous forme de chaînes. La réponse inclut les détails de l'adresse, la zone correspondante et une liste ordonnée de caractéristiques structurelles.

Le champ code peut être OK, COUNTRY_CHANGED (le serveur a sélectionné automatiquement une norme plus appropriée), ANNEX_CHANGED, ou ERROR.

Zones de neige
Zones de neige
Zones de vent
Zones de vent
Zones sismiques
Zones sismiques
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

RequêteAuth requise

Version héritée de getZoneCharacteristics. Retourne une réponse condensée sans données d'adresse ni séquences de caractéristiques complètes. Conservé pour la compatibilité ascendante — les nouvelles intégrations doivent utiliser getZoneCharacteristics.

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

getGeoLocations

RequêtePublic

Recherche de géocodage — convertit une adresse en texte libre en résultats de coordonnées. Aucune authentification requise. Retourne jusqu'à 10 résultats classés avec rue, ville, état, pays, code postal et coordonnées décimales.

Recherche d'adresse
Recherche d'adresse
graphql
query {
  getGeoLocations(
    address: "Altdorf, Uri, Switzerland"
    language: EN
  ) {
    latitude longitude altitude
    displayName street zip city state country countryCode
  }
}

getLoadZoneScreenshot

RequêteAuth requise

Génère une capture d'écran de carte centrée sur les coordonnées données sous forme de PNG ou JPEG encodé en base64. Utile pour intégrer des cartes de zones dans des rapports ou tableaux de bord.

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

RequêtePublic

Retourne la hiérarchie complète des types de zones de charge, normes, annexes nationales et couches. Utilisez ceci pour remplir des sélecteurs ou découvrir les valeurs loadZoneId valides avec leurs identifiants de couche, libellés de zone et couleurs.

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

findLoadzones

RequêteAuth requise

Retourne une liste compacte de zones de charge groupées par type — idéal pour découvrir les paires valides loadZoneId / layerId.

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

Exemple de réponse

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

RequêteAuth requise

Retourne l'adresse e-mail de l'utilisateur authentifié, le solde de crédits et le nombre de clics API restants pour la période de facturation en cours.

graphql
query {
  getUserData {
    email
    clicks
  }
}

getPdf

SouscriptionAuth requise

Génère un rapport PDF complet de zone de charge via une connexion WebSocket (souscriptions GraphQL via graphql-ws). Le serveur diffuse des mises à jour de progression ; le message final contient le PDF encodé en base64 et un nom de fichier suggéré.

Point de terminaison WebSocket : 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 }
  }
}

Exemple client JavaScript

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"); },
  }
);

Énumérations

LanguageEnum

ValeurLangue
ENEnglish
DEGerman
FRFrench
ITItalian
ESSpanish
PTPortuguese
PLPolish
CSCzech
RURussian
ZHChinese

LoadzoneTypeEnum

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

ScreenshotTypeEnum

ValeurDescription
PNGLossless PNG image
JPEGCompressed JPEG image

Types d'entrée

CharacteristicsInput

ChampTypeDescription
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

ChampTypeDescription
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

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

GetLoadzonePdfInput

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

Types de sortie

CharacteristicsResponseMiaType

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

CharacteristicsLoadzoneType2

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

CharacteristicsLayerType2

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

CharacteristicsVariableType

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

GeofinderDataType

ChampTypeDescription
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

ChampTypeDescription
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

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

LoadzoneGroupShortType

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

LoadzoneShortType

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

PdfProgressType

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

PdfResultType

ChampTypeDescription
pdfString!Base64-encoded PDF
nameString!Suggested filename