GeoZone
Documentação da API

GeoZone Public API

Uma API GraphQL que retorna dados de zonas de carga estrutural, características geográficas e relatórios PDF para quaisquer coordenadas do mundo.

7 Consultas1 SubscriçãoBearer Auth
POSThttps://team-w.dlubal.com/api/geo-zone/pub/graphql

Aplicação Web

A ferramenta GeoZone também está disponível como aplicação web interativa em dlubal.com. Selecione qualquer localização no mapa para visualizar instantaneamente todos os valores de zonas de carga estrutural.

Aplicação web GeoZone
Aplicação web GeoZone

Autenticação

A maioria das consultas requer um token Bearer no cabeçalho Authorization:

Authorization:Bearer YOUR_TOKEN

Consultas marcadas como Público não requerem autenticação. Todas as outras consomem um crédito de API por requisição.

getLoadZoneCharacteristics

ConsultaAuth necessária

Retorna a classificação de zona de carga e todas as características para uma coordenada específica. Aceita um loadZoneId (de findLoadzones), layerId, e latitude/longitude decimal como strings. A resposta inclui detalhes de endereço, a zona correspondente e uma lista ordenada de características estruturais.

O campo code pode ser OK, COUNTRY_CHANGED (o servidor selecionou automaticamente um padrão mais adequado), ANNEX_CHANGED, ou ERROR.

Zonas de neve
Zonas de neve
Zonas de vento
Zonas de vento
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 necessária

Versão legada de getZoneCharacteristics. Retorna uma resposta condensada sem dados de endereço ou sequências completas de características. Mantido para compatibilidade com versões anteriores — novas integrações devem 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

Pesquisa de geocodificação — converte um endereço em texto livre em resultados de coordenadas. Não requer autenticação. Retorna até 10 resultados classificados com rua, cidade, estado, país, código postal e coordenadas decimais.

Pesquisa de endereço
Pesquisa de endereço
graphql
query {
  getGeoLocations(
    address: "Altdorf, Uri, Switzerland"
    language: EN
  ) {
    latitude longitude altitude
    displayName street zip city state country countryCode
  }
}

getLoadZoneScreenshot

ConsultaAuth necessária

Gera uma captura de tela do mapa centralizada nas coordenadas fornecidas como PNG ou JPEG codificado em base64. Útil para incorporar mapas de zonas em relatórios ou painéis.

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

Retorna a hierarquia completa de tipos de zonas de carga, normas, anexos nacionais e camadas. Use isso para preencher seletores ou descobrir valores válidos de loadZoneId com seus IDs de camada, rótulos de zona e cores.

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

findLoadzones

ConsultaAuth necessária

Retorna uma lista compacta de zonas de carga agrupadas por tipo — ideal para descobrir pares válidos de loadZoneId / layerId.

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

Exemplo de Resposta

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 necessária

Retorna o endereço de e-mail do usuário autenticado, saldo de créditos e contagem de cliques de API restantes para o período de cobrança atual.

graphql
query {
  getUserData {
    email
    clicks
  }
}

getPdf

SubscriçãoAuth necessária

Gera um relatório PDF completo de zona de carga via conexão WebSocket (subscrições GraphQL via graphql-ws). O servidor transmite atualizações de progresso; a mensagem final contém o PDF codificado em base64 e um nome de arquivo sugerido.

Endpoint 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 }
  }
}

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

Enumerações

LanguageEnum

ValorIdioma
ENEnglish
DEGerman
FRFrench
ITItalian
ESSpanish
PTPortuguese
PLPolish
CSCzech
RURussian
ZHChinese

LoadzoneTypeEnum

ValorDescrição
SNOWSnow load zones (EN 1991-1-3)
WINDWind load zones (EN 1991-1-4)
EARTHQUAKESeismic zones (EN 1998)
TORNADOTornado zones (US only)

ScreenshotTypeEnum

ValorDescrição
PNGLossless PNG image
JPEGCompressed JPEG image

Tipos de Entrada

CharacteristicsInput

CampoTipoDescrição
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

CampoTipoDescrição
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

CampoTipoDescrição
typeScreenshotTypeEnum!PNG or JPEG (default PNG)
qualityInt!JPEG quality 0–100 (default 90)

GetLoadzonePdfInput

CampoTipoDescrição
addressString!Free-text address or place name
standardStringStandard name filter
annexStringAnnex filter
layerIdIntLayer ID

Tipos de Saída

CharacteristicsResponseMiaType

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

CharacteristicsLoadzoneType2

CampoTipoDescrição
standardString!Standard name
annexString!Annex name
zoneCharacteristicsCharacteristicsLayerType2!Layer result

CharacteristicsLayerType2

CampoTipoDescrição
idInt!Layer ID
zoneCharacteristicsZoneType2!Matched zone value
characteristics[CharacteristicsVariableType]!Ordered load values

CharacteristicsVariableType

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

GeofinderDataType

CampoTipoDescrição
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

CampoTipoDescrição
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

CampoTipoDescrição
emailString!Account email address
clicksInt!Remaining API calls this billing period

LoadzoneGroupShortType

CampoTipoDescrição
countryString!Country name
countryCodeString!ISO country code
typeGroups[LoadzoneTypeGroupType]!Zones grouped by type

LoadzoneShortType

CampoTipoDescrição
standardString!Standard name
annexString!Annex name
loadzoneIdString!Unique load zone identifier
layers[LoadzoneLayerShortType]!Available layers

PdfProgressType

CampoTipoDescrição
currentStepInt!Steps completed
stepsInt!Total steps
messageString!Status message
pdfResultPdfResultTypePresent on final message only

PdfResultType

CampoTipoDescrição
pdfString!Base64-encoded PDF
nameString!Suggested filename