Dataset API в экосистеме Mapbox представляет собой серверный REST-интерфейс для хранения, редактирования и управления геоданными в формате GeoJSON. Данные организуются в виде датасетов (datasets), каждый из которых содержит набор объектов Feature с геометрией и свойствами.
Ключевая особенность Dataset API — работа на уровне отдельных геообъектов, а не тайлов. Это делает его удобным для сценариев, где требуется частое обновление точечных или полигональных данных без пересборки тайлсетов.
Dataset API не является частью Mapbox GL JS напрямую, но тесно интегрируется с ним через GeoJSON source.
Каждый dataset представляет собой коллекцию GeoJSON Feature-объектов:
FeatureCollection — контейнер верхнего уровня
Feature — отдельный объект с:
geometry (Point, LineString, Polygon)properties (произвольные атрибуты)id (уникальный идентификатор)Пример структуры:
{
"type": "Feature",
"id": "poi-123",
"geometry": {
"type": "Point",
"coordinates": [69.2401, 41.2995]
},
"properties": {
"name": "Object A",
"category": "warehouse"
}
}
Dataset хранит такие объекты независимо от визуализации и тайловой структуры.
Все запросы к Dataset API требуют access token. Он передаётся через query parameter:
https://api.mapbox.com/datasets/v1/{username}?access_token=YOUR_TOKEN
или в конкретных операциях:
https://api.mapbox.com/datasets/v1/{username}/{dataset_id}/features/{feature_id}?access_token=YOUR_TOKEN
Dataset API работает поверх HTTP методов:
GET — получение данныхPOST — создание dataset или featurePUT — полное обновление featurePATCH — частичное обновление (в некоторых реализациях
ограничено)DELETE — удаление dataset или featurePOST /datasets/v1/{username}?access_token=TOKEN
Body:
{
"name": "logistics_points",
"description": "Склады и точки доставки"
}
Ответ возвращает dataset_id, который используется далее
для операций.
GET /datasets/v1/{username}?access_token=TOKEN
Возвращает массив доступных наборов данных с метаданными.
DELETE /datasets/v1/{username}/{dataset_id}?access_token=TOKEN
Удаляет весь набор данных вместе с объектами.
PUT /datasets/v1/{username}/{dataset_id}/features/{feature_id}?access_token=TOKEN
Body:
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [69.2401, 41.2995]
},
"properties": {
"name": "Warehouse 12",
"capacity": 3400
}
}
Feature с указанным feature_id создаётся или заменяется
полностью.
GET /datasets/v1/{username}/{dataset_id}/features/{feature_id}?access_token=TOKEN
Возвращает один GeoJSON Feature.
GET /datasets/v1/{username}/{dataset_id}/features?access_token=TOKEN
Возвращает FeatureCollection.
DELETE /datasets/v1/{username}/{dataset_id}/features/{feature_id}?access_token=TOKEN
Удаляет конкретный геообъект без затрагивания остальных данных.
Dataset API не обеспечивает автоматическую синхронизацию с картой. Обновления должны быть явно загружены в Mapbox GL JS.
Типовой сценарий:
Dataset API сам по себе не отображает данные. Визуализация происходит через GeoJSON source в Mapbox GL JS.
map.addSource('dataset-source', {
type: 'geojson',
data: 'https://api.mapbox.com/datasets/v1/username/dataset_id/features?access_token=TOKEN'
});
Источник напрямую привязан к HTTP-ответу Dataset API.
map.addLayer({
id: 'dataset-layer',
type: 'circle',
source: 'dataset-source',
paint: {
'circle-radius': 6,
'circle-color': '#ff5200'
}
});
Все объекты dataset отображаются как геометрии GeoJSON.
Dataset API не пушит изменения в Mapbox GL JS автоматически, поэтому используется ручное обновление источника.
const source = map.getSource('dataset-source');
fetch('https://api.mapbox.com/datasets/v1/username/dataset_id/features?access_token=TOKEN')
.then(res => res.json())
.then(data => {
source.setData(data);
});
Метод setData полностью заменяет содержимое
источника.
Dataset API ориентирован на умеренные объёмы данных и имеет ряд ограничений:
Для высоконагруженных сценариев используется Tilesets API и предварительная генерация тайлов.
Dataset API подходит для систем, где точки регулярно добавляются или изменяются:
Dataset может выступать как backend для:
Часто Dataset API используется как промежуточное хранилище между:
Данные синхронизируются через серверные скрипты, после чего обновляются на карте через GeoJSON source.
PUT или POST в Dataset
APIsetDataFeature ID играет ключевую роль в обновлении данных:
id → замена объектаid → добавление нового объектаid → невозможность точечного обновленияРекомендуется использовать стабильные идентификаторы из бизнес-логики системы, а не генерируемые случайно значения.
При работе с Dataset API и Mapbox GL JS важны следующие практики:
setDataAccess token определяет уровень доступа:
Использование secret token на клиенте недопустимо, так как даёт возможность модификации данных.
Dataset API часто используется вместе с:
Dataset API выступает как промежуточный слой между сырой геоинформацией и визуализацией на карте.