Skip to main content

Функції для роботи з растрами

gdalWrapper

Функція розроблено як обготка для gdal-cli команд.

💡 Tip

Детальний опис параметрів та результату виконання для кожної з функцій gdal-cli наведено у окументації GDAL

Схема виклику

try {
const { result } = await funcs.gdalWrapper({
name: '<gdal command name>',
pathIn: '<path to in file>',
pathOut: '<path to output file>',
parameters: '<command params>',
funcs,
send
});
} catch (err) {
// work with error
}

Параметри

ПараметрТип данихОпис
namestringНазва gdal-cli команди
pathInstringШлях до вхідного файлу (якщо команда вимагає)
pathOutstringШлях до вихідного файлу (якщо команда вимагає)
funcsstringОб'єкт funcs

Результат

Результатом виконання команди є результат виконання gdal-cli команди

У результаті отримаємо об'єкт з наступними полями:

Назва поляТип данихОпис
resultstringРезультат виконання команди
💡 Tip

Якщо команда повертає результат у консоль - то він повертається у result полі відповіді

❗️ Warning

Функція емітить помилку, якщо вона мала місце. Для обробки помилок потрібно використовувати структуру try-catch

Приклади

Далі наведено два приклади виклику функції:

  1. Отримання інформації про растр - виклик функції з парсингом відповіді
  2. Створення віртуального растру - виклик операції без парсингу відповіді
JS
const { result } = await funcs.gdalWrapper({
name: 'gdalinfo', pathIn: unixPath(`${path}/mosaic.vrt`), parameters: '-json', funcs,
});

mapnik

Функція є обгорткою для виклику за назвою функцію мікросервісу тайлінгу

Приклад

// по назві
const mapServerAddress = funcs.mapnik('mapServerAddress');

// Декомпозиція
const { mapServerAddress, render, printMap, uploadFile } = funcs.mapnik();

if (!render) {
// Обробка випадку, якщо сервіс недоступний
}

Результат

У результаті ми отримаємо набір потрібних нам функцій та параметрів для роботи з сервісом тайлінгу

❗️ Warning

Функції роботи з сервісом тайлінгу працюють через Promise, тому для відловлювання та обробки помилок даних функцій треба використовувати структуру try-catch

rasterInfo

Функція використовується для отримання інформації про растр

const rasterInfo = awat funcs.rasterInfo({ path, send, nocache, proj4 });

Параметри

ПараметрТип данихОпис
pathstringШлях до растру відносно директорії <workDir>/map/raster
nocachebooleanПрапореці "Беремо дані про растр з кешу чи отримуємо нові та оновлюємо?"
proj4stringПроекція растру у форматі proj4 text

Результат

У результаті отримаємо JSON-об'єкт наступного вигляду:

Приклад
{
"proj4": "+proj=longlat +datum=WGS84 +no_defs ", // Проекція растру
"extent": [ // Екстенд в системі координат растру
21.9998611,
43.9998611,
41.0001389,
53.0001389
],
"geom": { //Геометрія в системі координат растру
"type":"Polygon",
"coordinates": [21.9998611, 53.0001389, 41.0001389, 43.9998611]
},

"wgs84Extent": { //Геометрія WgS84
"type":"Polygon",
"coordinates": [21.9998611, 53.0001389, 41.0001389, 43.9998611]
},

"bounds": [21.9998611, 53.0001389, 41.0001389, 43.9998611], // Екстенд в WGS84

"bands": "Red,Green,Blue,Alpha", // канали растри через кому
"files": [
{
"name":"mosaic.vrt",
"size":220146,
"extent": [
21.9998611,
43.9998611,
41.0001389,
53.0001389
],
"geom": {"type":"Polygon","coordinates":[ ] },
"bands":"Red,Green,Blue,Alpha",
"crs":"+proj=longlat +datum=WGS84 +no_defs",
"rasterSize":[
68401,
32401
],
"err":"",
"time":1517
}
],
"dir": false, // Чи є растр віртуальним?
"size": 220146, // Об'єм, який займає растр у байтах
"count": 1 //Кількість файлів у растрі
}

Опис полів відповіді:

Назва поляТип данихОпис
proj4stringПроекція растру
extentArray<Array<int>>Екстенд растру
geomjsonГеометрія растру у вигляді geojson - newline delimiter
wgs84ExtentjsonЕкстенд растру у системі координат EPSG:4326 у вигляді geojson - newline delimiter
boundsArray<int>BBOX растру
bandsstringПослідовність бендів растру
filesArray<json>Опис кожного файлу, який потрапив у вибірку
dirbooleanЧи є растр віртуальним?
sizeuintОб'єм, який займає растр у байтах
countuintКількість файлів у растрі
⚠️ Warning

Якщо растр віртуальний (створили за допомогою об'єднання декількох растрів в один файл .vrt) - то у полі files буде більше ніж 1 об'єкт з метаданими до кожного вкладеного растру. Також значення полів count та dir будуть більшим за 1 та true відповідно. Всі інші поля будуть стосуватись виключно віртуального растру.

rasterTMS

Функція створена для створення/перестворення конфігурації веб мапи.

Схема виклику

JS
const { id, extent, url } = await funcs.rasterTMS({ path: <path to raster> });

Параметри

Назва поляТип данихОпис
pathstringШлях до растру відносно директорії <workdir>/map/raster, закодований у base64
💡 Підказка

Параметр path може приймати як шлях до конкретного файлу, так і до директорії з файлами. У випадку директорії автоматично створюється віртуальний растр .vrt, який містить усі растрові зображення з директорії.

Результат

У результаті отримаємо об'єкт з наступними полями:

Назва поляТип данихОпис
idstringРозкодоване посилання до файлу відносно директорії <workdir>/map/raster
extentArray<uint>Межі растру у системі координат EPSG:4326
urlstringЕндпоінт для отримання тайлів

Приклади

JS
const data = await funcs.rasterTMS({path: 'REVNLVJHQg=='});