Datasets в Mapbox Studio представляют собой редактируемое хранилище геоданных в формате GeoJSON, предназначенное для создания, управления и обновления пространственных объектов до их публикации в виде тайловых наборов (tilesets). Они служат промежуточным слоем между сырыми данными и визуализацией в Mapbox, обеспечивая гибкий редактор объектов и API-доступ для автоматизации.
Datasets занимают промежуточное положение между пользовательскими данными и рендерингом на карте:
Главная идея заключается в том, что dataset не используется напрямую в Mapbox GL JS для высокопроизводительного рендеринга, а трансформируется в tileset.
Dataset состоит из набора Feature-объектов GeoJSON:
{
"type": "Feature",
"id": "point-1",
"geometry": {
"type": "Point",
"coordinates": [69.2401, 41.2995]
},
"properties": {
"name": "Объект A",
"type": "warehouse",
"capacity": 1200
}
}
Ключевые элементы:
Особенность Datasets заключается в том, что они допускают частичное обновление объектов, не требуя пересборки всего слоя.
Datasets управляются через Dataset API, который позволяет выполнять CRUD-операции.
POST /datasets/v1/{username}
Пример тела запроса:
{
"name": "logistics_points",
"description": "Точки логистической инфраструктуры"
}
PUT /datasets/v1/{username}/{dataset_id}/features/{feature_id}
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [69.2401, 41.2995]
},
"properties": {
"status": "active"
}
}
GET /datasets/v1/{username}/{dataset_id}/features/{feature_id}
DELETE /datasets/v1/{username}/{dataset_id}/features/{feature_id}
GET /datasets/v1/{username}/{dataset_id}/features
Поддерживается пагинация, что важно при больших объемах данных.
Datasets не используются напрямую в рендеринге Mapbox GL JS. Для визуализации необходимо создать tileset.
Процесс:
Преобразование выполняется асинхронно и может занимать от нескольких секунд до нескольких минут в зависимости от объема данных.
После публикации dataset в виде tileset он подключается как источник данных.
map.on('load', () => {
map.addSource('logistics', {
type: 'vector',
url: 'mapbox://your_account.logistics_points'
});
});
map.addLayer({
id: 'logistics-layer',
type: 'circle',
source: 'logistics',
'source-layer': 'logistics_points',
paint: {
'circle-radius': 6,
'circle-color': '#ff5200'
}
});
Хотя datasets обычно публикуются как tilesets, в некоторых сценариях данные могут использоваться как GeoJSON источник.
map.addSource('dynamic-data', {
type: 'geojson',
data: 'https://api.mapbox.com/datasets/v1/{username}/{dataset_id}/features?access_token=TOKEN'
});
Такой подход применяется для:
В Mapbox Studio Dataset Editor доступны:
Редактор синхронизируется с Dataset API, поэтому изменения доступны сразу через запросы.
Datasets не имеют классического version control, но поддерживают:
Типичный цикл обновления:
GeoJSON-логика напрямую транслируется в dataset, но требует соблюдения ряда правил:
Типичный серверный сценарий обновления данных:
import fetch from 'node-fetch';
async function updateFeature(datasetId, featureId, geometry) {
await fetch(
`https://api.mapbox.com/datasets/v1/{username}/${datasetId}/features/${featureId}?access_token=TOKEN`,
{
method: 'PUT',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
type: 'Feature',
geometry,
properties: {
updatedAt: Date.now()
}
})
}
);
}
Такая схема позволяет строить динамические геоинформационные системы с обновлением данных в реальном времени.
Стандартная модель обработки данных:
Эта цепочка позволяет разделить этапы подготовки и визуализации данных, обеспечивая масштабируемость и оптимизацию производительности на клиенте.
При публикации нового tileset:
map.removeLayer('logistics-layer');
map.removeSource('logistics');
Типовой сценарий:
Такая модель обеспечивает баланс между гибкостью редактирования и производительностью рендеринга в браузере.