# spatial-data-vis-framework
**Repository Path**: alibaba/spatial-data-vis-framework
## Basic Information
- **Project Name**: spatial-data-vis-framework
- **Description**: Layered Spatial Data Vis Framework
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: dev
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-10-31
- **Last Updated**: 2025-12-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 分层空间数据可视化框架
**🚧This Project Is Still In Uploading Process.🚧**
**Layered Spatial Data Vis Framework**, or Polaris.gl in short.
分层空间数据可视化框架,或简称 Polaris.gl
[](https://github.com/alibaba/spatial-data-vis-framework/actions/workflows/build.yml)
## Introduction
Polaris.gl is a meta-framework for spatial data visualization on general 3D engines.
With a layered structure and supercharged toolkit to:
- Make 3d engines and map libraries cooperate in your application
- Build full-featured spatial visualization or map apps based on any 3D engines
- Compose your own visualization framework easily with all the tools you already love
Out-of-box Polaris.gl implements are provided for common scenarios:
- Polaris-lite
- three-lite as renderer.
- For modern browsers on desktop and mobile
- Polaris-HD
- Based on our HDPipeline renderer
- AAA-game-level render pipeline. With full-on deferred shading and screen-space technics
- For browsers on powerful devices.
- Polaris-react
- React wrapping of Polaris-lite and layers
- Use layers like common react components
- Polaris-Map
- A minimal LBS framework for a light-weight Web environment
- Friendly API for map users.
- Useful layers included.
- Polaris-glTF
- Generate glTF 2.0 data for the scene.
- Served as pre-process of game engine or 3D software workflow.
The core concept of Polaris.gl is **Layer**.
A layer is a pluggable, extendable collection of a series of logic and visual elements. All features of a Polaris app come from the layers added to the layer tree.
Each layer has its independent geo-projection and timeline that automatically align it to the scene graph.
Layers are designed to be loaded on-demand and mounted/unmounted at any time.
A layer extended from the standard layer can work on different renderers and environments.
Officially maintained layers:
- TODO
---
Polaris.gl 是基于通用 3D 渲染引擎的空间数据可视化*元*框架,在 通用 3D 渲染能力的基础上增加 地理信息标准、组件封装与组合标准、与地图库的联动机制,并在这些标准上积累了一大批开箱即用的 可视化组件、视觉组件、定制框架等。
Polaris.gl 并不是一个地图库,没有内置或绑定的地图服务,但是提供和众多公开地图库、地理可视化工具(包括 Mapbox、高德地图、百度地图、cesium、L7 等)的协同工作方案。
Polaris.gl 致力于提供一个 空间数据视觉组件的 开放标准,所有符合该标准的组件都可以在一个框架下协同工作。基于这套标准,你可以利用通用 3D 渲染引擎的能力,实现天马行空的视觉效果,同时进行严谨的地理可视化展示与分析。你可以使用 Polaris.gl 在地理数据可视化工具的基础上增加视觉效果,也可以把任意 3D 渲染引擎封装成一个地图库。
## Development
### Prerequisites
Make sure you have `nodejs` and `lerna@4` installed.
```sh
node -v # v14 or higher.
npm -v # v9 or higher. v6 is not supported.
npx lerna -v # v4.x only. v5 is not supported.
```
### Setup
`npm run setup`
Should not see any error. If something goes wrong (probably caused by a registry or internet error). Run `npm run clean` and try it again.
### Build packages
`npm run build`
If something goes wrong. You should try `npm run rebuild` which will clean up all the build caches.
### Watch files and serve examples
Good old fashioned `npm start`
### Co-develop with GSI (the upstream monorepo project)
> Unstable!
协同开发多个相互依赖的 monorepo 项目。
**This project itself is an example of multiple monorepo projects co-development.**
- link the upstream monorepo. `npm run setup -- --gsi={PATH_TO_GSI_REPO}`
- for example `npm run setup -- --gsi={../gsi}`
- This will automatically
- Create a new folder `gsi-packages` which is a symlink to GSI_FOLDER/packages
- Setup this repo and link gsi-packages like other local monorepo packages
- `cd` to gsi repo folder and setup gsi again. (Make sure the former one didn't mess it up.)
- Dev gsi packages in gsi repo (_Not In Current Repo Through Symlinks Obviously_🙄️)
- Call `build` or `watch` from gsi repo
- Use live-updated gsi packages in current repo
The logic of `co-dev multi monorepos` is pretty simple.
- Link outer packages like local packages. But ignore their dependents, scripts and toolchain.
- The benefits of a monorepo stay in _that_ monorepo.
- Dev upstream packages in their original repo. Use the result (live-updated) in downstream repo.
- Do not edit another repo's codes. Do not build another repo's package from your repo.
- Keep the boundary. Or you will end up merging everything into one giant repo.
It is common in Javascript/Typescript ecosystem that **\*Only** build result of a package is **robust and compatible with different toolchain**. NOT THE SOURCE CODES.\* It is not the best approach but it's what we got.
_Every package only has one set of toolchain that guarantee to work._ You should expect errors if you bypass it.
Unless you can make sure all the repos use exactly same language \* version and toolchain. It's easier to only assume you get all the (live-updated) **build result** of dependents instead of **source code** and everything.
## License and disclaimer
本项目使用 MIT 开源协议,详见 [LICENSE](./LICENSE)
three.js 源码版权归 three.js 作者所有。
WebGL and the WebGL logo are trademarks of the Khronos Group Inc.
glTF and the glTF logo are trademarks of the Khronos Group Inc.
OpenGL® and the oval logo are trademarks or registered trademarks of Hewlett Packard Enterprise in the United States and/or other countries worldwide.
OpenGL is a registered trademark and the OpenGL ES logo is a trademark of Hewlett Packard Enterprise used by permission by Khronos.
## Code of Conduct
Alibaba has adopted a Code of Conduct that we expect project participants to adhere to.
Please refer to [Alibaba Open Source Code of Conduct](https://github.com/AlibabaDR/community/blob/master/CODE_OF_CONDUCT.md) ([中文版](https://github.com/AlibabaDR/community/blob/master/CODE_OF_CONDUCT_zh.md)).