ByteTilesReaderWriter 1.0.0
dotnet add package ByteTilesReaderWriter --version 1.0.0
NuGet\Install-Package ByteTilesReaderWriter -Version 1.0.0
<PackageReference Include="ByteTilesReaderWriter" Version="1.0.0" />
paket add ByteTilesReaderWriter --version 1.0.0
#r "nuget: ByteTilesReaderWriter, 1.0.0"
// Install ByteTilesReaderWriter as a Cake Addin #addin nuget:?package=ByteTilesReaderWriter&version=1.0.0 // Install ByteTilesReaderWriter as a Cake Tool #tool nuget:?package=ByteTilesReaderWriter&version=1.0.0
ByteTiles
File format for storing TileSets and designed to be accessed by byte range.
A MBTiles file contains a SQLite database and needs to be loaded in memory before requesting data. Instead a ByteTiles file constains a list of tiles and a dictionary (tile key - byte range) that indicates the position in the file for any tile. The dictionary is thinked to be loaded in a fast memory access (cache or database) for a fast tile reading.
Bennefits
- Cost: A ByteTiles file can be uploaded in Amazon S3 and then fetch tiles by it range of bytes.
- Storage size: A ByteTiles files is 5-10% smaller than MBTiles file.
- Updates: Instead of extracting the files contained in MBTiles and upload them all to S3, ByteTiles contains all in a single file.
Built With
- C#
- JavasScript
Specification
ByteTiles specification is provided in the ByteTilesSpec folder.
Examples
Some examples are contained in the SimpleByteTilesServer and ByteTilesReaderWriter_Test projects.
Installation
- Clone the repo
git clone https://github.com/techjb/Vector-Tiles-Google-Maps.git
- Install NPM packages
npm install
Additionally the nuget package with the ByteTilesReaderWriter library can be installed.
Content
The package contains the following directories:
- ByteTilesReaderWriter: Library to parse a .mbtiles file to .bytetiles file, read tiles and extract files to folder.
- ByteTilesReaderWriter_Test: Test for the ByteTilesReaderWriter library.
- SimpleByteTilesServer: Simple ByteTiles server with examples.
- ByteTilesLogo: ByteTiles logo files.
- ByteTilesSpec: ByteTiles specifications.
Library usage
The library ByteTilesReaderWriter can be used as following.
- Parse .mbtiles to .bytetiles:
ByteTilesWriter.ParseMBTiles("input_file.mbtiles", "output_file.bytetiles");
- Read tiles:
var byteTilesReader = new ByteTilesReader("input_file.bytetiles");
byte[] tile = byteTilesReader.GetTile(x, y, z);
- Read tiles dictionary:
var byteTilesReader = new ByteTilesReader("input_file.bytetiles");
var tilesDictionary = byteTilesReader.GetTilesDictionary();
- Read json metadata:
var byteTilesReader = new ByteTilesReader("input_file.bytetiles");
var metadata = byteTilesReader.GetMetadata();
- Extract .bytetiles files to directory.
var byteTilesExtractor = new ByteTilesExtractor("input_file.bytetiles");
byteTilesExtractor.ExtractFiles("output_directory");
Server usage
Set the SimpleByteTilesServer as startup project and run. The server will read tiles from the files of the ByteTilesReaderWriter_Test project.
Roadmap
See the open issues for a list of proposed features (and known issues).
Contributing
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
License
See license for more information.
Contact
Jesús Barrio - @techjb
Project Link: https://github.com/techjb/ByteTiles
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net5.0
- System.Data.SQLite.Core (>= 1.0.113.7)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0 | 400 | 5/12/2021 |