Загрузка и обработка пространственных данных в CesiumJS опирается на несколько взаимосвязанных уровней: источники данных, механизмы их асинхронной загрузки, парсинг форматов и последующее преобразование в граф сцены. Архитектура построена таким образом, чтобы поддерживать потоковую передачу больших объёмов геоданных без блокировки основного потока выполнения.
Ключевым механизмом работы с данными выступает система
DataSource. Она предоставляет унифицированный интерфейс для
различных форматов и источников:
CzmlDataSourceGeoJsonDataSourceKmlDataSourceCustomDataSourceКаждый DataSource отвечает за:
Entity)Viewer.entitiesВажным свойством является асинхронность: все операции загрузки
возвращают Promise, что позволяет не блокировать рендеринг
сцены.
CesiumJS использует многоуровневую систему асинхронной обработки:
Cesium.Resource инкапсулирует HTTP-запросыloadJson, loadText, loadBlob
выполняют базовые операции загрузкиDataSource.load управляет цепочкой парсингаТипичный процесс выглядит следующим образом:
ResourceАсинхронность обеспечивает возможность потоковой загрузки даже при работе с тяжёлыми слоями данных.
GeoJSON является одним из наиболее часто используемых форматов благодаря простоте структуры и широкой поддержке.
GeoJsonDataSource выполняет разбор следующих типов
объектов:
PointLineStringPolygonMultiPointMultiLineStringMultiPolygonGeometryCollectionКаждый объект преобразуется в Entity, содержащую:
PositionProperty,
PolygonHierarchy)ColorMaterialProperty,
PolylineDashMaterialProperty)Парсинг GeoJSON включает несколько этапов:
Cartesian3Особое значение имеет преобразование координат. Cesium использует систему:
Cartesian3Каждая точка проходит трансформацию через
Cesium.Cartesian3.fromDegrees.
При больших наборах данных применяется:
CZML представляет собой специализированный формат для временных и динамических сцен.
CzmlDataSource поддерживает:
CZML описывает не только геометрию, но и её изменение во времени.
Каждый объект CZML содержит:
intervalpositionorientationCesium интерпретирует эти данные через систему
Property.
Динамические значения вычисляются через:
Это позволяет воспроизводить движение объектов без постоянного пересоздания сущностей.
KML является более сложным форматом, поскольку включает:
Style и StyleMapNetworkLink)Folder,
Document)При парсинге Cesium выполняет:
KML требует дополнительных шагов нормализации:
NetworkLink может инициировать каскадную загрузку, что усложняет контроль за производительностью.
3D Tiles — основной формат потоковой загрузки трёхмерных сцен.
Cesium3DTileset обеспечивает:
Каждый tileset включает:
Cesium использует два типа уточнения:
REPLACEADDАлгоритм загрузки:
3D Tiles поддерживает:
Каждый формат требует специализированного декодера.
Все DataSource в конечном итоге создают объекты Entity.
Они служат универсальным контейнером для:
Entity поддерживает ленивые вычисления через Property
систему.
Свойства могут быть:
Примеры:
ConstantPropertySampledPropertyTimeIntervalCollectionPropertyЭто позволяет описывать изменения без постоянного пересоздания сцены.
Создание собственного источника требует реализации:
load()changedEvententitiesТипичный сценарий:
При работе с внешними сервисами выполняются:
CesiumJS оптимизирует загрузку через:
Система учитывает:
Кэширование происходит на нескольких уровнях:
Это уменьшает повторные загрузки и ускоряет взаимодействие со сценой.
Механизмы обработки включают:
Ошибки парсинга изолируются, чтобы не разрушать всю сцену.
После загрузки данные проходят этап синхронизации:
Viewer.sceneDataSourceCollectionCesium использует реактивную модель обновления, где изменения свойств автоматически отражаются в рендере без ручного обновления сцены.