GeoZone
Документация API

GeoZone Public API

GraphQL API, возвращающий данные о структурных нагрузочных зонах, географические характеристики и PDF-отчёты для любых координат по всему миру.

7 запросов1 подпискаBearer-аутентификация
POSThttps://team-w.dlubal.com/api/geo-zone/pub/graphql

Веб-приложение

Инструмент GeoZone также доступен в виде интерактивного веб-приложения на dlubal.com. Выберите любое место на карте, чтобы мгновенно просмотреть все значения структурных нагрузочных зон.

Веб-приложение GeoZone
Веб-приложение GeoZone

Аутентификация

Большинство запросов требуют токен Bearer в заголовке Authorization:

Authorization:Bearer YOUR_TOKEN

Запросы, помеченные как Публичный не требуют аутентификации. Все остальные расходуют один кредит API за запрос.

getLoadZoneCharacteristics

ЗапросТребует auth

Возвращает классификацию нагрузочной зоны и все характеристики для заданных координат. Принимает loadZoneId (из findLoadzones), layerId и широту/долготу в виде десятичных строк. Ответ включает данные адреса, соответствующую зону и упорядоченный список структурных характеристик.

Поле code может принимать значения OK, COUNTRY_CHANGED (сервер автоматически выбрал более подходящий стандарт), ANNEX_CHANGED или ERROR.

Снеговые зоны
Снеговые зоны
Ветровые зоны
Ветровые зоны
Сейсмические зоны
Сейсмические зоны
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

ЗапросТребует auth

Устаревшая версия getZoneCharacteristics. Возвращает сокращённый ответ без данных адреса или полных последовательностей характеристик. Сохранена для обратной совместимости — новые интеграции должны использовать getZoneCharacteristics.

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

getGeoLocations

ЗапросПубличный

Геокодирование — преобразует адрес в свободной форме в координаты. Аутентификация не требуется. Возвращает до 10 ранжированных результатов с улицей, городом, регионом, страной, почтовым индексом и десятичными координатами.

Поиск адреса
Поиск адреса
graphql
query {
  getGeoLocations(
    address: "Altdorf, Uri, Switzerland"
    language: EN
  ) {
    latitude longitude altitude
    displayName street zip city state country countryCode
  }
}

getLoadZoneScreenshot

ЗапросТребует auth

Генерирует снимок карты с центром в заданных координатах в виде PNG или JPEG в кодировке base64. Полезно для встраивания карт зон в отчёты или дашборды.

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

ЗапросПубличный

Возвращает полную иерархию типов нагрузочных зон, стандартов, национальных приложений и слоёв. Используйте для заполнения выпадающих списков или поиска допустимых значений loadZoneId с их идентификаторами слоёв, метками зон и цветами.

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

findLoadzones

ЗапросТребует auth

Возвращает компактный список нагрузочных зон, сгруппированных по типу — идеально для поиска допустимых пар loadZoneId / layerId.

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

Пример ответа

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

ЗапросТребует auth

Возвращает адрес электронной почты аутентифицированного пользователя, баланс кредитов и оставшееся количество кликов API за текущий расчётный период.

graphql
query {
  getUserData {
    email
    clicks
  }
}

getPdf

ПодпискаТребует auth

Генерирует полный PDF-отчёт о нагрузочной зоне через WebSocket-соединение (подписки GraphQL через graphql-ws). Сервер передаёт обновления прогресса; последнее сообщение содержит PDF в кодировке base64 и предложенное имя файла.

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

Пример клиента на 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"); },
  }
);

Перечисления

LanguageEnum

ЗначениеЯзык
ENEnglish
DEGerman
FRFrench
ITItalian
ESSpanish
PTPortuguese
PLPolish
CSCzech
RURussian
ZHChinese

LoadzoneTypeEnum

ЗначениеОписание
SNOWSnow load zones (EN 1991-1-3)
WINDWind load zones (EN 1991-1-4)
EARTHQUAKESeismic zones (EN 1998)
TORNADOTornado zones (US only)

ScreenshotTypeEnum

ЗначениеОписание
PNGLossless PNG image
JPEGCompressed JPEG image

Входные типы

CharacteristicsInput

ПолеТипОписание
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

ПолеТипОписание
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

ПолеТипОписание
typeScreenshotTypeEnum!PNG or JPEG (default PNG)
qualityInt!JPEG quality 0–100 (default 90)

GetLoadzonePdfInput

ПолеТипОписание
addressString!Free-text address or place name
standardStringStandard name filter
annexStringAnnex filter
layerIdIntLayer ID

Выходные типы

CharacteristicsResponseMiaType

ПолеТипОписание
codeString!Response status code
messageStringHuman-readable message when code ≠ OK
geoLocationGeofinderDataTypeResolved location data
characteristics[CharacteristicsLoadzoneType2]Per-standard zone results
noLiabilityStringDisclaimer text

CharacteristicsLoadzoneType2

ПолеТипОписание
standardString!Standard name
annexString!Annex name
zoneCharacteristicsCharacteristicsLayerType2!Layer result

CharacteristicsLayerType2

ПолеТипОписание
idInt!Layer ID
zoneCharacteristicsZoneType2!Matched zone value
characteristics[CharacteristicsVariableType]!Ordered load values

CharacteristicsVariableType

ПолеТипОписание
nameString!Parameter name (plain text)
nameHtmlString!Parameter name (HTML)
calculatedValueStringComputed value
unitsHtmlString!Units (HTML)
descriptionString!Parameter description
decimalPlacesInt!Display precision
sequenceInt!Display order

GeofinderDataType

ПолеТипОписание
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

ПолеТипОписание
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

ПолеТипОписание
emailString!Account email address
clicksInt!Remaining API calls this billing period

LoadzoneGroupShortType

ПолеТипОписание
countryString!Country name
countryCodeString!ISO country code
typeGroups[LoadzoneTypeGroupType]!Zones grouped by type

LoadzoneShortType

ПолеТипОписание
standardString!Standard name
annexString!Annex name
loadzoneIdString!Unique load zone identifier
layers[LoadzoneLayerShortType]!Available layers

PdfProgressType

ПолеТипОписание
currentStepInt!Steps completed
stepsInt!Total steps
messageString!Status message
pdfResultPdfResultTypePresent on final message only

PdfResultType

ПолеТипОписание
pdfString!Base64-encoded PDF
nameString!Suggested filename