Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Open-S2/s2-pmtiles
This library reads/writes PMTiles V3.0 as well as S2PMTiles V1.0
https://github.com/Open-S2/s2-pmtiles
Last synced: 2 months ago
JSON representation
This library reads/writes PMTiles V3.0 as well as S2PMTiles V1.0
- Host: GitHub
- URL: https://github.com/Open-S2/s2-pmtiles
- Owner: Open-S2
- License: other
- Created: 2024-05-29T06:01:06.000Z (5 months ago)
- Default Branch: master
- Last Pushed: 2024-08-12T19:41:23.000Z (3 months ago)
- Last Synced: 2024-08-12T22:47:39.328Z (3 months ago)
- Language: Rust
- Size: 16.8 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-georust - s2-pmtiles - Read/Write PMTiles V3.0 as well as S2PMTiles V1.0 (Watchlist)
README
s2-pmtiles## About
A Modified TypeScript implementation of the [PMTiles](https://github.com/protomaps/PMTiles) library. It is backwards compatible but offers support for the S2 Projection.
## Read The Spec
[s2-pmtiles-spec](/s2-pmtiles-spec/1.0.0/README.md)
For now this spec supports deflating metadata/directories inside the browser, but it will be removed in the future.
## Install
```bash
#bun
bun add s2-pmtiles
# pnpm
pnpm add s2-pmtiles
# yarn
yarn add s2-pmtiles
# npm
npm install s2-pmtiles# cargo
cargo install s2-pmtiles
```### Example use
```ts
import { PMTilesReader, PMTilesWriter } from 's2-pmtiles'// The File Reader you can run on bun/node/deno
const testFixture1 = new PMTilesReader(`test/fixtures/test_fixture_1.pmtiles`);
// get an WM tile
let x = 0;
let y = 0;
let z = 0;
let face = 0;
testFixture1.getTile(x, y, z); // undefied | Uint8Array
// get an S2 tile
testFixture1.getTileS2(face, x, y, z); // undefined | Uint8Array// The File Writer you can run on bun/node/deno
const testFixture2 = new PMTilesWriter(`tmpFile.pmtiles`);
// write a tile
testFixture2.writeTileXYZ(x, y, z, Uint8Array.from([]));
// write an S2 tile
testFixture2.writeTileS2(face, x, y, z, Uint8Array.from([]));
// when you finish you commit to build the metadata
testFixture2.commit();// The File Reader you can run in the browser
import { S2PMTilesReader } from 's2-pmtiles/browser';
// you want to add a true after the path for generic PMTiles, as it ensures 206 byte requests.
const browserFixture = new S2PMTilesReader(`https://www.example.com/test.pmtiles`, true);
// get an WM tile
browserFixture.getTile(x, y, z); // undefied | Uint8Array
// get an S2 tile
browserFixture.getTileS2(face, x, y, z); // undefined | Uint8Array
```### Browser Support
Some tsconfigs might need some extra help to see the `s2-pmtiles/browser` package.
To fix this update your tsconfig.json with the following:
```json
{
"compilerOptions": {
"baseUrl": "./",
"paths": {
"s2-pmtiles/browser": ["./node_modules/s2-pmtiles/dist/browser.d.ts"]
}
}
}
```---
## Development
### Requirements
You need the tool `tarpaulin` to generate the coverage report. Install it using the following command:
```bash
cargo install cargo-tarpaulin
```The `bacon coverage` tool is used to generate the coverage report. To utilize the [pycobertura](https://pypi.org/project/pycobertura/) package for a prettier coverage report, install it using the following command:
```bash
pip install pycobertura
```### Running Tests
To run the tests, use the following command:
```bash
# TYPESCRIPT
## basic test
bun run test
## live testing
bun run test:dev# RUST
## basic test
cargo test
# live testing
bacon test
```### Generating Coverage Report
To generate the coverage report, use the following command:
```bash
cargo tarpaulin
# bacon
bacon coverage # or type `l` inside the tool
```