GeoZone
Documentación de la API

GeoZone Public API

Una API GraphQL que devuelve datos de zonas de carga estructural, características geográficas e informes PDF para cualquier coordenada en el mundo.

7 Consultas1 SuscripciónBearer Auth
POSThttps://team-w.dlubal.com/api/geo-zone/pub/graphql

Aplicación Web

La herramienta GeoZone también está disponible como aplicación web interactiva en dlubal.com. Seleccione cualquier ubicación en el mapa para ver instantáneamente todos los valores de zonas de carga estructural.

Aplicación web GeoZone
Aplicación web GeoZone

Autenticación

La mayoría de las consultas requieren un token Bearer en el encabezado Authorization:

Authorization:Bearer YOUR_TOKEN

Las consultas marcadas como Público no requieren autenticación. Todas las demás consumen un crédito de API por solicitud.

getLoadZoneCharacteristics

ConsultaAuth requerida

Devuelve la clasificación de zona de carga y todas las características para una coordenada dada. Acepta un loadZoneId (de findLoadzones), layerId, y latitud/longitud decimal como cadenas. La respuesta incluye detalles de dirección, la zona coincidente y una lista ordenada de características estructurales.

El campo code puede ser OK, COUNTRY_CHANGED (el servidor seleccionó automáticamente un estándar más apropiado), ANNEX_CHANGED, o ERROR.

Zonas de nieve
Zonas de nieve
Zonas de viento
Zonas de viento
Zonas sísmicas
Zonas sísmicas
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

ConsultaAuth requerida

Versión heredada de getZoneCharacteristics. Devuelve una respuesta condensada sin datos de dirección ni secuencias de características completas. Mantenida por compatibilidad con versiones anteriores — las nuevas integraciones deben usar getZoneCharacteristics.

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

getGeoLocations

ConsultaPúblico

Búsqueda de geocodificación — convierte una dirección de texto libre en resultados de coordenadas. No requiere autenticación. Devuelve hasta 10 resultados clasificados con calle, ciudad, estado, país, código postal y coordenadas decimales.

Búsqueda de dirección
Búsqueda de dirección
graphql
query {
  getGeoLocations(
    address: "Altdorf, Uri, Switzerland"
    language: EN
  ) {
    latitude longitude altitude
    displayName street zip city state country countryCode
  }
}

getLoadZoneScreenshot

ConsultaAuth requerida

Genera una captura de pantalla del mapa centrada en las coordenadas dadas como PNG o JPEG codificado en base64. Útil para incrustar mapas de zonas en informes o paneles de control.

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

ConsultaPúblico

Devuelve la jerarquía completa de tipos de zonas de carga, estándares, anexos nacionales y capas. Úselo para rellenar selectores o descubrir valores válidos de loadZoneId con sus ID de capa, etiquetas de zona y colores.

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

findLoadzones

ConsultaAuth requerida

Devuelve una lista compacta de zonas de carga agrupadas por tipo — ideal para descubrir pares válidos de loadZoneId / layerId.

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

Ejemplo de respuesta

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

ConsultaAuth requerida

Devuelve la dirección de correo electrónico del usuario autenticado, el saldo de créditos y el número de clics de API restantes para el período de facturación actual.

graphql
query {
  getUserData {
    email
    clicks
  }
}

getPdf

SuscripciónAuth requerida

Genera un informe PDF completo de zona de carga a través de una conexión WebSocket (suscripciones GraphQL via graphql-ws). El servidor transmite actualizaciones de progreso; el mensaje final contiene el PDF codificado en base64 y un nombre de archivo sugerido.

Punto de conexión 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 }
  }
}

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

Enumeraciones

LanguageEnum

ValorIdioma
ENEnglish
DEGerman
FRFrench
ITItalian
ESSpanish
PTPortuguese
PLPolish
CSCzech
RURussian
ZHChinese

LoadzoneTypeEnum

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

ScreenshotTypeEnum

ValorDescripción
PNGLossless PNG image
JPEGCompressed JPEG image

Tipos de entrada

CharacteristicsInput

CampoTipoDescripción
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

CampoTipoDescripción
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

CampoTipoDescripción
typeScreenshotTypeEnum!PNG or JPEG (default PNG)
qualityInt!JPEG quality 0–100 (default 90)

GetLoadzonePdfInput

CampoTipoDescripción
addressString!Free-text address or place name
standardStringStandard name filter
annexStringAnnex filter
layerIdIntLayer ID

Tipos de salida

CharacteristicsResponseMiaType

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

CharacteristicsLoadzoneType2

CampoTipoDescripción
standardString!Standard name
annexString!Annex name
zoneCharacteristicsCharacteristicsLayerType2!Layer result

CharacteristicsLayerType2

CampoTipoDescripción
idInt!Layer ID
zoneCharacteristicsZoneType2!Matched zone value
characteristics[CharacteristicsVariableType]!Ordered load values

CharacteristicsVariableType

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

GeofinderDataType

CampoTipoDescripción
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

CampoTipoDescripción
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

CampoTipoDescripción
emailString!Account email address
clicksInt!Remaining API calls this billing period

LoadzoneGroupShortType

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

LoadzoneShortType

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

PdfProgressType

CampoTipoDescripción
currentStepInt!Steps completed
stepsInt!Total steps
messageString!Status message
pdfResultPdfResultTypePresent on final message only

PdfResultType

CampoTipoDescripción
pdfString!Base64-encoded PDF
nameString!Suggested filename