Mapnik vector tiles (MVT) reader/writer for Swift.
dependencies: [
.package(url: "https://github.com/Outdooractive/mvt-tools", from: "1.0.0"),
],
targets: [
.target(name: "MyTarget", dependencies: [
.product(name: "MVTTools", package: "mvt-tools"),
]),
]
You can install the command line tool mvt
locally to /usr/local/bin
with
# ./install_mvt.sh
# mvt -h
OVERVIEW: A utility for inspecting and working with vector tiles.
USAGE: mvt <subcommand>
SUBCOMMANDS:
dump (default) Print the vector tile as GeoJSON
info Print information about the vector tile
merge Merge two or more vector tiles
query Query the features in a vector tile
export Export the vector tile as GeoJSON
import Import some GeoJSONs to a vector tile
import MVTTools
// Load
let mvtData = Data(contentsOf: URL(fileURLWithPath: "14_8716_8015.vector.mvt"))!
let tile = VectorTile(data: mvtData, x: 8716, y: 8015, z: 14, indexed: .hilbert)!
print(tile.isIndexed)
print(tile.layerNames.sorted())
let tileAsGeoJsonData: Data? = tile.toGeoJson(prettyPrinted: true)
...
let result = tile.query(at: Coordinate3D(latitude: 3.870163, longitude: 11.518585), tolerance: 100.0)
...
import MVTTools
var tile = VectorTile(x: 8716, y: 8015, z: 14)!
var feature = Feature(Point(Coordinate3D(latitude: 3.870163, longitude: 11.518585)))
feature.properties = [
"test": 1,
"test2": 5.567,
"test3": [1, 2, 3],
"test4": [
"sub1": 1,
"sub2": 2
]
]
tile.setFeatures([feature], for: "test")
// Also have a look at ``VectorTileExportOptions``
let tileData = tile.data()
...
Please create an issue or open a pull request with a fix
brew install protobuf swift-protobuf swiftlint
Documentation (!)
Tests
Decode V1 tiles
Locking (when updating/deleting features, indexing)
Query option: within/intersects
Vector tiles
Libraries
Sample data for testing:
Other code for inspiration:
MIT
Thomas Rasch, Outdooractive
link |
Stars: 2 |
Last commit: 7 weeks ago |
Bugfix: Query bounding boxes in the western hemisphere where inverted and therefore the search often returned wrong results
Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics