├── .changeset
├── README.md
└── config.json
├── .editorconfig
├── .eslintignore
├── .eslintrc.cjs
├── .github
└── workflows
│ └── ci.yml
├── .gitignore
├── .nvmrc
├── .prettierignore
├── .prettierrc.js
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── docs
├── .eslintrc.cjs
├── .vitepress
│ ├── config.ts
│ ├── hooks
│ │ └── usePlayground.ts
│ ├── plugins
│ │ └── md.ts
│ └── theme
│ │ ├── custom.less
│ │ └── index.ts
├── guide
│ ├── amap.md
│ ├── bmap.md
│ ├── color.md
│ ├── data.md
│ ├── getting-started.md
│ ├── index.md
│ ├── leaflet.md
│ ├── mapbox-gl.md
│ ├── maplibre-gl.md
│ ├── maptalks.md
│ ├── ol.md
│ └── openlayers.md
├── index.md
├── package.json
├── playgrounds
│ ├── amap
│ │ ├── amap.vue
│ │ └── particles.md
│ ├── bmap
│ │ ├── bmap.vue
│ │ └── particles.md
│ ├── leaflet
│ │ ├── gl-arrow-tile.vue
│ │ ├── gl-colorize-image.vue
│ │ ├── gl-colorize.vue
│ │ ├── gl-image.vue
│ │ ├── gl-layer.md
│ │ ├── gl-particles-image.vue
│ │ ├── gl-particles-tile.vue
│ │ ├── gl-raster.vue
│ │ ├── particles.md
│ │ └── particles.vue
│ ├── mapbox-gl
│ │ ├── arrow-image.vue
│ │ ├── arrow-tile.vue
│ │ ├── arrow.md
│ │ ├── colorize-image.vue
│ │ ├── colorize-tile.vue
│ │ ├── colorize.md
│ │ ├── index.vue
│ │ ├── particles-image.vue
│ │ ├── particles-tile.vue
│ │ ├── particles.md
│ │ ├── raster.md
│ │ └── raster.vue
│ ├── maplibre-gl
│ │ ├── colorize-image.vue
│ │ ├── colorize-tile.vue
│ │ ├── colorize.md
│ │ ├── index.vue
│ │ ├── raster.md
│ │ └── raster.vue
│ ├── maptalks
│ │ ├── colorize-image.vue
│ │ ├── colorize-tile.vue
│ │ ├── colorize.md
│ │ ├── image.vue
│ │ ├── raster.md
│ │ └── tile.vue
│ └── ol
│ │ ├── ol-3413.vue
│ │ ├── ol-4326.vue
│ │ ├── ol-moll.vue
│ │ ├── ol.vue
│ │ ├── ol5.vue
│ │ └── particles.md
├── public
│ ├── animation.mp4
│ ├── arrow.mp4
│ ├── data
│ │ ├── china.geojson
│ │ ├── countries-110m.geojson
│ │ ├── float.png
│ │ ├── tiles
│ │ │ └── 2023111700
│ │ │ │ └── 2023111703
│ │ │ │ ├── 0
│ │ │ │ └── 0
│ │ │ │ │ └── 0
│ │ │ │ │ ├── wind-surface.jpeg
│ │ │ │ │ ├── wind-surface.jpeg.aux.xml
│ │ │ │ │ └── wind-surface.tiff
│ │ │ │ ├── 1
│ │ │ │ ├── 0
│ │ │ │ │ ├── 0
│ │ │ │ │ │ ├── wind-surface.jpeg
│ │ │ │ │ │ ├── wind-surface.jpeg.aux.xml
│ │ │ │ │ │ └── wind-surface.tiff
│ │ │ │ │ └── 1
│ │ │ │ │ │ ├── wind-surface.jpeg
│ │ │ │ │ │ ├── wind-surface.jpeg.aux.xml
│ │ │ │ │ │ └── wind-surface.tiff
│ │ │ │ └── 1
│ │ │ │ │ ├── 0
│ │ │ │ │ ├── wind-surface.jpeg
│ │ │ │ │ ├── wind-surface.jpeg.aux.xml
│ │ │ │ │ └── wind-surface.tiff
│ │ │ │ │ └── 1
│ │ │ │ │ ├── wind-surface.jpeg
│ │ │ │ │ ├── wind-surface.jpeg.aux.xml
│ │ │ │ │ └── wind-surface.tiff
│ │ │ │ └── 2
│ │ │ │ ├── 0
│ │ │ │ ├── 0
│ │ │ │ │ ├── wind-surface.jpeg
│ │ │ │ │ ├── wind-surface.jpeg.aux.xml
│ │ │ │ │ └── wind-surface.tiff
│ │ │ │ ├── 1
│ │ │ │ │ ├── wind-surface.jpeg
│ │ │ │ │ ├── wind-surface.jpeg.aux.xml
│ │ │ │ │ └── wind-surface.tiff
│ │ │ │ ├── 2
│ │ │ │ │ ├── wind-surface.jpeg
│ │ │ │ │ ├── wind-surface.jpeg.aux.xml
│ │ │ │ │ └── wind-surface.tiff
│ │ │ │ └── 3
│ │ │ │ │ ├── wind-surface.jpeg
│ │ │ │ │ ├── wind-surface.jpeg.aux.xml
│ │ │ │ │ └── wind-surface.tiff
│ │ │ │ ├── 1
│ │ │ │ ├── 0
│ │ │ │ │ ├── wind-surface.jpeg
│ │ │ │ │ ├── wind-surface.jpeg.aux.xml
│ │ │ │ │ └── wind-surface.tiff
│ │ │ │ ├── 1
│ │ │ │ │ ├── wind-surface.jpeg
│ │ │ │ │ ├── wind-surface.jpeg.aux.xml
│ │ │ │ │ └── wind-surface.tiff
│ │ │ │ ├── 2
│ │ │ │ │ ├── wind-surface.jpeg
│ │ │ │ │ ├── wind-surface.jpeg.aux.xml
│ │ │ │ │ └── wind-surface.tiff
│ │ │ │ └── 3
│ │ │ │ │ ├── wind-surface.jpeg
│ │ │ │ │ ├── wind-surface.jpeg.aux.xml
│ │ │ │ │ └── wind-surface.tiff
│ │ │ │ ├── 2
│ │ │ │ ├── 0
│ │ │ │ │ ├── wind-surface.jpeg
│ │ │ │ │ ├── wind-surface.jpeg.aux.xml
│ │ │ │ │ └── wind-surface.tiff
│ │ │ │ ├── 1
│ │ │ │ │ ├── wind-surface.jpeg
│ │ │ │ │ ├── wind-surface.jpeg.aux.xml
│ │ │ │ │ └── wind-surface.tiff
│ │ │ │ ├── 2
│ │ │ │ │ ├── wind-surface.jpeg
│ │ │ │ │ ├── wind-surface.jpeg.aux.xml
│ │ │ │ │ └── wind-surface.tiff
│ │ │ │ └── 3
│ │ │ │ │ ├── wind-surface.jpeg
│ │ │ │ │ ├── wind-surface.jpeg.aux.xml
│ │ │ │ │ └── wind-surface.tiff
│ │ │ │ └── 3
│ │ │ │ ├── 0
│ │ │ │ ├── wind-surface.jpeg
│ │ │ │ ├── wind-surface.jpeg.aux.xml
│ │ │ │ └── wind-surface.tiff
│ │ │ │ ├── 1
│ │ │ │ ├── wind-surface.jpeg
│ │ │ │ ├── wind-surface.jpeg.aux.xml
│ │ │ │ └── wind-surface.tiff
│ │ │ │ ├── 2
│ │ │ │ ├── wind-surface.jpeg
│ │ │ │ ├── wind-surface.jpeg.aux.xml
│ │ │ │ └── wind-surface.tiff
│ │ │ │ └── 3
│ │ │ │ ├── wind-surface.jpeg
│ │ │ │ ├── wind-surface.jpeg.aux.xml
│ │ │ │ └── wind-surface.tiff
│ │ ├── var_tmp.json
│ │ ├── var_tmp.png
│ │ ├── var_ugrd-var_vgrd.json
│ │ ├── var_ugrd-var_vgrd.png
│ │ └── wind.json
│ ├── manifest.json
│ ├── mapbox.gif
│ ├── maptalks.gif
│ ├── particles-poc.mp4
│ ├── particles.mp4
│ ├── poc.mp4
│ ├── wind-animation.mp4
│ ├── wind.gif
│ └── wind.png
├── typings.d.ts
└── vite.config.ts
├── docsearch-config.json
├── docsearch.sh
├── examples
├── amap.html
├── bmap.html
├── data
│ ├── 1.png
│ ├── 10.jpeg
│ ├── 11.png
│ ├── 12.png
│ ├── 2.png
│ ├── 3.png
│ ├── china.geojson
│ ├── num
│ │ ├── 1.png
│ │ ├── 2.png
│ │ ├── 3.png
│ │ ├── 4.png
│ │ └── 5.png
│ ├── temp.png
│ ├── temp.tiff
│ ├── uv-mc.png
│ ├── uv.png
│ ├── var_tmp.json
│ ├── var_tmp.png
│ ├── var_ugrd-var_vgrd.json
│ ├── var_ugrd-var_vgrd.png
│ ├── wind-mc.png
│ ├── wind-uv.png
│ └── wind.json
├── index.html
├── leaflet-gl.html
├── leaflet.html
├── mapbox-tile.html
├── mapbox.html
├── maplibre-raster.html
├── maptalks-fill.html
├── maptalks-particles-layer.html
├── maptalks-pattern-layer.html
├── maptalks-pattern-timeline-layer.html
├── maptalks-raster-layer.html
├── maptalks-wind-arrow.html
├── maptalks.html
├── math.html
├── ol3.html
├── ol4-epsg3413.html
├── ol4-moll.html
├── ol4.html
├── ol5.html
├── poc.html
├── timeline-pattern.html
├── timeline-raster.html
├── wind-arrow-animate.html
├── wind-arrow.html
├── wind-particles.html
└── wind-raster.html
├── package.json
├── packages
├── amap
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── __tests__
│ │ └── amap.test.ts
│ ├── package.json
│ ├── rollup.config.ts
│ ├── src
│ │ └── index.ts
│ ├── tsconfig.docs.json
│ ├── tsconfig.json
│ ├── typedoc.json
│ ├── typings.d.ts
│ └── vitest.config.ts
├── bmap
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── __tests__
│ │ └── bmap.test.ts
│ ├── package.json
│ ├── rollup.config.ts
│ ├── src
│ │ └── index.ts
│ ├── tsconfig.docs.json
│ ├── tsconfig.json
│ ├── typedoc.json
│ ├── typings.d.ts
│ └── vitest.config.ts
├── core
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── __tests__
│ │ └── core.test.ts
│ ├── package.json
│ ├── rollup.config.ts
│ ├── src
│ │ ├── Field.ts
│ │ ├── Vector.ts
│ │ ├── index.ts
│ │ └── utils.ts
│ ├── tsconfig.docs.json
│ ├── tsconfig.json
│ ├── typedoc.json
│ ├── typings.d.ts
│ └── vitest.config.ts
├── gl-core
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── __tests__
│ │ └── core.test.ts
│ ├── package.json
│ ├── rollup.config.ts
│ ├── src
│ │ ├── index.ts
│ │ ├── renderer
│ │ │ ├── Pipelines.ts
│ │ │ ├── index.ts
│ │ │ └── pass
│ │ │ │ ├── arrow
│ │ │ │ ├── README.md
│ │ │ │ ├── arrow.ts
│ │ │ │ └── compose.ts
│ │ │ │ ├── base.ts
│ │ │ │ ├── color
│ │ │ │ ├── README.md
│ │ │ │ ├── colorize.ts
│ │ │ │ └── compose.ts
│ │ │ │ ├── mask.ts
│ │ │ │ ├── particles
│ │ │ │ ├── README.md
│ │ │ │ ├── compose-test.ts
│ │ │ │ ├── compose.ts
│ │ │ │ ├── particles.ts
│ │ │ │ ├── screen.ts
│ │ │ │ └── update.ts
│ │ │ │ ├── picker.ts
│ │ │ │ └── raster
│ │ │ │ ├── README.md
│ │ │ │ ├── compose.ts
│ │ │ │ └── image.ts
│ │ ├── shaders
│ │ │ ├── arraw.frag.glsl
│ │ │ ├── arrow.vert.glsl
│ │ │ ├── color.frag.glsl
│ │ │ ├── common.frag.glsl
│ │ │ ├── common.vert.glsl
│ │ │ ├── compose-render.vert.glsl
│ │ │ ├── compose.frag.glsl
│ │ │ ├── compose.vert.glsl
│ │ │ ├── decode-float.glsl
│ │ │ ├── decode.glsl
│ │ │ ├── encode-float.glsl
│ │ │ ├── encode.glsl
│ │ │ ├── mask.frag.glsl
│ │ │ ├── mask.vert.glsl
│ │ │ ├── mercatorToWGS84.glsl
│ │ │ ├── particles
│ │ │ │ ├── draw.frag.glsl
│ │ │ │ ├── draw.vert.glsl
│ │ │ │ ├── screen.frag.glsl
│ │ │ │ └── update.frag.glsl
│ │ │ ├── picker.frag.glsl
│ │ │ ├── picker.vert.glsl
│ │ │ ├── random.glsl
│ │ │ ├── raster-texture.frag.glsl
│ │ │ ├── shaderLib.ts
│ │ │ └── wgs84ToMercator.glsl
│ │ ├── source
│ │ │ ├── README.md
│ │ │ ├── Timeline.ts
│ │ │ ├── cahce.ts
│ │ │ ├── image.ts
│ │ │ ├── index.ts
│ │ │ └── tile.ts
│ │ ├── tile
│ │ │ ├── Tile.ts
│ │ │ ├── TileID.ts
│ │ │ └── TileMesh.ts
│ │ ├── type.ts
│ │ └── utils
│ │ │ ├── LRUCache.ts
│ │ │ ├── Track.ts
│ │ │ ├── TrackManger.ts
│ │ │ ├── common.ts
│ │ │ └── style-parser.ts
│ ├── tsconfig.docs.json
│ ├── tsconfig.json
│ ├── typedoc.json
│ ├── typings.d.ts
│ └── vitest.config.ts
├── leaflet
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── __tests__
│ │ └── leaflet.test.ts
│ ├── package.json
│ ├── rollup.config.ts
│ ├── src
│ │ ├── index.ts
│ │ ├── layer
│ │ │ ├── Base.ts
│ │ │ ├── canvas.ts
│ │ │ └── webgl.ts
│ │ └── utils
│ │ │ ├── CameraSync.ts
│ │ │ ├── mercatorCoordinate.ts
│ │ │ └── tile.ts
│ ├── tsconfig.docs.json
│ ├── tsconfig.json
│ ├── typedoc.json
│ ├── typings.d.ts
│ └── vitest.config.ts
├── mapbox-gl
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── __tests__
│ │ └── mapbox.test.ts
│ ├── package.json
│ ├── rollup.config.ts
│ ├── src
│ │ ├── index.ts
│ │ ├── layer.ts
│ │ └── utils
│ │ │ ├── CameraSync.ts
│ │ │ ├── mercatorCoordinate.ts
│ │ │ └── tile.ts
│ ├── tsconfig.docs.json
│ ├── tsconfig.json
│ ├── typedoc.json
│ ├── typings.d.ts
│ └── vitest.config.ts
├── maplibre-gl
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── __tests__
│ │ └── maplibre.test.ts
│ ├── package.json
│ ├── rollup.config.ts
│ ├── src
│ │ ├── index.ts
│ │ ├── layer.ts
│ │ └── utils
│ │ │ ├── CameraSync.ts
│ │ │ ├── mercatorCoordinate.ts
│ │ │ └── tile.ts
│ ├── tsconfig.docs.json
│ ├── tsconfig.json
│ ├── typedoc.json
│ ├── typings.d.ts
│ └── vitest.config.ts
├── maptalks
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── __tests__
│ │ └── maptalks.test.ts
│ ├── package.json
│ ├── rollup.config.ts
│ ├── src
│ │ ├── Canvas.ts
│ │ ├── index.ts
│ │ ├── layer.ts
│ │ └── utils.ts
│ ├── tsconfig.docs.json
│ ├── tsconfig.json
│ ├── typedoc.json
│ ├── typings.d.ts
│ └── vitest.config.ts
├── ol
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── __tests__
│ │ └── ol.test.ts
│ ├── package.json
│ ├── rollup.config.ts
│ ├── src
│ │ ├── index.ts
│ │ └── renderer.ts
│ ├── tsconfig.docs.json
│ ├── tsconfig.json
│ ├── typedoc.json
│ ├── typings.d.ts
│ └── vitest.config.ts
├── ol5
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── __tests__
│ │ └── ol5.test.ts
│ ├── package.json
│ ├── rollup.config.ts
│ ├── src
│ │ └── index.ts
│ ├── tsconfig.docs.json
│ ├── tsconfig.json
│ ├── typedoc.json
│ ├── typings.d.ts
│ └── vitest.config.ts
├── openlayers
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── __tests__
│ │ └── openlayers.test.ts
│ ├── package.json
│ ├── rollup.config.ts
│ ├── src
│ │ └── index.ts
│ ├── tsconfig.docs.json
│ ├── tsconfig.json
│ ├── typedoc.json
│ ├── typings.d.ts
│ └── vitest.config.ts
├── particles-poc
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── __tests__
│ │ └── core.test.ts
│ ├── package.json
│ ├── rollup.config.ts
│ ├── src
│ │ ├── index.ts
│ │ ├── maptalks.ts
│ │ └── shaders
│ │ │ ├── global-particle-draw.vert.glsl
│ │ │ ├── particle-draw.frag.glsl
│ │ │ ├── particle-draw.vert.glsl
│ │ │ ├── particle-update.frag.glsl
│ │ │ ├── particle-update.vert.glsl
│ │ │ ├── point.glsl
│ │ │ ├── screen.frag.glsl
│ │ │ └── screen.vert.glsl
│ ├── tsconfig.docs.json
│ ├── tsconfig.json
│ ├── typedoc.json
│ ├── typings.d.ts
│ └── vitest.config.ts
├── rbush
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── __tests__
│ │ └── index.test.ts
│ ├── package.json
│ ├── rollup.config.ts
│ ├── src
│ │ └── index.ts
│ ├── tsconfig.docs.json
│ ├── tsconfig.json
│ ├── typedoc.json
│ ├── typings.d.ts
│ └── vitest.config.ts
└── worker-fetch
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── __tests__
│ └── requestScheduler.test.ts
│ ├── bundle
│ ├── index.js
│ └── prelude.js
│ ├── package.json
│ ├── rollup.config.ts
│ ├── src
│ ├── Actor.ts
│ ├── Dispatcher.ts
│ ├── Request.ts
│ ├── RequestScheduler.ts
│ ├── ThrottledInvoker.ts
│ ├── UPNG.js
│ ├── WorkerPool.ts
│ ├── config.ts
│ ├── index.ts
│ ├── util.ts
│ ├── webWorkerTransfer.ts
│ ├── worker.ts
│ └── workerFactory.ts
│ ├── tsconfig.docs.json
│ ├── tsconfig.json
│ ├── typedoc.json
│ ├── typings.d.ts
│ └── vitest.config.ts
├── playground
├── .eslintrc.cjs
├── index.html
├── package.json
├── src
│ ├── index.ts
│ └── mapbox.ts
├── tsconfig.json
└── vite.config.ts
├── pnpm-lock.yaml
├── pnpm-workspace.yaml
├── tsconfig.eslint.json
├── tsconfig.json
├── turbo.json
└── vitest
└── setupTests.ts
/.changeset/README.md:
--------------------------------------------------------------------------------
1 | # Changesets
2 |
3 | Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
4 | with multi-package repos, or single-package repos to help you version and publish your code. You can
5 | find the full documentation for it [in our repository](https://github.com/changesets/changesets)
6 |
7 | We have a quick list of common questions to get you started engaging with this project in
8 | [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
9 |
--------------------------------------------------------------------------------
/.changeset/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://unpkg.com/@changesets/config@2.2.0/schema.json",
3 | "changelog": ["@changesets/changelog-github", { "repo": "sakitam-fdd/wind-layer" }],
4 | "commit": false,
5 | "fixed": [],
6 | "linked": [],
7 | "access": "public",
8 | "baseBranch": "master",
9 | "updateInternalDependencies": "patch",
10 | "ignore": []
11 | }
12 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # editorconfig.org
2 | root = true
3 |
4 | [*]
5 | end_of_line = lf
6 | trim_trailing_whitespace = true
7 | insert_final_newline = true
8 | charset = utf-8
9 |
10 | [*.{js.ts,html,css}]
11 | indent_style = space
12 | indent_size = 2
13 |
14 | [*.{json,yml}]
15 | indent_style = space
16 | indent_size = 2
17 |
18 | [*.md]
19 | trim_trailing_whitespace = false
20 |
21 | [Makefile]
22 | indent_style = tab
23 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | *.html
2 |
3 | node_modules
4 |
5 | # build
6 | coverage
7 | dist
8 |
9 | # other
10 | .eslintrc.js
11 | .prettierrc.js
12 | vitest.config.ts
13 |
14 | # lib
15 |
16 | playground/lib
17 |
--------------------------------------------------------------------------------
/.eslintrc.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | extends: [
4 | '@aurorafe/eslint-config-ts',
5 | ],
6 | };
7 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | .idea/
4 | .vscode/
5 |
6 | # dependencies
7 | node_modules
8 |
9 | # vuepress build output
10 | .vuepress/dist
11 | /docs/.vitepress/cache/
12 |
13 | .cache
14 | cache/
15 | .turbo/
16 |
17 | # log
18 | *.log
19 | npm-debug.log*
20 | yarn-error.log*
21 | yarn.lock
22 | package-lock.json
23 | pnpm-lock
24 | # production
25 | dist
26 |
27 | # misc
28 | .DS_Store
29 |
30 | # idea
31 | .idea
32 | .vscode
33 | .labe
34 |
35 | # Coverage directory used by tools like istanbul
36 | coverage
37 | *.lcov
38 | .turbo
39 |
40 | # others
41 | .env
42 | .env.local
43 | /docs/api/
44 |
--------------------------------------------------------------------------------
/.nvmrc:
--------------------------------------------------------------------------------
1 | v18.16.1
2 |
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | ## OS
2 | .DS_Store
3 | .idea
4 | .npmrc
5 | .husky
6 |
7 | ## Ignored
8 | .dockerignore
9 | .eslintignore
10 | .editorconfig
11 | .gitignore
12 | .prettierignore
13 | .eslintcache
14 |
15 | ## Other
16 | *.toml
17 | *.lock
18 | *.log
19 | *.md
20 | *.svg
21 | *.png
22 |
23 | LICENSE
24 | Dockerfile*
25 |
26 | package.json
27 | package-lock.json
28 | yarn-error.log
29 |
--------------------------------------------------------------------------------
/.prettierrc.js:
--------------------------------------------------------------------------------
1 | const { prettierRules } = require('@aurorafe/eslint-config-base/rules')
2 |
3 | module.exports = {
4 | ...prettierRules,
5 | };
6 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | ## Commit
2 |
3 | - revert: 恢复上一版本
4 | - feat: 功能性更新
5 | - update: 更新
6 | - fixed: 修复
7 | - docs: 新增文档
8 | - style: 样式修改
9 | - refactor: 重构
10 | - perf: 优化
11 | - test: 增加测试模块,不涉及生产环境的代码
12 | - chore: 更新核心模块,包配置文件,不涉及生产环境的代码
13 | - release: 发布版本
14 | - wip: 开发中
15 | - types: 类型定义
16 | - remove: 移除功能或者代码
17 |
18 | ## 0.0.7 (2019.03.20)
19 |
20 | * 修复ol插件投影问题
21 | * 修复server无法解析问题
22 |
23 | ## 0.0.6 (2018.09.07)
24 |
25 | # fix #15
26 | # update build flow
27 |
28 | ## 0.0.5 (2018.03.17)
29 |
30 | # fix #8
31 | # test BMap and add example
32 |
33 | ## 0.0.4 (2018.03.09)
34 |
35 | * 更新 ``CanvasLayer`` 创建方式。
36 | * 优化事件处理。
37 |
38 | ## 0.0.3 (2018.02.02)
39 |
40 | * 抓取服务新增 3 个接口,包括查询文件树和支持通过文件名查询数据。
41 | * 暂时新增了 ``EPSG:4326`` 投影的兼容处理。#5
42 | * 解决了与 [ol3Echarts](https://github.com/sakitam-fdd/ol3Echarts) 事件处理冲突问题。
43 |
44 | ## 0.0.2 (2018.01.20)
45 |
46 | * 更新部分依赖。
47 | * 修复 `setData` 和 `clearWind` bug。
48 | * 新增数据抓取服务,使用koa2构建。
49 |
50 | ## 0.0.1 (2017.12.16)
51 |
52 | * 实现基础功能
53 |
54 | ## 0.0.0 (2017.12.14)
55 |
56 | * init
57 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # 贡献指南
2 |
3 | ## 版本
4 |
5 | | 主版本号 | 次版本号 | 修订号 |
6 | | ------------- | -------------------------- | -------------------- |
7 | | 破坏性变更 | 功能添加,无破坏性变更 | Bug修正,无破坏性变更 |
8 |
9 | ### 版本号递增规则如下:
10 |
11 | - 主版本号:当你做了不兼容的 API 修改,
12 | - 次版本号:当你做了向下兼容的功能性新增,
13 | - 修订号:当你做了向下兼容的问题修正.
14 |
15 | ## Issue 规范
16 |
17 | - issue 仅用于提交 Bug 或 Feature 以及设计相关的内容,其它内容可能会被直接关闭。
18 |
19 | - 在提交 issue 之前,请搜索相关内容是否已被提出。
20 |
21 | - 请说明使用的插件的版本号,并提供操作系统和浏览器信息。推荐使用 [JSFiddle](https://jsfiddle.net/) 或者[codepen](https://codepen.io/)生成在线 demo,这能够更直观地重现问题。
22 |
23 | ## Pull Request 规范
24 | - 请先 fork 一份到自己的项目下,不要直接在仓库下建分支。
25 |
26 | - commit 信息要以# [记录] + messages
27 |
28 |
29 | - 执行 `npm run dev && npm run build` 后可以正确打包文件。
30 |
31 | - 提交 PR 前请 rebase,确保 commit 记录的整洁。
32 |
33 | - 确保 PR 是提交到 `dev` 分支,而不是 `master` 分支。
34 |
35 | - 如果是修复 bug,请在 PR 中给出描述信息。
36 |
37 |
38 | ## 开发环境搭建
39 |
40 | 首先你需要 Node.js 14+ 和 NPM 6+
41 | ```shell
42 | git clone https://github.com/sakitam-fdd/wind-layer.git
43 | npm install
44 | npm run dev
45 | ```
46 |
--------------------------------------------------------------------------------
/docs/.eslintrc.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | extends: [
4 | '@aurorafe/eslint-config-vue',
5 | ],
6 | };
7 |
--------------------------------------------------------------------------------
/docs/.vitepress/hooks/usePlayground.ts:
--------------------------------------------------------------------------------
1 | export const usePlayground = (cb1?: () => void, cb2?: () => void) => {
2 | const pause = () => {
3 | cb1?.();
4 | };
5 |
6 | const resume = () => {
7 | cb2?.();
8 | };
9 |
10 | return {
11 | pause,
12 | resume,
13 | };
14 | };
15 |
--------------------------------------------------------------------------------
/docs/.vitepress/theme/index.ts:
--------------------------------------------------------------------------------
1 | // import { defineClientComponent } from 'vitepress';
2 | import DefaultTheme from 'vitepress/theme';
3 | import { SfcPlayground } from '@sakitam-gis/vitepress-playground';
4 | import '@sakitam-gis/vitepress-playground/dist/style.css';
5 | import './custom.less';
6 |
7 | export default {
8 | ...DefaultTheme,
9 | enhanceApp({ app, router, siteData }) {
10 | app.component('SfcPlayground', SfcPlayground);
11 | },
12 | } as any;
13 |
--------------------------------------------------------------------------------
/docs/guide/amap.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 高德地图
3 | description:
4 | ---
5 |
6 | # 高德地图
7 |
8 | ## 示例
9 |
10 | ### 基础地图展示
11 |
12 | ::: tip
13 | 基础使用, 默认不要开启 `3D` 模式。
14 | 以下默认是 `codesandbox` 示例,[codepen](https://codepen.io/sakitam-fdd/full/QWxqRqE) 示例请查看此链接。
15 | :::
16 |
17 |
22 |
23 |
--------------------------------------------------------------------------------
/docs/guide/bmap.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 百度地图
3 | description:
4 | ---
5 |
6 | # 百度地图
7 |
8 | ## 示例
9 |
10 | ### 基础地图展示
11 |
12 | ::: tip
13 | 基础使用,
14 | 以下默认是 `codesandbox` 示例,[codepen](https://codepen.io/sakitam-fdd/full/YzvrmzZ) 示例请查看此链接。
15 | :::
16 |
17 |
22 |
--------------------------------------------------------------------------------
/docs/guide/data.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 数据说明
3 | ---
4 |
5 | # 关于数据来源
6 |
7 | [[toc]]
8 |
9 | ## 1.x 数据说明
10 |
11 | 对应数据来源可以是gfs或者ecmwf,无论数据来源是哪个地方,最终此插件目前只支持`json`数据格式输入。
12 |
13 | 关于如何将数据文件转换为 `json` ,你可以查阅 [grib2json](https://github.com/cambecc/grib2json), 或者
14 | [ecmwf](https://software.ecmwf.int/wiki/display/GRIB/Releases) 的数据处理库,当然,你也可以自行处理格点数据;
15 |
16 | 另外在解析数据时需要注意数据是否翻转了,默认对于地图展示来说我们知道经度默认从左向右递增,纬度从上向下依次递减(不一定完全正确),
17 | 所以在处理数据时我们需要注意数据的范围和方向,避免展示出错,相关有一个讨论可以在 [44](https://github.com/sakitam-fdd/wind-layer/issues/44)
18 | 看到。
19 |
20 | ### 数据详解
21 |
22 | 返回 `json` 数据为一个数组类型,两个元素分别为 U和V对应数据,数据中应该至少包含以下字段:
23 |
24 | ```bash
25 | dx: Increment in X direction, cannot be negative(x方向增量)
26 | dy: Increment in Y direction, cannot be negative(Y方向增量)
27 | nx: cols 数据行数
28 | ny: rows 数据列数
29 | # 以下四个为数据矩形范围
30 | lo1: xmin
31 | lo2: xmax
32 | la1: ymin
33 | la2: ymax
34 | # u/v 主要由以下参数区分
35 | parameterCategory: data type
36 | parameterNumber: data type
37 | ```
38 |
39 | 一般情况下由 `grib2json` 转出的数据`parameterCategory`参数为`1`,当`parameterNumber` 为 `2` 时为`u` 分量,
40 | 当`parameterNumber` 为 `3` 时为`v` 分量。
41 |
42 | 并且还需要注意的是 `dy`(纬度)增量 (默认我们采用的数据和格点原始数据方向保持一致,数据从左上到右下) 但是需要注意的是此时 `dy` 为 -(ymax - ymin) / ny
43 | 有些情况下我们格点数据组织形式可能 Y 轴是上下翻转的,此时我们可以配置 `options.fieldOptions.flipY = true`,来主动翻转数据(默认情况下我们检测到数据配置中的
44 | `deltaY > 0` 时并且未配置`flipY`参数项默认去翻转数据)。
45 |
46 | ## 2.x 数据说明
47 |
48 | 在 2.0 版本之后(目前包括 `mapbox`、`maplibre`、`maptalks`)做了多数据源支持(`geotiff`、灰度图-可解析带 [exif](https://en.wikipedia.org/wiki/Exif) 信息、png-多通道浮点数压缩),其中 `geotiff` 的支持需要配置 `configDeps`, `exif` 默认支持,因为在 `safari` 浏览器下 `configDeps` 有兼容性问题,所以默认打包了 exif 的解析库。
49 | ```ts
50 | mapboxWind.configDeps(['https://unpkg.com/geotiff/dist-browser/geotiff.js']);
51 | ```
52 |
53 | 对于 2.x 版本的数据格式我们可以使用 https://github.com/sakitam-gis/raster-process 来生成所需要的瓦片和单张图片。
54 |
--------------------------------------------------------------------------------
/docs/guide/leaflet.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: leaflet
3 | description:
4 | importMap: {
5 | "leaflet": "https://esm.sh/leaflet",
6 | "leaflet-wind": "https://esm.sh/leaflet-wind",
7 | "tweakpane": "https://esm.sh/tweakpane"
8 | }
9 | ---
10 |
11 | # leaflet
12 |
13 | ## 示例
14 |
15 | ### 添加风场图层
16 |
17 |
18 |
--------------------------------------------------------------------------------
/docs/guide/maptalks.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: maptalks
3 | description:
4 | importMap: {
5 | "maptalks": "https://esm.sh/maptalks",
6 | "@sakitam-gis/maptalks-wind": "https://esm.sh/@sakitam-gis/maptalks-wind"
7 | }
8 | ---
9 |
10 | # maptalks
11 |
12 | [[toc]]
13 |
14 | ## 安装插件
15 |
16 | ::: code-group
17 |
18 | ```sh [npm]
19 | $ npm add @sakitam-gis/maptalks-wind
20 | ```
21 |
22 | ```sh [pnpm]
23 | $ pnpm add @sakitam-gis/maptalks-wind
24 | ```
25 |
26 | ```sh [yarn]
27 | $ yarn add @sakitam-gis/maptalks-wind
28 | ```
29 |
30 | ```html [script]
31 |
32 | ```
33 |
34 | :::
35 |
36 | ## 创建地图实例
37 |
38 | 当我们准备好相关依赖后就可以进行地图和图层的创建了
39 |
40 | ::: code-group
41 |
42 | ```ts
43 | import maptalks from 'maptalks';
44 |
45 | const map = new maptalks.Map(mapRef.value, {
46 | zoom: 2,
47 | center: [34.371, 131.287].reverse(),
48 | baseLayer: new maptalks.TileLayer('base', {
49 | urlTemplate: 'https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png',
50 | // urlTemplate: 'https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png',
51 | subdomains: ['a', 'b', 'c', 'd'],
52 | repeatWorld: 'x',
53 | })
54 | });
55 | ```
56 | :::
57 |
58 | ## 创建数据源
59 |
60 | 参考 `mapbox-gl` 的使用,关于数据源和图层的创建这块的 api 基本保持了一致。
61 |
62 | ## 创建图层
63 |
64 | 参考 `mapbox-gl` 的使用,关于数据源和图层的创建这块的 api 基本保持了一致。
65 |
66 | ## 示例
67 |
68 | ::: tip
69 | 灰度图瓦片数据
70 | :::
71 |
72 |
73 |
74 |
--------------------------------------------------------------------------------
/docs/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: home
3 |
4 | title: wind-layer
5 | titleTemplate: 风场插件
6 |
7 | hero:
8 | name: wind-layer
9 | text: Visualization library of meteorological data.
10 | tagline: a maptalks / mapbox-gl / maplibre-gl / leaflet / openlayers / bmap / amap extension to show grib data.
11 | actions:
12 | - theme: brand
13 | text: Get Started / 开始
14 | link: /guide/getting-started
15 | - theme: alt
16 | text: View on GitHub
17 | link: https://github.com/sakitam-fdd/wind-layer
18 |
19 | features:
20 | - title: 易扩展(Easy to extend)
21 | details: 抽离了核心渲染库,便于扩展到其他地图渲染库(The core rendering library is separated, which is easy to extend to other map rendering libraries.)。
22 | - title: 易用(Easy to use, more user-defined parameters)
23 | details: 粒子数量、线宽、颜色支持多种配置方式(The number of particles, line width and color support multiple configurations.)。
24 | - title: 高性能(High performance)
25 | details: 核心图层支持 webgl 渲染,已适配了 mapbox-gl、maptalks、leaflet、openlayers 地图类库(The core layer supports webgl rendering, which is currently adapted to mapbox gl, maptalks, leaflet and openlayers.)。
26 | ---
27 |
--------------------------------------------------------------------------------
/docs/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "docs",
3 | "version": "1.0.0",
4 | "type": "module",
5 | "scripts": {
6 | "dev": "vitepress dev --base /",
7 | "build": "vitepress build --base /wind-layer/",
8 | "serve": "vitepress preview"
9 | },
10 | "dependencies": {
11 | "@sakitam-gis/vitepress-playground": "^1.1.8",
12 | "@sakitam-gis/ol5": "^5.3.3",
13 | "@sakitam-gis/maptalks-wind": "workspace:*",
14 | "@sakitam-gis/mapbox-wind": "workspace:*",
15 | "@sakitam-gis/maplibre-wind": "workspace:*",
16 | "@vue/repl": "^4.1.1",
17 | "@amap/amap-jsapi-loader": "^1.0.1",
18 | "mapbox-gl": "^2.15.0",
19 | "maplibre-gl": "^4.1.1",
20 | "ol": "^6.15.1",
21 | "ol-wind": "workspace:*",
22 | "ol5-wind": "workspace:*",
23 | "amap-wind": "workspace:*",
24 | "bmap-wind": "workspace:*",
25 | "leaflet": "^1.9.4",
26 | "leaflet-wind": "workspace:*",
27 | "maptalks": "^1.0.0-rc.33",
28 | "proj4": "2.6.0",
29 | "tweakpane": "^4.0.0"
30 | },
31 | "devDependencies": {
32 | "@types/node": "^18.19.26",
33 | "@types/mapbox-gl": "^2.7.19",
34 | "@types/proj4": "^2.5.5",
35 | "@types/markdown-it": "latest",
36 | "@types/leaflet": "^1.9.9",
37 | "@vue/compiler-core": "^3.3.7",
38 | "less": "^4.2.0",
39 | "fs-extra": "^11.2.0",
40 | "markdown-it": "^14.0.0",
41 | "markdown-it-container": "^4.0.0",
42 | "vitepress": "^1.0.2",
43 | "vite": "^5.1.7",
44 | "vue": "^3.3.7",
45 | "vite-plugin-external": "^4.3.0"
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/docs/playgrounds/amap/particles.md:
--------------------------------------------------------------------------------
1 | ---
2 | aside: false
3 | importMap: {
4 | "amap-wind": "https://esm.sh/amap-wind",
5 | "@amap/amap-jsapi-loader": "https://esm.sh/@amap/amap-jsapi-loader"
6 | }
7 | ---
8 |
9 | ## 添加风场图层
10 |
11 |
12 |
--------------------------------------------------------------------------------
/docs/playgrounds/bmap/particles.md:
--------------------------------------------------------------------------------
1 | ---
2 | aside: false
3 | importMap: {
4 | "bmap-wind": "https://esm.sh/bmap-wind"
5 | }
6 | ---
7 |
8 | ## 添加风场图层
9 |
10 |
11 |
--------------------------------------------------------------------------------
/docs/playgrounds/leaflet/gl-layer.md:
--------------------------------------------------------------------------------
1 | ---
2 | aside: false
3 | importMap: {
4 | "leaflet": "https://esm.sh/leaflet",
5 | "leaflet-wind": "https://esm.sh/leaflet-wind",
6 | "tweakpane": "https://esm.sh/tweakpane"
7 | }
8 | ---
9 |
10 | ## 基于 leaflet 的 webgl 图层
11 |
12 | ### 常规瓦片图层
13 |
14 | 可替代 leaflet 内部的 TileLayer dom 实现的图层
15 |
16 |
17 |
18 | ### 常规图片图层
19 |
20 | 可替代 leaflet 内部的 ImageOverlay 实现的图层
21 |
22 |
23 |
24 | ### 气象数据图层
25 |
26 | 1. 色斑图瓦片
27 |
28 |
29 |
30 | 2. 色斑图单张图片
31 |
32 |
33 |
34 | 3. 粒子图层-单张
35 |
36 |
37 |
38 | 4. 粒子图层-瓦片
39 |
40 |
41 |
42 | 5. Arrow图层-瓦片
43 |
44 |
45 |
--------------------------------------------------------------------------------
/docs/playgrounds/leaflet/particles.md:
--------------------------------------------------------------------------------
1 | ---
2 | aside: false
3 | importMap: {
4 | "leaflet": "https://esm.sh/leaflet",
5 | "leaflet-wind": "https://esm.sh/leaflet-wind",
6 | "tweakpane": "https://esm.sh/tweakpane"
7 | }
8 | ---
9 |
10 | ## 添加风场图层
11 |
12 |
13 |
--------------------------------------------------------------------------------
/docs/playgrounds/mapbox-gl/arrow.md:
--------------------------------------------------------------------------------
1 | ---
2 | aside: false
3 | importMap: {
4 | "mapbox-gl": "https://esm.sh/mapbox-gl",
5 | "@sakitam-gis/mapbox-wind": "https://esm.sh/@sakitam-gis/mapbox-wind",
6 | "tweakpane": "https://esm.sh/tweakpane"
7 | }
8 | ---
9 |
10 | 这里是气象风场箭头图层的相关示例。
11 |
12 | ## 添加气象数据 - 单张
13 |
14 | ::: tip
15 | 单张灰度图数据
16 | :::
17 |
18 |
19 |
20 | ## 添加气象数据 - 瓦片
21 |
22 | ::: tip
23 | 灰度图瓦片数据
24 | :::
25 |
26 |
27 |
--------------------------------------------------------------------------------
/docs/playgrounds/mapbox-gl/colorize.md:
--------------------------------------------------------------------------------
1 | ---
2 | aside: false
3 | importMap: {
4 | "mapbox-gl": "https://esm.sh/mapbox-gl",
5 | "@sakitam-gis/mapbox-wind": "https://esm.sh/@sakitam-gis/mapbox-wind",
6 | "tweakpane": "https://esm.sh/tweakpane"
7 | }
8 | ---
9 |
10 | 这里是气象色斑图的展示示例。
11 |
12 | ## 添加气象数据 - 单张
13 |
14 | ::: tip
15 | 单张灰度图数据
16 | :::
17 |
18 |
19 |
20 | ## 添加气象数据 - 瓦片
21 |
22 | ::: tip
23 | 灰度图瓦片数据
24 | :::
25 |
26 |
27 |
--------------------------------------------------------------------------------
/docs/playgrounds/mapbox-gl/particles.md:
--------------------------------------------------------------------------------
1 | ---
2 | aside: false
3 | importMap: {
4 | "mapbox-gl": "https://esm.sh/mapbox-gl",
5 | "@sakitam-gis/mapbox-wind": "https://esm.sh/@sakitam-gis/mapbox-wind",
6 | "tweakpane": "https://esm.sh/tweakpane"
7 | }
8 | ---
9 |
10 | 这里是气象风场粒子的相关示例。
11 |
12 | ## 添加气象数据 - 单张
13 |
14 | ::: tip
15 | 单张灰度图数据
16 | :::
17 |
18 |
19 |
20 | ## 添加气象数据 - 瓦片
21 |
22 | ::: tip
23 | 灰度图瓦片数据
24 | :::
25 |
26 |
27 |
--------------------------------------------------------------------------------
/docs/playgrounds/mapbox-gl/raster.md:
--------------------------------------------------------------------------------
1 | ---
2 | aside: false
3 | importMap: {
4 | "mapbox-gl": "https://esm.sh/mapbox-gl",
5 | "@sakitam-gis/mapbox-wind": "https://esm.sh/@sakitam-gis/mapbox-wind",
6 | "tweakpane": "https://esm.sh/tweakpane"
7 | }
8 | ---
9 |
10 | 这里是栅格相关的实例,虽然他们的效果与 mapbox 的 ImageSource 和 RasterSource 展示效果相同,但是提供了如时序播放和图层掩膜的能力。
11 |
12 | ## 添加栅格数据 - 单张
13 |
14 | ::: tip
15 | 可以视作 mapbox-gl 中的 ImageSource
16 | :::
17 |
18 |
19 |
20 | ## 添加栅格数据 - 瓦片
21 |
22 | ::: tip
23 | 等同于 mapbox-gl 中的 RasterSource
24 | :::
25 |
26 |
27 |
--------------------------------------------------------------------------------
/docs/playgrounds/maplibre-gl/colorize.md:
--------------------------------------------------------------------------------
1 | ---
2 | aside: false
3 | importMap: {
4 | "maplibre-gl": "https://esm.sh/maplibre-gl",
5 | "@sakitam-gis/maplibre-wind": "https://esm.sh/@sakitam-gis/maplibre-wind"
6 | }
7 | ---
8 |
9 | 这里是气象色斑图的展示示例。
10 |
11 | ## 添加气象数据 - 单张
12 |
13 | ::: tip
14 | 单张灰度图数据
15 | :::
16 |
17 |
18 |
19 | ## 添加气象数据 - 瓦片
20 |
21 | ::: tip
22 | 单张灰度图数据
23 | :::
24 |
25 |
26 |
--------------------------------------------------------------------------------
/docs/playgrounds/maplibre-gl/raster.md:
--------------------------------------------------------------------------------
1 | ---
2 | aside: false
3 | importMap: {
4 | "maplibre-gl": "https://esm.sh/maplibre-gl",
5 | "@sakitam-gis/maplibre-wind": "https://esm.sh/@sakitam-gis/maplibre-wind"
6 | }
7 | ---
8 |
9 | 这里是栅格相关的实例,虽然他们的效果与 maplibre 的 ImageSource 和 RasterSource 展示效果相同,但是提供了如时序播放和图层掩膜的能力。
10 |
11 | ## 添加栅格数据 - 单张
12 |
13 | ::: tip
14 | 可以视作 maplibre-gl 中的 ImageSource
15 | :::
16 |
17 |
18 |
19 | ## 添加栅格数据 - 瓦片
20 |
21 | ::: tip
22 | 等同于 maplibre-gl 中的 RasterSource
23 | :::
24 |
25 |
26 |
--------------------------------------------------------------------------------
/docs/playgrounds/maptalks/colorize.md:
--------------------------------------------------------------------------------
1 | ---
2 | aside: false
3 | importMap: {
4 | "maptalks": "https://esm.sh/maptalks",
5 | "@sakitam-gis/maptalks-wind": "https://esm.sh/@sakitam-gis/maptalks-wind"
6 | }
7 | ---
8 |
9 | 这里是气象色斑图的展示示例。
10 |
11 | ## 添加气象数据 - 单张
12 |
13 | ::: tip
14 | 单张灰度图数据
15 | :::
16 |
17 |
18 |
19 | ## 添加气象数据 - 瓦片
20 |
21 | ::: tip
22 | 灰度图瓦片数据
23 | :::
24 |
25 |
26 |
--------------------------------------------------------------------------------
/docs/playgrounds/maptalks/image.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
72 |
73 |
81 |
--------------------------------------------------------------------------------
/docs/playgrounds/maptalks/raster.md:
--------------------------------------------------------------------------------
1 | ---
2 | aside: false
3 | importMap: {
4 | "maptalks": "https://esm.sh/maptalks",
5 | "@sakitam-gis/maptalks-wind": "https://esm.sh/@sakitam-gis/maptalks-wind"
6 | }
7 | ---
8 |
9 | ## 添加栅格数据 - 单张
10 |
11 | 这里我们使用 maptalks 配合 ``wind-layer`` 的 `ImageSource` 创建栅格展示数据。
12 |
13 |
14 |
15 | 如示例代码所示 `ImageSource` 对应 maptalks 的 `ImageLayer`。
16 |
17 | ## 添加栅格数据 - 瓦片
18 |
19 | 这里我们使用 maptalks 配合 ``wind-layer`` 的 `TileSource` 创建栅格展示数据。
20 |
21 |
22 |
23 | 如示例代码所示 `ImageSource` 对应 maptalks 的 `TileLayer`。
24 |
--------------------------------------------------------------------------------
/docs/playgrounds/maptalks/tile.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
71 |
72 |
80 |
--------------------------------------------------------------------------------
/docs/playgrounds/ol/particles.md:
--------------------------------------------------------------------------------
1 | ---
2 | aside: false
3 | importMap: {
4 | "ol": "https://esm.sh/ol",
5 | "@sakitam-gis/ol5": "https://esm.sh/@sakitam-gis/ol5",
6 | "ol-wind": "https://esm.sh/ol-wind",
7 | "ol5-wind": "https://esm.sh/ol5-wind",
8 | "proj4": "https://esm.sh/proj4@2.6.0"
9 | }
10 | ---
11 |
12 | ## ol
13 |
14 | ### 基础地图展示
15 |
16 | ::: tip
17 | 基础使用,地图投影默认为 `EPSG:3857` 墨卡托投影。
18 | :::
19 |
20 |
21 |
22 | ### 投影变换
23 |
24 | 此处用于展示各类投影下的风场效果。
25 |
26 | #### epsg:4326
27 |
28 | ::: tip
29 | 投影变换,地图投影默认为 `EPSG:4326`, 可以看到地图两极有明显变形;
30 | :::
31 |
32 |
33 |
34 | #### epsg:3413 极投影
35 |
36 | ::: tip
37 | 投影变换,地图投影默认为 `EPSG:3413` 极投影;
38 | :::
39 |
40 |
41 |
42 | #### ESRI:53009 moll
43 |
44 | ::: tip
45 | 投影变换,地图投影默认为 `ESRI:53009`;
46 | :::
47 |
48 |
49 |
50 | ## ol5
51 |
52 | ol5 的相关支持
53 |
54 | ### 基础地图展示
55 |
56 | ::: tip
57 | 基础使用,地图投影默认为 `EPSG:3857` 墨卡托投影。
58 | :::
59 |
60 |
61 |
--------------------------------------------------------------------------------
/docs/public/animation.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/animation.mp4
--------------------------------------------------------------------------------
/docs/public/arrow.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/arrow.mp4
--------------------------------------------------------------------------------
/docs/public/data/float.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/float.png
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/0/0/0/wind-surface.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/0/0/0/wind-surface.jpeg
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/0/0/0/wind-surface.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/0/0/0/wind-surface.tiff
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/1/0/0/wind-surface.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/1/0/0/wind-surface.jpeg
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/1/0/0/wind-surface.jpeg.aux.xml:
--------------------------------------------------------------------------------
1 |
2 | PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]
3 | -2.0037508342789244e+07, 7.8271516964020484e+04, 0.0000000000000000e+00, 2.0037508342789244e+07, 0.0000000000000000e+00, -7.8271516964020484e+04
4 |
5 | JPEG
6 | PIXEL
7 | CMYK
8 |
9 |
10 | -19.805362701416016,20.85378074645996;-20.47370147705078,17.38047218322754;
11 | 20.85378074645996,17.38047218322754
12 | -19.805362701416016,-20.47370147705078
13 |
14 |
15 |
16 | JPEG
17 |
18 |
19 |
20 |
21 | JPEG
22 |
23 |
24 |
25 |
26 | JPEG
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/1/0/0/wind-surface.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/1/0/0/wind-surface.tiff
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/1/0/1/wind-surface.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/1/0/1/wind-surface.jpeg
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/1/0/1/wind-surface.jpeg.aux.xml:
--------------------------------------------------------------------------------
1 |
2 | PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]
3 | -2.0037508342789244e+07, 7.8271516964020484e+04, 0.0000000000000000e+00, 0.0000000000000000e+00, 0.0000000000000000e+00, -7.8271516964020484e+04
4 |
5 | JPEG
6 | PIXEL
7 | CMYK
8 |
9 |
10 | -15.681386947631836,16.796632766723633;-21.066377639770508,21.75660514831543;
11 | 16.796632766723633,21.75660514831543
12 | -15.681386947631836,-21.066377639770508
13 |
14 |
15 |
16 | JPEG
17 |
18 |
19 |
20 |
21 | JPEG
22 |
23 |
24 |
25 |
26 | JPEG
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/1/0/1/wind-surface.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/1/0/1/wind-surface.tiff
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/1/1/0/wind-surface.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/1/1/0/wind-surface.jpeg
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/1/1/0/wind-surface.jpeg.aux.xml:
--------------------------------------------------------------------------------
1 |
2 | PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]
3 | 0.0000000000000000e+00, 7.8271516964020484e+04, 0.0000000000000000e+00, 2.0037508342789244e+07, 0.0000000000000000e+00, -7.8271516964020484e+04
4 |
5 | JPEG
6 | PIXEL
7 | CMYK
8 |
9 |
10 | -15.327841758728027,15.18124771118164;-17.66584014892578,16.16832733154297;
11 | 15.18124771118164,16.16832733154297
12 | -15.327841758728027,-17.66584014892578
13 |
14 |
15 |
16 | JPEG
17 |
18 |
19 |
20 |
21 | JPEG
22 |
23 |
24 |
25 |
26 | JPEG
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/1/1/0/wind-surface.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/1/1/0/wind-surface.tiff
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/1/1/1/wind-surface.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/1/1/1/wind-surface.jpeg
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/1/1/1/wind-surface.jpeg.aux.xml:
--------------------------------------------------------------------------------
1 |
2 | PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]
3 | 0.0000000000000000e+00, 7.8271516964020484e+04, 0.0000000000000000e+00, 0.0000000000000000e+00, 0.0000000000000000e+00, -7.8271516964020484e+04
4 |
5 | JPEG
6 | PIXEL
7 | CMYK
8 |
9 |
10 | -22.817684173583984,24.274259567260742;-17.444974899291992,19.631595611572266;
11 | 24.274259567260742,19.631595611572266
12 | -22.817684173583984,-17.444974899291992
13 |
14 |
15 |
16 | JPEG
17 |
18 |
19 |
20 |
21 | JPEG
22 |
23 |
24 |
25 |
26 | JPEG
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/1/1/1/wind-surface.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/1/1/1/wind-surface.tiff
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/0/0/wind-surface.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/0/0/wind-surface.jpeg
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/0/0/wind-surface.jpeg.aux.xml:
--------------------------------------------------------------------------------
1 |
2 | PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]
3 | -2.0037508342789244e+07, 3.9135758482010242e+04, 0.0000000000000000e+00, 2.0037508342789244e+07, 0.0000000000000000e+00, -3.9135758482010242e+04
4 |
5 | JPEG
6 | PIXEL
7 | CMYK
8 |
9 |
10 | -9.761820793151855,13.393077850341797;-10.700143814086914,10.808058738708496;
11 | 13.393077850341797,10.808058738708496
12 | -9.761820793151855,-10.700143814086914
13 |
14 |
15 |
16 | JPEG
17 |
18 |
19 |
20 |
21 | JPEG
22 |
23 |
24 |
25 |
26 | JPEG
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/0/0/wind-surface.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/0/0/wind-surface.tiff
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/0/1/wind-surface.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/0/1/wind-surface.jpeg
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/0/1/wind-surface.jpeg.aux.xml:
--------------------------------------------------------------------------------
1 |
2 | PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]
3 | -2.0037508342789244e+07, 3.9135758482010242e+04, 0.0000000000000000e+00, 1.0018754171394622e+07, 0.0000000000000000e+00, -3.9135758482010242e+04
4 |
5 | JPEG
6 | PIXEL
7 | CMYK
8 |
9 |
10 | -11.853748321533203,16.327966690063477;-14.252401351928711,14.267011642456055;
11 | 16.327966690063477,14.267011642456055
12 | -11.853748321533203,-14.252401351928711
13 |
14 |
15 |
16 | JPEG
17 |
18 |
19 |
20 |
21 | JPEG
22 |
23 |
24 |
25 |
26 | JPEG
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/0/1/wind-surface.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/0/1/wind-surface.tiff
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/0/2/wind-surface.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/0/2/wind-surface.jpeg
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/0/2/wind-surface.jpeg.aux.xml:
--------------------------------------------------------------------------------
1 |
2 | PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]
3 | -2.0037508342789244e+07, 3.9135758482010242e+04, 0.0000000000000000e+00, 0.0000000000000000e+00, 0.0000000000000000e+00, -3.9135758482010242e+04
4 |
5 | JPEG
6 | PIXEL
7 | CMYK
8 |
9 |
10 | -16.817934036254883,16.353755950927734;-15.663369178771973,15.342354774475098;
11 | 16.353755950927734,15.342354774475098
12 | -16.817934036254883,-15.663369178771973
13 |
14 |
15 |
16 | JPEG
17 |
18 |
19 |
20 |
21 | JPEG
22 |
23 |
24 |
25 |
26 | JPEG
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/0/2/wind-surface.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/0/2/wind-surface.tiff
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/0/3/wind-surface.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/0/3/wind-surface.jpeg
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/0/3/wind-surface.jpeg.aux.xml:
--------------------------------------------------------------------------------
1 |
2 | PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]
3 | -2.0037508342789244e+07, 3.9135758482010242e+04, 0.0000000000000000e+00, -1.0018754171394620e+07, 0.0000000000000000e+00, -3.9135758482010235e+04
4 |
5 | JPEG
6 | PIXEL
7 | CMYK
8 |
9 |
10 | -12.825658798217773,11.456625938415527;-10.884737968444824,11.49609088897705;
11 | 11.456625938415527,11.49609088897705
12 | -12.825658798217773,-10.884737968444824
13 |
14 |
15 |
16 | JPEG
17 |
18 |
19 |
20 |
21 | JPEG
22 |
23 |
24 |
25 |
26 | JPEG
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/0/3/wind-surface.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/0/3/wind-surface.tiff
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/1/0/wind-surface.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/1/0/wind-surface.jpeg
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/1/0/wind-surface.jpeg.aux.xml:
--------------------------------------------------------------------------------
1 |
2 | PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]
3 | -1.0018754171394622e+07, 3.9135758482010242e+04, 0.0000000000000000e+00, 2.0037508342789244e+07, 0.0000000000000000e+00, -3.9135758482010242e+04
4 |
5 | JPEG
6 | PIXEL
7 | CMYK
8 |
9 |
10 | -12.974503517150879,15.233001708984375;-14.398733139038086,13.384988784790039;
11 | 15.233001708984375,13.384988784790039
12 | -12.974503517150879,-14.398733139038086
13 |
14 |
15 |
16 | JPEG
17 |
18 |
19 |
20 |
21 | JPEG
22 |
23 |
24 |
25 |
26 | JPEG
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/1/0/wind-surface.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/1/0/wind-surface.tiff
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/1/1/wind-surface.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/1/1/wind-surface.jpeg
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/1/1/wind-surface.jpeg.aux.xml:
--------------------------------------------------------------------------------
1 |
2 | PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]
3 | -1.0018754171394622e+07, 3.9135758482010242e+04, 0.0000000000000000e+00, 1.0018754171394622e+07, 0.0000000000000000e+00, -3.9135758482010242e+04
4 |
5 | JPEG
6 | PIXEL
7 | CMYK
8 |
9 |
10 | -20.72325897216797,21.732053756713867;-21.60259246826172,18.007219314575195;
11 | 21.732053756713867,18.007219314575195
12 | -20.72325897216797,-21.60259246826172
13 |
14 |
15 |
16 | JPEG
17 |
18 |
19 |
20 |
21 | JPEG
22 |
23 |
24 |
25 |
26 | JPEG
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/1/1/wind-surface.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/1/1/wind-surface.tiff
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/1/2/wind-surface.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/1/2/wind-surface.jpeg
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/1/2/wind-surface.jpeg.aux.xml:
--------------------------------------------------------------------------------
1 |
2 | PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]
3 | -1.0018754171394622e+07, 3.9135758482010242e+04, 0.0000000000000000e+00, 0.0000000000000000e+00, 0.0000000000000000e+00, -3.9135758482010242e+04
4 |
5 | JPEG
6 | PIXEL
7 | CMYK
8 |
9 |
10 | -12.599445343017578,17.346298217773438;-16.1553955078125,22.387126922607422;
11 | 17.346298217773438,22.387126922607422
12 | -12.599445343017578,-16.1553955078125
13 |
14 |
15 |
16 | JPEG
17 |
18 |
19 |
20 |
21 | JPEG
22 |
23 |
24 |
25 |
26 | JPEG
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/1/2/wind-surface.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/1/2/wind-surface.tiff
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/1/3/wind-surface.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/1/3/wind-surface.jpeg
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/1/3/wind-surface.jpeg.aux.xml:
--------------------------------------------------------------------------------
1 |
2 | PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]
3 | -1.0018754171394622e+07, 3.9135758482010242e+04, 0.0000000000000000e+00, -1.0018754171394620e+07, 0.0000000000000000e+00, -3.9135758482010235e+04
4 |
5 | JPEG
6 | PIXEL
7 | CMYK
8 |
9 |
10 | -15.390647888183594,8.478999137878418;-21.39316177368164,10.489214897155765;
11 | 8.478999137878418,10.489214897155765
12 | -15.390647888183594,-21.39316177368164
13 |
14 |
15 |
16 | JPEG
17 |
18 |
19 |
20 |
21 | JPEG
22 |
23 |
24 |
25 |
26 | JPEG
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/1/3/wind-surface.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/1/3/wind-surface.tiff
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/2/0/wind-surface.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/2/0/wind-surface.jpeg
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/2/0/wind-surface.jpeg.aux.xml:
--------------------------------------------------------------------------------
1 |
2 | PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]
3 | 0.0000000000000000e+00, 3.9135758482010242e+04, 0.0000000000000000e+00, 2.0037508342789244e+07, 0.0000000000000000e+00, -3.9135758482010242e+04
4 |
5 | JPEG
6 | PIXEL
7 | CMYK
8 |
9 |
10 | -14.87779712677002,15.651535034179688;-18.279232025146484,11.315524101257324;
11 | 15.651535034179688,11.315524101257324
12 | -14.87779712677002,-18.279232025146484
13 |
14 |
15 |
16 | JPEG
17 |
18 |
19 |
20 |
21 | JPEG
22 |
23 |
24 |
25 |
26 | JPEG
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/2/0/wind-surface.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/2/0/wind-surface.tiff
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/2/1/wind-surface.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/2/1/wind-surface.jpeg
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/2/1/wind-surface.jpeg.aux.xml:
--------------------------------------------------------------------------------
1 |
2 | PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]
3 | 0.0000000000000000e+00, 3.9135758482010242e+04, 0.0000000000000000e+00, 1.0018754171394622e+07, 0.0000000000000000e+00, -3.9135758482010242e+04
4 |
5 | JPEG
6 | PIXEL
7 | CMYK
8 |
9 |
10 | -13.388615608215332,16.20417594909668;-15.389498710632324,16.064620971679688;
11 | 16.20417594909668,16.064620971679688
12 | -13.388615608215332,-15.389498710632324
13 |
14 |
15 |
16 | JPEG
17 |
18 |
19 |
20 |
21 | JPEG
22 |
23 |
24 |
25 |
26 | JPEG
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/2/1/wind-surface.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/2/1/wind-surface.tiff
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/2/2/wind-surface.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/2/2/wind-surface.jpeg
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/2/2/wind-surface.jpeg.aux.xml:
--------------------------------------------------------------------------------
1 |
2 | PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]
3 | 0.0000000000000000e+00, 3.9135758482010242e+04, 0.0000000000000000e+00, 0.0000000000000000e+00, 0.0000000000000000e+00, -3.9135758482010242e+04
4 |
5 | JPEG
6 | PIXEL
7 | CMYK
8 |
9 |
10 | -14.87116527557373,16.81208038330078;-12.166154861450195,11.636382102966309;
11 | 16.81208038330078,11.636382102966309
12 | -14.87116527557373,-12.166154861450195
13 |
14 |
15 |
16 | JPEG
17 |
18 |
19 |
20 |
21 | JPEG
22 |
23 |
24 |
25 |
26 | JPEG
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/2/2/wind-surface.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/2/2/wind-surface.tiff
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/2/3/wind-surface.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/2/3/wind-surface.jpeg
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/2/3/wind-surface.jpeg.aux.xml:
--------------------------------------------------------------------------------
1 |
2 | PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]
3 | 0.0000000000000000e+00, 3.9135758482010242e+04, 0.0000000000000000e+00, -1.0018754171394620e+07, 0.0000000000000000e+00, -3.9135758482010235e+04
4 |
5 | JPEG
6 | PIXEL
7 | CMYK
8 |
9 |
10 | -19.467660903930664,9.122272491455078;-7.488211154937744,19.937063217163086;
11 | 9.122272491455078,19.937063217163086
12 | -19.467660903930664,-7.488211154937744
13 |
14 |
15 |
16 | JPEG
17 |
18 |
19 |
20 |
21 | JPEG
22 |
23 |
24 |
25 |
26 | JPEG
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/2/3/wind-surface.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/2/3/wind-surface.tiff
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/3/0/wind-surface.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/3/0/wind-surface.jpeg
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/3/0/wind-surface.jpeg.aux.xml:
--------------------------------------------------------------------------------
1 |
2 | PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]
3 | 1.0018754171394620e+07, 3.9135758482010235e+04, 0.0000000000000000e+00, 2.0037508342789244e+07, 0.0000000000000000e+00, -3.9135758482010242e+04
4 |
5 | JPEG
6 | PIXEL
7 | CMYK
8 |
9 |
10 | -11.514059066772461,14.256670951843262;-12.005725860595703,12.618420600891113;
11 | 14.256670951843262,12.618420600891113
12 | -11.514059066772461,-12.005725860595703
13 |
14 |
15 |
16 | JPEG
17 |
18 |
19 |
20 |
21 | JPEG
22 |
23 |
24 |
25 |
26 | JPEG
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/3/0/wind-surface.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/3/0/wind-surface.tiff
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/3/1/wind-surface.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/3/1/wind-surface.jpeg
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/3/1/wind-surface.jpeg.aux.xml:
--------------------------------------------------------------------------------
1 |
2 | PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]
3 | 1.0018754171394620e+07, 3.9135758482010235e+04, 0.0000000000000000e+00, 1.0018754171394622e+07, 0.0000000000000000e+00, -3.9135758482010242e+04
4 |
5 | JPEG
6 | PIXEL
7 | CMYK
8 |
9 |
10 | -16.69487953186035,15.332477569580078;-17.438154220581055,16.742582321166992;
11 | 15.332477569580078,16.742582321166992
12 | -16.69487953186035,-17.438154220581055
13 |
14 |
15 |
16 | JPEG
17 |
18 |
19 |
20 |
21 | JPEG
22 |
23 |
24 |
25 |
26 | JPEG
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/3/1/wind-surface.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/3/1/wind-surface.tiff
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/3/2/wind-surface.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/3/2/wind-surface.jpeg
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/3/2/wind-surface.jpeg.aux.xml:
--------------------------------------------------------------------------------
1 |
2 | PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]
3 | 1.0018754171394620e+07, 3.9135758482010235e+04, 0.0000000000000000e+00, 0.0000000000000000e+00, 0.0000000000000000e+00, -3.9135758482010242e+04
4 |
5 | JPEG
6 | PIXEL
7 | CMYK
8 |
9 |
10 | -23.42014503479004,24.86884117126465;-18.267148971557617,16.122346878051758;
11 | 24.86884117126465,16.122346878051758
12 | -23.42014503479004,-18.267148971557617
13 |
14 |
15 |
16 | JPEG
17 |
18 |
19 |
20 |
21 | JPEG
22 |
23 |
24 |
25 |
26 | JPEG
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/3/2/wind-surface.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/3/2/wind-surface.tiff
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/3/3/wind-surface.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/3/3/wind-surface.jpeg
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/3/3/wind-surface.jpeg.aux.xml:
--------------------------------------------------------------------------------
1 |
2 | PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]
3 | 1.0018754171394620e+07, 3.9135758482010235e+04, 0.0000000000000000e+00, -1.0018754171394620e+07, 0.0000000000000000e+00, -3.9135758482010235e+04
4 |
5 | JPEG
6 | PIXEL
7 | CMYK
8 |
9 |
10 | -21.488113403320312,12.604643821716309;-8.369563102722168,11.552475929260254;
11 | 12.604643821716309,11.552475929260254
12 | -21.488113403320312,-8.369563102722168
13 |
14 |
15 |
16 | JPEG
17 |
18 |
19 |
20 |
21 | JPEG
22 |
23 |
24 |
25 |
26 | JPEG
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/docs/public/data/tiles/2023111700/2023111703/2/3/3/wind-surface.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/tiles/2023111700/2023111703/2/3/3/wind-surface.tiff
--------------------------------------------------------------------------------
/docs/public/data/var_tmp.json:
--------------------------------------------------------------------------------
1 | [{"header": {"nx": 1440, "ny": 721, "dx": 0.25, "dy": 0.25, "min": -50.84996643066404, "max": 42.25002441406252, "extent": [-180.125, -90.125, 179.875, 90.125], "GRIB_COMMENT": "Temperature [C]", "GRIB_DISCIPLINE": "0(Meteorological)", "GRIB_ELEMENT": "TMP", "GRIB_FORECAST_SECONDS": "0 sec", "GRIB_IDS": "CENTER=7(US-NCEP) SUBCENTER=0 MASTER_TABLE=2 LOCAL_TABLE=1 SIGNF_REF_TIME=1(Start_of_Forecast) REF_TIME=2020-06-20T00:00:00Z PROD_STATUS=0(Operational) TYPE=1(Forecast)", "GRIB_PDS_PDTN": "0", "GRIB_PDS_TEMPLATE_ASSEMBLED_VALUES": "0 0 2 0 81 0 0 1 0 103 0 80 255 0 0", "GRIB_PDS_TEMPLATE_NUMBERS": "0 0 2 0 81 0 0 0 1 0 0 0 0 103 0 0 0 0 80 255 0 0 0 0 0", "GRIB_REF_TIME": "1592611200 sec UTC", "GRIB_SHORT_NAME": "80-HTGL", "GRIB_UNIT": "[C]", "GRIB_VALID_TIME": "1592611200 sec UTC"}, "data": "20200620/00/0p25/f000/var_tmp.png"}]
--------------------------------------------------------------------------------
/docs/public/data/var_tmp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/var_tmp.png
--------------------------------------------------------------------------------
/docs/public/data/var_ugrd-var_vgrd.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "header": {
4 | "nx": 1440,
5 | "ny": 721,
6 | "dx": 0.25,
7 | "dy": 0.25,
8 | "min": -21.34380340576172,
9 | "max": 30.7261962890625,
10 | "extent": [
11 | -180.125,
12 | -90.125,
13 | 179.875,
14 | 90.125
15 | ],
16 | "GRIB_COMMENT": "u-component of wind [m/s]",
17 | "GRIB_DISCIPLINE": "0(Meteorological)",
18 | "GRIB_ELEMENT": "UGRD",
19 | "GRIB_FORECAST_SECONDS": "0 sec",
20 | "GRIB_IDS": "CENTER=7(US-NCEP) SUBCENTER=0 MASTER_TABLE=2 LOCAL_TABLE=1 SIGNF_REF_TIME=1(Start_of_Forecast) REF_TIME=2020-06-20T00:00:00Z PROD_STATUS=0(Operational) TYPE=1(Forecast)",
21 | "GRIB_PDS_PDTN": "0",
22 | "GRIB_PDS_TEMPLATE_ASSEMBLED_VALUES": "2 2 2 0 81 0 0 1 0 103 0 10 255 0 0",
23 | "GRIB_PDS_TEMPLATE_NUMBERS": "2 2 2 0 81 0 0 0 1 0 0 0 0 103 0 0 0 0 10 255 0 0 0 0 0",
24 | "GRIB_REF_TIME": "1592611200 sec UTC",
25 | "GRIB_SHORT_NAME": "10-HTGL",
26 | "GRIB_UNIT": "[m/s]",
27 | "GRIB_VALID_TIME": "1592611200 sec UTC"
28 | },
29 | "data": "20200620/00/0p25/f000/var_ugrd-var_vgrd.png"
30 | },
31 | {
32 | "header": {
33 | "nx": 1440,
34 | "ny": 721,
35 | "dx": 0.25,
36 | "dy": 0.25,
37 | "min": -23.916271209716797,
38 | "max": 24.693727493286133,
39 | "extent": [
40 | -180.125,
41 | -90.125,
42 | 179.875,
43 | 90.125
44 | ],
45 | "GRIB_COMMENT": "v-component of wind [m/s]",
46 | "GRIB_DISCIPLINE": "0(Meteorological)",
47 | "GRIB_ELEMENT": "VGRD",
48 | "GRIB_FORECAST_SECONDS": "0 sec",
49 | "GRIB_IDS": "CENTER=7(US-NCEP) SUBCENTER=0 MASTER_TABLE=2 LOCAL_TABLE=1 SIGNF_REF_TIME=1(Start_of_Forecast) REF_TIME=2020-06-20T00:00:00Z PROD_STATUS=0(Operational) TYPE=1(Forecast)",
50 | "GRIB_PDS_PDTN": "0",
51 | "GRIB_PDS_TEMPLATE_ASSEMBLED_VALUES": "2 3 2 0 81 0 0 1 0 103 0 10 255 0 0",
52 | "GRIB_PDS_TEMPLATE_NUMBERS": "2 3 2 0 81 0 0 0 1 0 0 0 0 103 0 0 0 0 10 255 0 0 0 0 0",
53 | "GRIB_REF_TIME": "1592611200 sec UTC",
54 | "GRIB_SHORT_NAME": "10-HTGL",
55 | "GRIB_UNIT": "[m/s]",
56 | "GRIB_VALID_TIME": "1592611200 sec UTC"
57 | },
58 | "data": "20200620/00/0p25/f000/var_ugrd-var_vgrd.png"
59 | }
60 | ]
61 |
--------------------------------------------------------------------------------
/docs/public/data/var_ugrd-var_vgrd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/data/var_ugrd-var_vgrd.png
--------------------------------------------------------------------------------
/docs/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "wind-layer",
3 | "short_name": "wind-layer",
4 | "description": "a openlayers && maptalks && amap && bmap && leaflet && mapbox-gl && maplibre-gl extension like windy.com",
5 | "start_url": "/index.html",
6 | "display": "standalone",
7 | "background_color": "#1e1e20",
8 | "theme_color": "#1e1e20",
9 | "icons": [],
10 | "lang": "zh"
11 | }
12 |
--------------------------------------------------------------------------------
/docs/public/mapbox.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/mapbox.gif
--------------------------------------------------------------------------------
/docs/public/maptalks.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/maptalks.gif
--------------------------------------------------------------------------------
/docs/public/particles-poc.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/particles-poc.mp4
--------------------------------------------------------------------------------
/docs/public/particles.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/particles.mp4
--------------------------------------------------------------------------------
/docs/public/poc.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/poc.mp4
--------------------------------------------------------------------------------
/docs/public/wind-animation.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/wind-animation.mp4
--------------------------------------------------------------------------------
/docs/public/wind.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/wind.gif
--------------------------------------------------------------------------------
/docs/public/wind.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/docs/public/wind.png
--------------------------------------------------------------------------------
/docs/typings.d.ts:
--------------------------------------------------------------------------------
1 | declare module '*.json';
2 | declare module '*.glsl';
3 | declare module 'web-worker:*' {
4 | const WokerFactory: new () => Worker;
5 | export default WokerFactory;
6 | }
7 | interface Window {}
8 |
--------------------------------------------------------------------------------
/docs/vite.config.ts:
--------------------------------------------------------------------------------
1 | // import { fileURLToPath } from 'url';
2 | import { defineConfig } from 'vite';
3 | // import vitePluginExternal from 'vite-plugin-external';
4 |
5 | export default defineConfig(({ mode }) => ({
6 | plugins: [
7 | // vitePluginExternal({
8 | // // nodeBuiltins: true,
9 | // // externalizeDeps: [
10 | // //
11 | // // ],
12 | // interop: 'auto',
13 | // externals: {
14 | // maptalks: 'maptalks',
15 | // },
16 | // }),
17 | ],
18 | // resolve: {
19 | // alias: [
20 | // {
21 | // find: '@sakitam-gis/mapbox-wind',
22 | // replacement: '@sakitam-gis/mapbox-wind/dist/mapbox-wind.esm.js' // 解决构建报错
23 | // }
24 | // ],
25 | // // dedupe: ['vue'] // 将所有相同的依赖置为同一版本,常用在多仓库中(https://cn.vitejs.dev/config/shared-options.html#resolve-dedupe)
26 | // },
27 | optimizeDeps: {
28 | exclude: ['@sakitam-gis/mapbox-wind'],
29 | },
30 | }));
31 |
--------------------------------------------------------------------------------
/docsearch-config.json:
--------------------------------------------------------------------------------
1 | {
2 | "index_name": "wind-layer",
3 | "start_urls": [
4 | "https://blog.sakitam.com/wind-layer/"
5 | ],
6 | "sitemap_urls": [],
7 | "sitemap_alternate_links": true,
8 | "stop_urls": [
9 | "/tests"
10 | ],
11 | "selectors": {
12 | "lvl0": {
13 | "selector": "(//ul[contains(@class,'menu__list')]//a[contains(@class, 'menu__link menu__link--sublist menu__link--active')]/text() | //nav[contains(@class, 'navbar')]//a[contains(@class, 'navbar__link--active')]/text())[last()]",
14 | "type": "xpath",
15 | "global": true,
16 | "default_value": "Documentation"
17 | },
18 | "lvl1": "header h1",
19 | "lvl2": "article h2",
20 | "lvl3": "article h3",
21 | "lvl4": "article h4",
22 | "lvl5": "article h5, article td:first-child",
23 | "lvl6": "article h6",
24 | "text": "article p, article li, article td:last-child"
25 | },
26 | "strip_chars": " .,;:#",
27 | "custom_settings": {
28 | "separatorsToIndex": "_",
29 | "attributesForFaceting": [
30 | "language",
31 | "version",
32 | "type"
33 | ],
34 | "attributesToRetrieve": [
35 | "hierarchy",
36 | "content",
37 | "anchor",
38 | "url",
39 | "url_without_anchor",
40 | "type"
41 | ]
42 | },
43 | "js_render": true,
44 | "conversation_id": [
45 | "833762294"
46 | ],
47 | "nb_hits": 46250
48 | }
49 |
--------------------------------------------------------------------------------
/docsearch.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # 本地运行
3 | docker run -it --env-file=.env -e "CONFIG=$(cat docsearch-config.json | jq -r tostring)" algolia/docsearch-scraper
4 |
--------------------------------------------------------------------------------
/examples/data/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/examples/data/1.png
--------------------------------------------------------------------------------
/examples/data/10.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/examples/data/10.jpeg
--------------------------------------------------------------------------------
/examples/data/11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/examples/data/11.png
--------------------------------------------------------------------------------
/examples/data/12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/examples/data/12.png
--------------------------------------------------------------------------------
/examples/data/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/examples/data/2.png
--------------------------------------------------------------------------------
/examples/data/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/examples/data/3.png
--------------------------------------------------------------------------------
/examples/data/num/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/examples/data/num/1.png
--------------------------------------------------------------------------------
/examples/data/num/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/examples/data/num/2.png
--------------------------------------------------------------------------------
/examples/data/num/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/examples/data/num/3.png
--------------------------------------------------------------------------------
/examples/data/num/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/examples/data/num/4.png
--------------------------------------------------------------------------------
/examples/data/num/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/examples/data/num/5.png
--------------------------------------------------------------------------------
/examples/data/temp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/examples/data/temp.png
--------------------------------------------------------------------------------
/examples/data/temp.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/examples/data/temp.tiff
--------------------------------------------------------------------------------
/examples/data/uv-mc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/examples/data/uv-mc.png
--------------------------------------------------------------------------------
/examples/data/uv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/examples/data/uv.png
--------------------------------------------------------------------------------
/examples/data/var_tmp.json:
--------------------------------------------------------------------------------
1 | [{"header": {"nx": 1440, "ny": 721, "dx": 0.25, "dy": 0.25, "min": -50.84996643066404, "max": 42.25002441406252, "extent": [-180.125, -90.125, 179.875, 90.125], "GRIB_COMMENT": "Temperature [C]", "GRIB_DISCIPLINE": "0(Meteorological)", "GRIB_ELEMENT": "TMP", "GRIB_FORECAST_SECONDS": "0 sec", "GRIB_IDS": "CENTER=7(US-NCEP) SUBCENTER=0 MASTER_TABLE=2 LOCAL_TABLE=1 SIGNF_REF_TIME=1(Start_of_Forecast) REF_TIME=2020-06-20T00:00:00Z PROD_STATUS=0(Operational) TYPE=1(Forecast)", "GRIB_PDS_PDTN": "0", "GRIB_PDS_TEMPLATE_ASSEMBLED_VALUES": "0 0 2 0 81 0 0 1 0 103 0 80 255 0 0", "GRIB_PDS_TEMPLATE_NUMBERS": "0 0 2 0 81 0 0 0 1 0 0 0 0 103 0 0 0 0 80 255 0 0 0 0 0", "GRIB_REF_TIME": "1592611200 sec UTC", "GRIB_SHORT_NAME": "80-HTGL", "GRIB_UNIT": "[C]", "GRIB_VALID_TIME": "1592611200 sec UTC"}, "data": "20200620/00/0p25/f000/var_tmp.png"}]
--------------------------------------------------------------------------------
/examples/data/var_tmp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/examples/data/var_tmp.png
--------------------------------------------------------------------------------
/examples/data/var_ugrd-var_vgrd.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "header": {
4 | "nx": 1440,
5 | "ny": 721,
6 | "dx": 0.25,
7 | "dy": 0.25,
8 | "min": -21.34380340576172,
9 | "max": 30.7261962890625,
10 | "extent": [
11 | -180.125,
12 | -90.125,
13 | 179.875,
14 | 90.125
15 | ],
16 | "GRIB_COMMENT": "u-component of wind [m/s]",
17 | "GRIB_DISCIPLINE": "0(Meteorological)",
18 | "GRIB_ELEMENT": "UGRD",
19 | "GRIB_FORECAST_SECONDS": "0 sec",
20 | "GRIB_IDS": "CENTER=7(US-NCEP) SUBCENTER=0 MASTER_TABLE=2 LOCAL_TABLE=1 SIGNF_REF_TIME=1(Start_of_Forecast) REF_TIME=2020-06-20T00:00:00Z PROD_STATUS=0(Operational) TYPE=1(Forecast)",
21 | "GRIB_PDS_PDTN": "0",
22 | "GRIB_PDS_TEMPLATE_ASSEMBLED_VALUES": "2 2 2 0 81 0 0 1 0 103 0 10 255 0 0",
23 | "GRIB_PDS_TEMPLATE_NUMBERS": "2 2 2 0 81 0 0 0 1 0 0 0 0 103 0 0 0 0 10 255 0 0 0 0 0",
24 | "GRIB_REF_TIME": "1592611200 sec UTC",
25 | "GRIB_SHORT_NAME": "10-HTGL",
26 | "GRIB_UNIT": "[m/s]",
27 | "GRIB_VALID_TIME": "1592611200 sec UTC"
28 | },
29 | "data": "20200620/00/0p25/f000/var_ugrd-var_vgrd.png"
30 | },
31 | {
32 | "header": {
33 | "nx": 1440,
34 | "ny": 721,
35 | "dx": 0.25,
36 | "dy": 0.25,
37 | "min": -23.916271209716797,
38 | "max": 24.693727493286133,
39 | "extent": [
40 | -180.125,
41 | -90.125,
42 | 179.875,
43 | 90.125
44 | ],
45 | "GRIB_COMMENT": "v-component of wind [m/s]",
46 | "GRIB_DISCIPLINE": "0(Meteorological)",
47 | "GRIB_ELEMENT": "VGRD",
48 | "GRIB_FORECAST_SECONDS": "0 sec",
49 | "GRIB_IDS": "CENTER=7(US-NCEP) SUBCENTER=0 MASTER_TABLE=2 LOCAL_TABLE=1 SIGNF_REF_TIME=1(Start_of_Forecast) REF_TIME=2020-06-20T00:00:00Z PROD_STATUS=0(Operational) TYPE=1(Forecast)",
50 | "GRIB_PDS_PDTN": "0",
51 | "GRIB_PDS_TEMPLATE_ASSEMBLED_VALUES": "2 3 2 0 81 0 0 1 0 103 0 10 255 0 0",
52 | "GRIB_PDS_TEMPLATE_NUMBERS": "2 3 2 0 81 0 0 0 1 0 0 0 0 103 0 0 0 0 10 255 0 0 0 0 0",
53 | "GRIB_REF_TIME": "1592611200 sec UTC",
54 | "GRIB_SHORT_NAME": "10-HTGL",
55 | "GRIB_UNIT": "[m/s]",
56 | "GRIB_VALID_TIME": "1592611200 sec UTC"
57 | },
58 | "data": "20200620/00/0p25/f000/var_ugrd-var_vgrd.png"
59 | }
60 | ]
61 |
--------------------------------------------------------------------------------
/examples/data/var_ugrd-var_vgrd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/examples/data/var_ugrd-var_vgrd.png
--------------------------------------------------------------------------------
/examples/data/wind-mc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/examples/data/wind-mc.png
--------------------------------------------------------------------------------
/examples/data/wind-uv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sakitam-fdd/wind-layer/bf11d2108459e11fa50e1590ee448a09d075138c/examples/data/wind-uv.png
--------------------------------------------------------------------------------
/examples/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | map
7 |
8 |
9 |
30 |
31 |
32 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/examples/math.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Title
6 |
7 |
8 |
9 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/examples/ol4.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ol4 wind-layer
6 |
7 |
8 |
19 |
20 |
21 |
22 |
23 |
24 |
69 |
70 |
71 |
--------------------------------------------------------------------------------
/packages/amap/README.md:
--------------------------------------------------------------------------------
1 | # `amap-wind`
2 |
3 | > [amap](https://amap.com) wind layer adapter
4 |
5 | ## Usage
6 |
7 | ### Install
8 |
9 | ```bash
10 | pnpm i amap-wind -D
11 | ```
12 |
13 | ### Example
14 |
15 | ```tsx
16 | requireSDK('//webapi.amap.com/maps?v=1.4.2', '6cb85da518029607d421917b7ddeb94a', 'webapi.amap.com')
17 | .then(flag => {
18 | if (flag) {
19 | const map = new AMap.Map('amap', {
20 | resizeEnable: true,
21 | zoom: 0,
22 | center: [113.53450137499999, 34.44104525],
23 | zooms: [0, 18]
24 | });
25 |
26 | import('amap-wind').then(({ WindLayer }) => {
27 | fetch(this.$withBase('/data/wind.json'))
28 | .then(res => res.json())
29 | .then(res => {
30 | const windLayer = new WindLayer(res, {
31 | windOptions: {
32 | // colorScale: scale,
33 | velocityScale: 1 / 20,
34 | paths: 5000,
35 | // eslint-disable-next-line no-unused-vars
36 | colorScale: [
37 | "rgb(36,104, 180)",
38 | "rgb(60,157, 194)",
39 | "rgb(128,205,193 )",
40 | "rgb(151,218,168 )",
41 | "rgb(198,231,181)",
42 | "rgb(238,247,217)",
43 | "rgb(255,238,159)",
44 | "rgb(252,217,125)",
45 | "rgb(255,182,100)",
46 | "rgb(252,150,75)",
47 | "rgb(250,112,52)",
48 | "rgb(245,64,32)",
49 | "rgb(237,45,28)",
50 | "rgb(220,24,32)",
51 | "rgb(180,0,35)"
52 | ],
53 | lineWidth: 2,
54 | // colorScale: scale,
55 | generateParticleOption: false
56 | },
57 | zIndex: 20,
58 | });
59 |
60 | console.log(map, windLayer);
61 |
62 | windLayer.appendTo(map);
63 | });
64 | });
65 | }
66 | })
67 | .catch(e => console.error(e));
68 | ```
69 |
--------------------------------------------------------------------------------
/packages/amap/__tests__/amap.test.ts:
--------------------------------------------------------------------------------
1 | import { test, expect, describe, beforeAll, afterAll, vi } from 'vitest';
2 |
3 | vi.stubGlobal('AMap', vi.fn());
4 |
5 | beforeAll(async () => {
6 | console.log(`[amap-wind]: start testing...`);
7 | });
8 |
9 | afterAll(async () => {
10 | console.log(`[amap-wind]: test end`);
11 | });
12 |
13 | describe('amap', async () => {
14 | test('instance', async () => {
15 | const { WindLayer } = await import('../src');
16 | const layer = new WindLayer([], {
17 | // projection: 'EPSG:4326',
18 | zIndex: 20,
19 | colorScale: 'rgb(255, 255, 255)',
20 | velocityScale: 1 / 30,
21 | paths: 1000,
22 | // bounds: map.getBounds(),
23 | });
24 | expect(layer).toBeInstanceOf(WindLayer);
25 | });
26 | });
27 |
--------------------------------------------------------------------------------
/packages/amap/tsconfig.docs.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "noEmit": true
5 | },
6 | "include": [
7 | "typings.d.ts",
8 | "src/**/*.ts",
9 | "src/**/*.json"
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/packages/amap/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "dist",
5 | "rootDir": "src",
6 | "module": "esnext",
7 | "target": "esnext"
8 | },
9 | "include": [
10 | "src/**/*.ts",
11 | "src/**/*.json",
12 | "package.json",
13 | "rollup.config.ts",
14 | "typings.d.ts"
15 | ]
16 | }
17 |
--------------------------------------------------------------------------------
/packages/amap/typedoc.json:
--------------------------------------------------------------------------------
1 | {
2 | "entryPoints": [
3 | "./src/index.ts"
4 | ],
5 | "gitRevision": "master",
6 | "sourceLinkTemplate": "https://github.com/sakitam-fdd/wind-layer/blob/{gitRevision}/{path}#L{line}",
7 | "excludeExternals": true,
8 | "excludePrivate": true,
9 | "excludeInternal": true,
10 | "excludeProtected": true,
11 | "hideGenerator": true,
12 | "includeVersion": true,
13 | "hideBreadcrumbs": true,
14 | "allReflectionsHaveOwnDocument": true,
15 | "sort": ["source-order"],
16 | "plugin": [
17 | "typedoc-plugin-markdown",
18 | "typedoc-plugin-not-exported"
19 | ],
20 | "name": "amap-wind",
21 | "out": "../../docs/api/amap-wind",
22 | "readme": "none",
23 | "entryDocument": "index.md",
24 | "tsconfig": "./tsconfig.docs.json"
25 | }
26 |
--------------------------------------------------------------------------------
/packages/amap/typings.d.ts:
--------------------------------------------------------------------------------
1 | declare module '*.json';
2 |
3 | declare module 'AMap' {
4 | const AmapFactory: new () => any;
5 | export default AmapFactory;
6 | }
7 |
--------------------------------------------------------------------------------
/packages/amap/vitest.config.ts:
--------------------------------------------------------------------------------
1 | import { UserConfig } from 'vitest';
2 |
3 | const config: { test: UserConfig } = {
4 | test: {
5 | testTimeout: 50000,
6 | coverage: {
7 | reporter: ['lcov', 'html'],
8 | } as any,
9 | },
10 | }
11 |
12 | export default config;
13 |
--------------------------------------------------------------------------------
/packages/bmap/__tests__/bmap.test.ts:
--------------------------------------------------------------------------------
1 | import { test, expect, describe, beforeAll, afterAll, vi } from 'vitest';
2 |
3 | vi.stubGlobal(
4 | 'BMap',
5 | vi.mocked({
6 | Overlay: class {},
7 | }),
8 | );
9 |
10 | beforeAll(async () => {
11 | console.log(`[bmap-wind]: start testing...`);
12 | });
13 |
14 | afterAll(async () => {
15 | console.log(`[bmap-wind]: test end`);
16 | });
17 |
18 | describe('bmap', async () => {
19 | test('instance', async () => {
20 | const { WindLayer } = await import('../src');
21 | const layer = new WindLayer([], {
22 | zIndex: 20,
23 | colorScale: 'rgb(255, 255, 255)',
24 | velocityScale: 1 / 30,
25 | paths: 1000,
26 | // bounds: map.getBounds(),
27 | });
28 | expect(layer).toBeInstanceOf(WindLayer);
29 | });
30 | });
31 |
--------------------------------------------------------------------------------
/packages/bmap/tsconfig.docs.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "noEmit": true
5 | },
6 | "include": [
7 | "typings.d.ts",
8 | "src/**/*.ts",
9 | "src/**/*.json"
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/packages/bmap/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "dist",
5 | "rootDir": "src",
6 | "module": "esnext",
7 | "target": "esnext"
8 | },
9 | "include": [
10 | "src/**/*.ts",
11 | "src/**/*.json",
12 | "package.json",
13 | "rollup.config.ts",
14 | "typings.d.ts"
15 | ]
16 | }
17 |
--------------------------------------------------------------------------------
/packages/bmap/typedoc.json:
--------------------------------------------------------------------------------
1 | {
2 | "entryPoints": [
3 | "./src/index.ts"
4 | ],
5 | "gitRevision": "master",
6 | "sourceLinkTemplate": "https://github.com/sakitam-fdd/wind-layer/blob/{gitRevision}/{path}#L{line}",
7 | "excludeExternals": true,
8 | "excludePrivate": true,
9 | "excludeInternal": true,
10 | "excludeProtected": true,
11 | "hideGenerator": true,
12 | "includeVersion": true,
13 | "hideBreadcrumbs": true,
14 | "allReflectionsHaveOwnDocument": true,
15 | "sort": ["source-order"],
16 | "plugin": [
17 | "typedoc-plugin-markdown",
18 | "typedoc-plugin-not-exported"
19 | ],
20 | "name": "bmap-wind",
21 | "out": "../../docs/api/bmap-wind",
22 | "readme": "none",
23 | "entryDocument": "index.md",
24 | "tsconfig": "./tsconfig.docs.json"
25 | }
26 |
--------------------------------------------------------------------------------
/packages/bmap/typings.d.ts:
--------------------------------------------------------------------------------
1 | declare module '*.json';
2 |
--------------------------------------------------------------------------------
/packages/bmap/vitest.config.ts:
--------------------------------------------------------------------------------
1 | import { UserConfig } from 'vitest';
2 |
3 | const config: { test: UserConfig } = {
4 | test: {
5 | testTimeout: 50000,
6 | coverage: {
7 | reporter: ['lcov', 'html'],
8 | } as any,
9 | },
10 | }
11 |
12 | export default config;
13 |
--------------------------------------------------------------------------------
/packages/core/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # wind-core
2 |
3 | ## 1.1.8
4 |
5 | ### Patch Changes
6 |
7 | - [`44c0d33`](https://github.com/sakitam-fdd/wind-layer/commit/44c0d33a0d937d586f3086dbb873007b9a826a53) Thanks [@sakitam-fdd](https://github.com/sakitam-fdd)! - bump version
8 |
9 | ## 1.1.7
10 |
11 | ### Patch Changes
12 |
13 | - [`0b59e55`](https://github.com/sakitam-fdd/wind-layer/commit/0b59e554db71039b1f73a30e80cd4a0c423967b8) Thanks [@sakitam-fdd](https://github.com/sakitam-fdd)! - bump version
14 |
15 | ## 1.1.6
16 |
17 | ### Patch Changes
18 |
19 | - [`9089371`](https://github.com/sakitam-fdd/wind-layer/commit/9089371bd2f7afdd074f500cb73fd532695e20b8) Thanks [@sakitam-fdd](https://github.com/sakitam-fdd)! - bump version
20 |
21 | ## 1.1.5
22 |
23 | ### Patch Changes
24 |
25 | - [`515d3dc`](https://github.com/sakitam-fdd/wind-layer/commit/515d3dcdc94432b783d3d08a7079d3cc1d722a5f) Thanks [@sakitam-fdd](https://github.com/sakitam-fdd)! - release: bump version
26 |
27 | ## 1.1.4
28 |
29 | ### Patch Changes
30 |
31 | - [`9a8ed0d`](https://github.com/sakitam-fdd/wind-layer/commit/9a8ed0d298cbb8240d23e81e480e7cf5a046d52c) Thanks [@sakitam-fdd](https://github.com/sakitam-fdd)! - release: bump version
32 |
33 | ## 1.1.2
34 |
35 | ### Patch Changes
36 |
37 | - [`2721a99`](https://github.com/sakitam-fdd/wind-layer/commit/2721a996e6158e63ee9c98f444f802e229d22f58) Thanks [@sakitam-fdd](https://github.com/sakitam-fdd)! - release: v1.1.2
38 |
39 | ## 1.1.1
40 |
41 | ### Patch Changes
42 |
43 | - [`4323d1e`](https://github.com/sakitam-fdd/wind-layer/commit/4323d1ef0334dd30b4ae74d1cd231467a3e81046) Thanks [@sakitam-fdd](https://github.com/sakitam-fdd)! - chore(release): publish
44 |
--------------------------------------------------------------------------------
/packages/core/README.md:
--------------------------------------------------------------------------------
1 | # `wind-core`
2 |
3 | > Wind field core
4 |
5 | ## Usage
6 |
7 | ```js
8 | import WindCore from 'wind-core';
9 |
10 | const wind = new WindCore(this.context, opt, data);
11 |
12 | wind.project = (coordinate) => pixel;
13 | wind.intersectsCoordinate = (coordinate) => true;
14 | wind.postrender = () => {};
15 | ```
16 |
--------------------------------------------------------------------------------
/packages/core/__tests__/core.test.ts:
--------------------------------------------------------------------------------
1 | import { test, expect, describe, beforeAll, afterAll } from 'vitest';
2 | import { isFunction, compareVersion } from '../src';
3 |
4 | beforeAll(async () => {
5 | console.log(`[wind-core]: start testing...`);
6 | });
7 |
8 | afterAll(async () => {
9 | console.log(`[wind-core]: test end`);
10 | });
11 |
12 | describe('utils', async () => {
13 | test('isFunction', async () => {
14 | expect(isFunction(1)).toBe(false);
15 | });
16 |
17 | test('compareVersion', async () => {
18 | expect(compareVersion('2.0.0', '2.0.0') >= 0).toBe(true);
19 | expect(compareVersion('2.0', '2.0.0') >= 0).toBe(true);
20 | expect(compareVersion('1.0', '2.0.0') >= 0).toBe(false);
21 | });
22 | });
23 |
--------------------------------------------------------------------------------
/packages/core/src/Vector.ts:
--------------------------------------------------------------------------------
1 | export default class Vector {
2 | public u: number;
3 | public v: number;
4 | public m: number;
5 |
6 | constructor(u: number, v: number) {
7 | this.u = u;
8 | this.v = v;
9 |
10 | this.m = this.magnitude();
11 | }
12 |
13 | /**
14 | * 向量值(这里指风速)
15 | * @returns {Number}
16 | */
17 | public magnitude() {
18 | return Math.sqrt(this.u ** 2 + this.v ** 2);
19 | }
20 |
21 | /**
22 | * 流体方向 (这里指风向,范围为0-360º)
23 | * N is 0º and E is 90º
24 | * @returns {Number}
25 | */
26 | public directionTo() {
27 | const verticalAngle = Math.atan2(this.u, this.v);
28 | let inDegrees = verticalAngle * (180.0 / Math.PI);
29 | if (inDegrees < 0) {
30 | inDegrees += 360.0;
31 | }
32 | return inDegrees;
33 | }
34 |
35 | /**
36 | * Angle in degrees (0 to 360º) From x-->
37 | * N is 0º and E is 90º
38 | * @returns {Number}
39 | */
40 | public directionFrom() {
41 | const a = this.directionTo();
42 | return (a + 180.0) % 360.0;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/packages/core/tsconfig.docs.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "noEmit": true
5 | },
6 | "include": [
7 | "typings.d.ts",
8 | "src/**/*.ts",
9 | "src/**/*.json"
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/packages/core/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "dist",
5 | "rootDir": "src",
6 | "module": "esnext",
7 | "target": "esnext"
8 | },
9 | "include": [
10 | "src/**/*.ts",
11 | "src/**/*.json",
12 | "package.json",
13 | "rollup.config.ts",
14 | "typings.d.ts"
15 | ]
16 | }
17 |
--------------------------------------------------------------------------------
/packages/core/typedoc.json:
--------------------------------------------------------------------------------
1 | {
2 | "entryPoints": [
3 | "./src/index.ts"
4 | ],
5 | "gitRevision": "master",
6 | "sourceLinkTemplate": "https://github.com/sakitam-fdd/wind-layer/blob/{gitRevision}/{path}#L{line}",
7 | "excludeExternals": true,
8 | "excludePrivate": true,
9 | "excludeInternal": true,
10 | "excludeProtected": true,
11 | "hideGenerator": true,
12 | "includeVersion": true,
13 | "hideBreadcrumbs": true,
14 | "allReflectionsHaveOwnDocument": true,
15 | "sort": ["source-order"],
16 | "plugin": [
17 | "typedoc-plugin-markdown",
18 | "typedoc-plugin-not-exported"
19 | ],
20 | "name": "wind-core",
21 | "out": "../../docs/api/wind-core",
22 | "readme": "none",
23 | "entryDocument": "index.md",
24 | "tsconfig": "./tsconfig.docs.json"
25 | }
26 |
--------------------------------------------------------------------------------
/packages/core/typings.d.ts:
--------------------------------------------------------------------------------
1 | declare module '*.json';
2 |
--------------------------------------------------------------------------------
/packages/core/vitest.config.ts:
--------------------------------------------------------------------------------
1 | import { UserConfig } from 'vitest';
2 |
3 | const config: { test: UserConfig } = {
4 | test: {
5 | testTimeout: 50000,
6 | coverage: {
7 | reporter: ['lcov', 'html'],
8 | } as any,
9 | },
10 | }
11 |
12 | export default config;
13 |
--------------------------------------------------------------------------------
/packages/gl-core/__tests__/core.test.ts:
--------------------------------------------------------------------------------
1 | import { test, expect, describe, beforeAll, afterAll } from 'vitest';
2 |
3 | beforeAll(async () => {
4 | console.log(`[wind-gl-core]: start testing...`);
5 | });
6 |
7 | afterAll(async () => {
8 | console.log(`[wind-gl-core]: test end`);
9 | });
10 |
11 | describe('utils', async () => {
12 | test('isNumber', async () => {
13 | expect(1).toBe(1);
14 | });
15 | });
16 |
--------------------------------------------------------------------------------
/packages/gl-core/src/index.ts:
--------------------------------------------------------------------------------
1 | import wgw from 'wind-gl-worker';
2 | import BaseLayer, { defaultOptions } from './renderer';
3 | import TileID from './tile/TileID';
4 | import Tile from './tile/Tile';
5 | import type { BaseLayerOptions, UserOptions } from './renderer';
6 |
7 | const configDeps = wgw.configDeps;
8 |
9 | export * from './utils/common';
10 |
11 | export { BaseLayer, BaseLayerOptions, UserOptions, TileID, Tile, defaultOptions, configDeps };
12 |
13 | export * from './source';
14 |
15 | export * from './type';
16 |
--------------------------------------------------------------------------------
/packages/gl-core/src/renderer/Pipelines.ts:
--------------------------------------------------------------------------------
1 | import type { Renderer } from '@sakitam-gis/vis-engine';
2 |
3 | export default class Pipelines {
4 | #passes: any[] = [];
5 |
6 | public enabled: boolean;
7 | public renderer: Renderer;
8 |
9 | constructor(renderer) {
10 | this.enabled = true;
11 | this.renderer = renderer;
12 | }
13 |
14 | get passes() {
15 | return this.#passes;
16 | }
17 |
18 | get length() {
19 | return this.passes.length;
20 | }
21 |
22 | resize(width: number, height: number) {
23 | const len = this.#passes.length;
24 | for (let i = 0; i < len; i++) {
25 | const pass = this.#passes[i];
26 | pass.resize?.(width, height);
27 | }
28 | }
29 |
30 | addPass(pass) {
31 | this.#passes.push(pass);
32 | }
33 |
34 | removePass(pass) {
35 | const idx = this.#passes.indexOf(pass);
36 | if (idx > -1) {
37 | this.#passes.splice(pass, 1);
38 | pass.destroy();
39 | }
40 | }
41 |
42 | removePasses() {
43 | this.#passes.forEach((pass) => pass.destroy());
44 | this.#passes = [];
45 | }
46 |
47 | getPass(id) {
48 | return this.#passes.find((pass) => pass.id === id);
49 | }
50 |
51 | prerender(rendererParams, rendererState) {
52 | const passes = this.#passes.filter((p) => p.enabled && p.prerender === true);
53 | if (passes.length > 0) {
54 | const len = passes.length;
55 | for (let i = 0; i < len; i++) {
56 | const pass = passes[i];
57 | pass.render(rendererParams, rendererState);
58 | }
59 | this.renderer.resetState();
60 | }
61 | }
62 |
63 | render(rendererParams, rendererState) {
64 | const passes = this.#passes.filter((p) => p.enabled && p.prerender !== true);
65 | if (passes.length > 0) {
66 | const len = passes.length;
67 | for (let i = 0; i < len; i++) {
68 | const pass = passes[i];
69 | pass.render(rendererParams, rendererState);
70 | }
71 | this.renderer.resetState();
72 | }
73 | }
74 |
75 | destroy() {
76 | this.#passes.forEach((pass) => pass.destroy());
77 | }
78 | }
79 |
--------------------------------------------------------------------------------
/packages/gl-core/src/renderer/pass/arrow/README.md:
--------------------------------------------------------------------------------
1 | ## 渲染箭头图层
2 |
--------------------------------------------------------------------------------
/packages/gl-core/src/renderer/pass/arrow/compose.ts:
--------------------------------------------------------------------------------
1 | import ComposePass from '../particles/compose';
2 |
3 | export default class ArrowComposePass extends ComposePass {}
4 |
--------------------------------------------------------------------------------
/packages/gl-core/src/renderer/pass/base.ts:
--------------------------------------------------------------------------------
1 | import type { Renderer } from '@sakitam-gis/vis-engine';
2 |
3 | const ERR_PASS_METHOD_UNDEFINED = 'Pass subclass must define virtual methods';
4 |
5 | export default class Pass {
6 | public id: string;
7 |
8 | public readonly renderer: Renderer;
9 |
10 | public options: T;
11 |
12 | public maskPass: any;
13 |
14 | #enabled = true;
15 |
16 | constructor(id: string, renderer: Renderer, options: T = {} as T) {
17 | this.id = id;
18 | this.renderer = renderer;
19 | this.options = options;
20 |
21 | this.setMaskPass((this.options as any).maskPass);
22 | }
23 |
24 | get enabled() {
25 | return this.#enabled;
26 | }
27 |
28 | set enabled(state) {
29 | this.#enabled = state;
30 | }
31 |
32 | setMaskPass(pass) {
33 | this.maskPass = pass;
34 | }
35 |
36 | render(rendererParams, rendererState, cb) { // eslint-disable-line
37 | throw new Error(ERR_PASS_METHOD_UNDEFINED);
38 | }
39 |
40 | destroy() {
41 | throw new Error(ERR_PASS_METHOD_UNDEFINED);
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/packages/gl-core/src/renderer/pass/color/README.md:
--------------------------------------------------------------------------------
1 | ## 主要用于色斑图的渲染
2 |
--------------------------------------------------------------------------------
/packages/gl-core/src/renderer/pass/particles/README.md:
--------------------------------------------------------------------------------
1 | ## 粒子图层
2 |
3 | 共计四个 pass,关系如下:
4 |
5 | - compose:瓦片数据合并
6 | - update:更新 GPU 粒子位置,并编码到 rbga
7 | - particles:绘制粒子
8 | - screen:绘制到 canvas buffer
9 |
--------------------------------------------------------------------------------
/packages/gl-core/src/renderer/pass/raster/README.md:
--------------------------------------------------------------------------------
1 | ## 用于普通瓦片的渲染
2 |
--------------------------------------------------------------------------------
/packages/gl-core/src/shaders/common.frag.glsl:
--------------------------------------------------------------------------------
1 | precision highp float;
2 |
3 | uniform sampler2D u_texture;
4 | uniform sampler2D u_textureNext;
5 | uniform float u_fade_t;
6 | uniform float opacity;
7 |
8 | varying vec2 vUv;
9 |
10 | void main () {
11 | vec2 uv = vUv;
12 |
13 | vec4 color0 = texture2D(u_texture, vUv);
14 | vec4 color1 = texture2D(u_textureNext, vUv);
15 |
16 | vec4 color = mix(color0, color1, u_fade_t);
17 |
18 | gl_FragColor = vec4(floor(255.0 * color * opacity) / 255.0);
19 | }
20 |
--------------------------------------------------------------------------------
/packages/gl-core/src/shaders/common.vert.glsl:
--------------------------------------------------------------------------------
1 | #defines
2 |
3 | attribute vec2 uv;
4 | attribute vec3 position;
5 | uniform vec2 resolution;
6 | uniform mat4 modelViewMatrix;
7 | uniform mat4 projectionMatrix;
8 |
9 | varying vec2 vUv;
10 |
11 | void main () {
12 | vUv = uv;
13 |
14 | gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
15 | }
16 |
--------------------------------------------------------------------------------
/packages/gl-core/src/shaders/compose-render.vert.glsl:
--------------------------------------------------------------------------------
1 | #defines
2 |
3 | attribute vec2 uv;
4 | attribute vec3 position;
5 | uniform vec2 resolution;
6 | uniform mat4 modelViewMatrix;
7 | uniform mat4 projectionMatrix;
8 |
9 | uniform vec4 u_tile_bbox; // 瓦片范围
10 | uniform vec4 u_data_bbox; // 瓦片范围
11 |
12 | varying vec2 vUv;
13 |
14 | void main () {
15 | vec2 pos = u_tile_bbox.xy + position.xy * (u_tile_bbox.zw - u_tile_bbox.xy);
16 |
17 | vec2 textureCoord = (pos.xy - u_data_bbox.xy) / (u_data_bbox.zw - u_data_bbox.xy);
18 |
19 | vUv = vec2(textureCoord.x, 1.0 - textureCoord.y);
20 |
21 | gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 0.0, 1.0);
22 | }
23 |
--------------------------------------------------------------------------------
/packages/gl-core/src/shaders/compose.frag.glsl:
--------------------------------------------------------------------------------
1 | #defines
2 | precision highp float;
3 |
4 | varying vec2 vUv;
5 | uniform sampler2D u_image0;
6 | uniform sampler2D u_image1;
7 |
8 | #include
9 |
10 | #if RENDER_TYPE == 1
11 | uniform vec4 dataRange;
12 |
13 | vec4 getColor(const vec2 uv) {
14 | vec2 rg = texture2D(u_image0, uv).rg;
15 | vec2 data = rg * (dataRange.yw - dataRange.xz) + dataRange.xz;
16 | return vec4(data.xy, 0.0, 1.0);
17 | }
18 |
19 | #elif RENDER_TYPE == 0
20 | uniform vec2 dataRange;
21 |
22 | vec4 getColor(const vec2 uv) {
23 | float r = texture2D(u_image0, uv).r;
24 | float rf = r * (dataRange.y - dataRange.x) + dataRange.x;
25 | return vec4(rf, 0.0, 0.0, 1.0);
26 | }
27 | #elif RENDER_TYPE == 2
28 | vec4 getColor(const vec2 uv) {
29 | vec4 rgba = texture2D(u_image0, uv).rgba;
30 | float r = decode_float(rgba, LITTLE_ENDIAN);
31 | return vec4(r, 0.0, 0.0, 1.0);
32 | }
33 | #else
34 | vec4 getColor(const vec2 uv) {
35 | return texture2D(u_image0, uv).rgba;
36 | }
37 | #endif
38 |
39 | void main() {
40 | gl_FragColor = getColor(vUv);
41 | }
42 |
--------------------------------------------------------------------------------
/packages/gl-core/src/shaders/compose.vert.glsl:
--------------------------------------------------------------------------------
1 | attribute vec2 uv;
2 | attribute vec3 position;
3 | uniform vec3 cameraPosition;
4 | uniform mat4 viewMatrix;
5 | uniform mat4 modelMatrix;
6 | uniform mat4 modelViewMatrix;
7 | uniform mat4 projectionMatrix;
8 |
9 | varying vec2 vUv;
10 |
11 | void main() {
12 | vUv = vec2(uv.x, 1.0 - uv.y);
13 |
14 | gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
15 | }
16 |
--------------------------------------------------------------------------------
/packages/gl-core/src/shaders/decode-float.glsl:
--------------------------------------------------------------------------------
1 | //https://stackoverflow.com/questions/18453302/how-do-you-pack-one-32bit-int-into-4-8bit-ints-in-glsl-webgl/18454838#18454838
2 |
3 | // Denormalize 8-bit color channels to integers in the range 0 to 255.
4 | vec4 floatsToBytes(vec4 inputFloats, bool littleEndian) {
5 | vec4 bytes = vec4(inputFloats * 255.0);
6 | return (
7 | littleEndian
8 | ? bytes.abgr
9 | : bytes
10 | );
11 | }
12 |
13 | // https://stackoverflow.com/questions/63827836/is-it-possible-to-do-a-rgba-to-float-and-back-round-trip-and-read-the-pixels-in
14 | float decode_float(vec4 v, bool littleEndian) {
15 | vec4 bits = floatsToBytes(v, littleEndian);
16 | float sign = mix(-1.0, 1.0, step(bits[3], 128.0));
17 | // note: the 0.1s here an there are voodoo related to precision
18 | float expo = floor(mod(bits[3] + 0.2, 128.0)) * 2.0 + floor((bits[2] + 0.2) / 128.0) - 127.0;
19 | float sig = bits[0] + bits[1] * 256.0 + floor(mod(bits[2] + 0.2, 128.0)) * 256.0 * 256.0;
20 | return sign * (1.0 + sig / 8388607.0) * pow(2.0, expo);
21 | }
22 |
--------------------------------------------------------------------------------
/packages/gl-core/src/shaders/decode.glsl:
--------------------------------------------------------------------------------
1 | const vec2 bitEnc = vec2(1.0, 255.0);
2 | const vec2 bitDec = 1.0 / bitEnc;
3 |
4 | // decode particle position from pixel RGBA
5 | vec2 fromRGBA(const vec4 color) {
6 | vec4 rounded_color = floor(color * 255.0 + 0.5) / 255.0;
7 | float x = dot(rounded_color.rg, bitDec);
8 | float y = dot(rounded_color.ba, bitDec);
9 | return vec2(x, y);
10 | }
11 |
--------------------------------------------------------------------------------
/packages/gl-core/src/shaders/encode-float.glsl:
--------------------------------------------------------------------------------
1 | #define FLOAT_MAX 1.70141184e38
2 | #define FLOAT_MIN 1.17549435e-38
3 |
4 | lowp vec4 encode_float(highp float v) {
5 | highp float av = abs(v);
6 |
7 | //Handle special cases
8 | if(av < FLOAT_MIN) {
9 | return vec4(0.0, 0.0, 0.0, 0.0);
10 | } else if(v > FLOAT_MAX) {
11 | return vec4(127.0, 128.0, 0.0, 0.0) / 255.0;
12 | } else if(v < -FLOAT_MAX) {
13 | return vec4(255.0, 128.0, 0.0, 0.0) / 255.0;
14 | }
15 |
16 | highp vec4 c = vec4(0,0,0,0);
17 |
18 | //Compute exponent and mantissa
19 | highp float e = floor(log2(av));
20 | highp float m = av * pow(2.0, -e) - 1.0;
21 |
22 | //Unpack mantissa
23 | c[1] = floor(128.0 * m);
24 | m -= c[1] / 128.0;
25 | c[2] = floor(32768.0 * m);
26 | m -= c[2] / 32768.0;
27 | c[3] = floor(8388608.0 * m);
28 |
29 | //Unpack exponent
30 | highp float ebias = e + 127.0;
31 | c[0] = floor(ebias / 2.0);
32 | ebias -= c[0] * 2.0;
33 | c[1] += floor(ebias) * 128.0;
34 |
35 | //Unpack sign bit
36 | c[0] += 128.0 * step(0.0, -v);
37 |
38 | //Scale back to range
39 | return c / 255.0;
40 | }
41 |
--------------------------------------------------------------------------------
/packages/gl-core/src/shaders/encode.glsl:
--------------------------------------------------------------------------------
1 | const vec2 bitEnc = vec2(1.0, 255.0);
2 | const vec2 bitDec = 1.0 / bitEnc;
3 |
4 | vec4 toRGBA (const vec2 pos) {
5 | vec2 rg = bitEnc * pos.x;
6 | rg = fract(rg);
7 | rg -= rg.yy * vec2(1.0 / 255.0, 0.0);
8 |
9 | vec2 ba = bitEnc * pos.y;
10 | ba = fract(ba);
11 | ba -= ba.yy * vec2(1.0 / 255.0, 0.0);
12 |
13 | return vec4(rg, ba);
14 | }
15 |
--------------------------------------------------------------------------------
/packages/gl-core/src/shaders/mask.frag.glsl:
--------------------------------------------------------------------------------
1 | #defines
2 | precision mediump float;
3 |
4 | void main () {
5 | gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);
6 | }
7 |
--------------------------------------------------------------------------------
/packages/gl-core/src/shaders/mask.vert.glsl:
--------------------------------------------------------------------------------
1 | attribute vec3 position;
2 | uniform vec3 cameraPosition;
3 | uniform mat4 viewMatrix;
4 | uniform mat4 modelMatrix;
5 | uniform mat4 modelViewMatrix;
6 | uniform mat4 projectionMatrix;
7 | uniform float u_offset;
8 |
9 | void main() {
10 | gl_Position = projectionMatrix * modelViewMatrix * vec4(position + vec3(u_offset, 0.0, 0.0), 1.0);
11 | }
12 |
--------------------------------------------------------------------------------
/packages/gl-core/src/shaders/mercatorToWGS84.glsl:
--------------------------------------------------------------------------------
1 | const float PI = 3.14159265359;
2 |
3 | /**
4 | * Converts mapbox style pseudo-mercator coordinates (this is just like mercator, but the unit isn't a meter, but 0..1
5 | * spans the entire world) into texture like WGS84 coordinates (this is just like WGS84, but instead of angles, it uses
6 | * intervals of 0..1).
7 | */
8 | vec2 mercatorToWGS84(vec2 xy) {
9 | // convert lat into an angle
10 | float y = radians(180.0 - xy.y * 360.0);
11 | // use the formula to convert mercator -> WGS84
12 | y = 360.0 / PI * atan(exp(y)) - 90.0;
13 | // normalize back into 0..1 interval
14 | y = y / -180.0 + 0.5;
15 | // pass lng through, as it doesn't change
16 | return vec2(xy.x, y);
17 | }
18 |
--------------------------------------------------------------------------------
/packages/gl-core/src/shaders/particles/draw.frag.glsl:
--------------------------------------------------------------------------------
1 | #defines
2 |
3 | precision highp float;
4 |
5 | uniform sampler2D u_texture;
6 | uniform sampler2D u_textureNext;
7 | uniform vec2 u_colorRange;
8 | uniform sampler2D u_colorRamp;
9 |
10 | uniform vec4 u_bbox;
11 | uniform vec4 u_data_bbox;
12 | uniform float u_fade_t;
13 | uniform vec2 u_image_res;
14 |
15 | varying vec2 v_particle_pos;
16 |
17 | vec4 calcTexture(const vec2 puv) {
18 | vec4 color0 = texture2D(u_texture, puv);
19 | vec4 color1 = texture2D(u_textureNext, puv);
20 |
21 | return mix(color0, color1, u_fade_t);
22 | }
23 |
24 | #if RENDER_TYPE == 1
25 | // rg
26 | vec2 decodeValue(const vec2 vc) {
27 | vec4 rgba = calcTexture(vc);
28 | return rgba.rg;
29 | }
30 | #else
31 | float decodeValue(const vec2 vc) {
32 | return calcTexture(vc).r;
33 | }
34 | #endif
35 |
36 | vec2 bilinear(const vec2 uv) {
37 | vec2 px = 1.0 / u_image_res;
38 | vec2 vc = (floor(uv * u_image_res)) * px;
39 | vec2 f = fract(uv * u_image_res);
40 | vec2 tl = decodeValue(vc);
41 | vec2 tr = decodeValue(vc + vec2(px.x, 0));
42 | vec2 bl = decodeValue(vc + vec2(0, px.y));
43 | vec2 br = decodeValue(vc + px);
44 | return mix(mix(tl, tr, f.x), mix(bl, br, f.x), f.y);
45 | }
46 |
47 | bool containsXY(vec2 pos, vec4 bbox) {
48 | float x = pos.x;
49 | return (
50 | bbox.x < x && x < bbox.z &&
51 | bbox.y < pos.y && pos.y < bbox.w
52 | );
53 | }
54 |
55 | void main() {
56 | vec2 pos = v_particle_pos;
57 |
58 | if (!containsXY(pos.xy, u_data_bbox) || !containsXY(pos.xy, u_bbox) || calcTexture(pos).a == 0.0) {
59 | discard;
60 | }
61 |
62 | vec2 velocity = bilinear(pos);
63 |
64 | float value = length(velocity);
65 |
66 | float value_t = (value - u_colorRange.x) / (u_colorRange.y - u_colorRange.x);
67 | vec2 ramp_pos = vec2(value_t, 0.5);
68 |
69 | vec4 color = texture2D(u_colorRamp, ramp_pos);
70 |
71 | float distance = length(2.0 * gl_PointCoord - 1.0);
72 | if (distance > 1.0) {
73 | discard;
74 | }
75 |
76 | gl_FragColor = vec4(floor(255.0 * color * color.a) / 255.0);
77 | }
78 |
--------------------------------------------------------------------------------
/packages/gl-core/src/shaders/particles/draw.vert.glsl:
--------------------------------------------------------------------------------
1 | attribute vec2 reference;
2 |
3 | attribute float a_index;
4 |
5 | uniform vec2 resolution;
6 | uniform mat4 modelViewMatrix;
7 | uniform mat4 viewMatrix;
8 | uniform mat4 modelMatrix;
9 | uniform mat4 projectionMatrix;
10 |
11 | uniform sampler2D u_particles;
12 | uniform sampler2D u_particles_next;
13 |
14 | uniform float u_particleSize;
15 | uniform float u_particlesRes;
16 |
17 | varying vec2 v_particle_pos;
18 |
19 | void main() {
20 | float v_index = floor(a_index / 6.0);
21 | vec2 uv = reference;
22 | vec4 color = texture2D(u_particles, uv);
23 | vec4 color1 = texture2D(u_particles_next, uv);
24 |
25 | v_particle_pos = mix(color.rg, color1.rg, 0.0);
26 |
27 | gl_PointSize = u_particleSize;
28 |
29 | gl_Position = projectionMatrix * modelViewMatrix * vec4(v_particle_pos, 0.0, 1.0);
30 | }
31 |
32 |
--------------------------------------------------------------------------------
/packages/gl-core/src/shaders/particles/screen.frag.glsl:
--------------------------------------------------------------------------------
1 | precision highp float;
2 |
3 | uniform sampler2D u_screen;
4 | uniform float u_opacity;
5 | uniform float u_fade;
6 |
7 | varying vec2 vUv;
8 |
9 | void main() {
10 | vec4 color = texture2D(u_screen, vUv);
11 | gl_FragColor = vec4(floor(255.0 * color * u_opacity * u_fade) / 255.0);
12 | }
13 |
--------------------------------------------------------------------------------
/packages/gl-core/src/shaders/picker.frag.glsl:
--------------------------------------------------------------------------------
1 | precision highp float;
2 |
3 | uniform sampler2D u_texture;
4 | uniform sampler2D u_textureNext;
5 | uniform float u_fade_t;
6 |
7 | varying vec2 vUv;
8 |
9 | void main () {
10 | vec2 uv = vUv;
11 |
12 | vec4 color0 = texture2D(u_texture, vUv);
13 | vec4 color1 = texture2D(u_textureNext, vUv);
14 |
15 | vec4 color = mix(color0, color1, u_fade_t);
16 |
17 | gl_FragColor = color;
18 | }
19 |
--------------------------------------------------------------------------------
/packages/gl-core/src/shaders/picker.vert.glsl:
--------------------------------------------------------------------------------
1 | #defines
2 |
3 | attribute vec2 uv;
4 | attribute vec3 position;
5 | uniform vec2 resolution;
6 | uniform mat4 modelViewMatrix;
7 | uniform mat4 projectionMatrix;
8 |
9 | varying vec2 vUv;
10 |
11 | void main () {
12 | vUv = vec2(uv.x, 1.0 - uv.y);
13 |
14 | gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
15 | }
16 |
--------------------------------------------------------------------------------
/packages/gl-core/src/shaders/random.glsl:
--------------------------------------------------------------------------------
1 | // pseudo-random generator
2 | // https://stackoverflow.com/questions/4200224/random-noise-functions-for-glsl
3 |
4 | //const vec3 rand_constants = vec3(12.9898, 78.233, 4375.85453);
5 | //float rand(const vec2 co) {
6 | // float t = dot(rand_constants.xy, co);
7 | // return fract(sin(t) * (rand_constants.z + t));
8 | //}
9 |
10 | highp float rand(vec2 co) {
11 | highp float a = 12.9898;
12 | highp float b = 78.233;
13 | highp float c = 43758.5453;
14 | // dot可以根据不同的值位置,返回一个 0.0 到 1.0 之间的值
15 | highp float dt = dot(co.xy ,vec2(a, b));
16 | highp float sn = mod(dt, 3.14);
17 | // 因为sin函数的值域 [-1, 1]; 所以我们这步操作是将一个随机的浮点数d,转换到[-1, 1]这个区间
18 | // 这个fract是获取d的小数部分,目的是将[-43758.5453, 43758.5453]之间的值域,重新压入到[0, 1]之间
19 | return fract(sin(sn) * c);
20 | }
21 |
--------------------------------------------------------------------------------
/packages/gl-core/src/shaders/raster-texture.frag.glsl:
--------------------------------------------------------------------------------
1 | precision highp float;
2 |
3 | varying vec2 vUv;
4 | uniform sampler2D u_image0;
5 |
6 | vec4 getColor(const vec2 uv) {
7 | return texture2D(u_image0, uv).rgba;
8 | }
9 |
10 | void main() {
11 | gl_FragColor = getColor(vUv);
12 | }
13 |
--------------------------------------------------------------------------------
/packages/gl-core/src/shaders/shaderLib.ts:
--------------------------------------------------------------------------------
1 | import random from './random.glsl';
2 | import encode from './encode.glsl';
3 | import encodeFloat from './encode-float.glsl';
4 | import decode from './decode.glsl';
5 | import decodeFloat from './decode-float.glsl';
6 | // import mercatorToWGS84 from './mercatorToWGS84.glsl';
7 | // import wgs84ToMercator from './wgs84ToMercator.glsl';
8 |
9 | export { encode, decode, random, encodeFloat, decodeFloat };
10 |
--------------------------------------------------------------------------------
/packages/gl-core/src/shaders/wgs84ToMercator.glsl:
--------------------------------------------------------------------------------
1 | const float PI = 3.14159265359;
2 |
3 | vec2 wgs84ToMercator(vec2 xy) {
4 | // convert to angle
5 | float y = -180.0 * xy.y + 90.0;
6 | // use the formule to convert
7 | y = (180.0 - (180.0 / PI * log(tan(PI / 4.0 + y * PI / 360.0)))) / 360.0;
8 | // pass x through, as it doesn't change
9 | return vec2(xy.x, y);
10 | }
11 |
--------------------------------------------------------------------------------
/packages/gl-core/src/source/README.md:
--------------------------------------------------------------------------------
1 | ## 数据源
2 |
3 | 注意这里抽离出数据配置是为了方便后续数据源复用,比如同一份数据瓦片需要多种不同的渲染方式。在过去的实现中每个图层都需要加载一次数据,
4 | 在我们抽离出数据配置后,我们可以公用一个数据配置,只需要加载一次数据。
5 |
--------------------------------------------------------------------------------
/packages/gl-core/src/source/index.ts:
--------------------------------------------------------------------------------
1 | import TileSource from './tile';
2 | import ImageSource from './image';
3 | import TimelineSource from './Timeline';
4 |
5 | export type SourceType = TileSource | ImageSource | TimelineSource;
6 |
7 | export { TileSource, ImageSource, TimelineSource };
8 |
--------------------------------------------------------------------------------
/packages/gl-core/src/tile/TileMesh.ts:
--------------------------------------------------------------------------------
1 | import type { Program } from '@sakitam-gis/vis-engine';
2 | import { Mesh, Geometry } from '@sakitam-gis/vis-engine';
3 |
4 | export default class TileMesh {
5 | public id: string;
6 | public program: Program;
7 |
8 | /**
9 | * 用于地图投影下的 Mesh
10 | */
11 | public mesh: Mesh;
12 |
13 | /**
14 | * 用于平面绘制的 Mesh,常用于瓦片合并 Pass
15 | */
16 | public planeMesh: Mesh;
17 |
18 | constructor(id, renderer, program, geometry) {
19 | this.id = id;
20 | this.program = program;
21 |
22 | this.mesh = new Mesh(renderer, {
23 | program,
24 | geometry,
25 | });
26 |
27 | this.planeMesh = new Mesh(renderer, {
28 | program,
29 | geometry: new Geometry(renderer, {
30 | position: {
31 | size: 2,
32 | data: new Float32Array([0, 0, 1, 0, 0, 1, 1, 1]),
33 | },
34 | uv: {
35 | size: 2,
36 | data: new Float32Array([0, 0, 1, 0, 0, 1, 1, 1]),
37 | },
38 | index: {
39 | size: 1,
40 | data: new Uint16Array([0, 1, 2, 2, 1, 3]),
41 | },
42 | }),
43 | });
44 | }
45 |
46 | setCenter(center: number[]) {
47 | this.mesh.position.set(center[0], center[1], center[2] || 0);
48 | }
49 |
50 | getMesh() {
51 | return this.mesh;
52 | }
53 |
54 | destroy() {
55 | this.mesh.destroy();
56 | this.planeMesh.destroy();
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/packages/gl-core/src/utils/TrackManger.ts:
--------------------------------------------------------------------------------
1 | import { Raf } from '@sakitam-gis/vis-engine';
2 | import type Track from './Track';
3 |
4 | class TrackManger {
5 | public raf: Raf;
6 |
7 | public tracks: Set