mapbox / tippecanoe

Build vector tilesets from large collections of GeoJSON features.
BSD 2-Clause "Simplified" License
2.72k stars 432 forks source link

Add support for custom tiling schemas #770

Open copierrj opened 5 years ago

copierrj commented 5 years ago

Currently Tippecanoe only supports Web Mercator output. Support for custom tiling schemas would enable Tippecanoe to be used for use cases where a specific (often obligated) tiling schema is desired.

Implementing this functionality doesn't necessarily imply adding support for coordinate transformation as custom tiling schemas are usually defined based on existing projection systems.

For reference: the gdal MVT driver (https://gdal.org/drivers/vector/mvt.html) has a TILING_SCHEME parameter for this purpose.

e-n-f commented 5 years ago

Thanks for the suggestion. This would be a good addition if more general input projection support is ever added to Tippecanoe.

RoelvandenBerg commented 5 years ago

@ericfischer If I would implement such a custom tiling scheme, would you want to merge it into Tippecanoe? As @copierrj states one doesn't need a reprojection step for such a custom tiling scheme to be of great value.

I have created an EPSG:28992 tiling scheme here: https://github.com/RoelvandenBerg/tippecanoe/pull/1/files . It isn't hard for me to implement it more generally to allow for generic / custom tiling schemes.

e-n-f commented 5 years ago

Thanks for the contribution. I think I would be fine with accepting this change since it is small and contained, but have some hesitation because it is also very specialized. I wonder if I should just add a dependency on the proj library so people can use whatever projection they want.

jingsam commented 5 years ago

I think that mbtiles-spec limiting to be web mercator is ridiculous. As mvt driver for GDAL, when outputting to directory, it supports custom tiling scheme; when outputting to mbtiles, it only supports web mercator. Does there any technique limitation that mbtiles can not support custom tiling scheme? I think no. It just because its creator Mapbox says no to support custom tiling scheme, similar to some kind of dictatorship.

RoelvandenBerg commented 5 years ago

@ericfischer, thanks for your quick reply. I'll start working on it then. Adding a dependency on proj4 would also be of great value and would be complementary to adding the possiblity of working with custom tiling schemes.

e-n-f commented 5 years ago

@jingsam I don't think anyone at Mapbox is fundamentally opposed to non-Mercator tiles. It's just complicated because all the composited layers need to have the same projection. If you are providing all your own tiles, you can do things like the examples in https://github.com/mapbox/tippecanoe/issues/422.

jingsam commented 4 years ago

@ericfischer thanks for your explanation. What I complain about is not relate to tippecanoe, but to mbtiles-spec. @ericfischer you do a good job to make tippecanoe performance and robust to handle many edge cases.

I assume mbtiles to be a generic spatial data formats. A generic spatial data formats should not be limited to only one coordinate system.

422 is indeed could generate non-mercator tiles. However, it is a hacky way. the bouds and center in generated metadata is not correct.

e-n-f commented 4 years ago

Well, I am the last person to have revised the mbtiles spec, so I guess this is my fault at some level. I just saw your ticket https://github.com/mapbox/mbtiles-spec/issues/60 and will respond there.