Ya no busques más por todo internet porque llegaste al sitio perfecto, poseemos la respuesta que necesitas y sin complicaciones.
Solución:
He escrito mi propio controlador de mosaico de mapas geojson en ruby. es un script ruby rápido y sucio para crear mosaicos geojson desde una base de datos postgis usando gdal / ogr. No pude averiguar cómo cortar el geojson directamente, así que importé el json a una base de datos postgis y lo exporté usando ogr.
Se supone que ogr debe leer geojson pero no pude hacer que el controlador funcione directamente. tal vez alguien más pueda averiguar cómo. así es como funcionó para mí usando postgis:
requiere
ruby
> 1.9.3, peroruby
> 2.0.0 recomendadogdal/ogr
> 2.0.0, el script utiliza el comando del sistemaogr2ogr
postgresql
> 9.0.0, conpostgis
> Extensión 2.0.0 instalada
uso
entorno de configuración
#!/usr/bin/env ruby
require 'mkmf'
require 'fileutils'
require './tiler/geojson.rb'
geojson_tiler = Tiler::GeoJson.new
configurar directorio de trabajo
geojson_tiler.set_basedir "/path/to/my/tiles"
habilite la salida verbosa si lo desea
geojson_tiler.debug true
configurar la conexión a la base de datos de Postgis y la consulta SQL para recuperar geodataset
connection = "'PG:host=localhost dbname=distance user=qwertyu password=asdfghj'"
sql_query = "'SELECT id,flags,kmh,geom_way_web_mercator,time FROM streets WHERE time <= 600 ORDER BY time ASC'"
geojson_tiler.setup_db connection, sql_query
escribir pila de mosaicos completa para los niveles de zoom 0, 1, 2 y 3
(0..3).each do |zoom|
geojson_tiler.write_tiles zoom
end
o escriba una pila de mosaicos parcial para el nivel de zoom 8 en el rango x: 136..138 ey: 82..84
geojson_tiler.write_tiles 8, 136, 138, 82, 84
la sintaxis es zoom, xmin, xmax, ymin, ymax
resultado
es una pila completa o parcial de mosaicos geojson:
/path/to/my/tiles/0/0/0.json
/path/to/my/tiles/1/0/0.json
/path/to/my/tiles/1/0/1.json
/path/to/my/tiles/1/1/0.json
/path/to/my/tiles/1/1/1.json
/path/to/my/tiles/2/0/0.json
/path/to/my/tiles/2/0/1.json
/path/to/my/tiles/2/0/2.json
/path/to/my/tiles/2/0/3.json
/path/to/my/tiles/2/1/0.json
/path/to/my/tiles/2/1/1.json
/path/to/my/tiles/2/1/2.json
/path/to/my/tiles/2/1/3.json
/path/to/my/tiles/2/2/0.json
/path/to/my/tiles/2/2/1.json
/path/to/my/tiles/2/2/2.json
/path/to/my/tiles/2/2/3.json
/path/to/my/tiles/2/3/0.json
/path/to/my/tiles/2/3/1.json
/path/to/my/tiles/2/3/2.json
/path/to/my/tiles/2/3/3.json
/path/to/my/tiles/3/0/0.json
/path/to/my/tiles/3/0/1.json
/path/to/my/tiles/3/0/2.json
/path/to/my/tiles/3/0/3.json
/path/to/my/tiles/3/0/4.json
/path/to/my/tiles/3/0/5.json
/path/to/my/tiles/3/0/6.json
/path/to/my/tiles/3/0/7.json
/path/to/my/tiles/3/1/0.json
/path/to/my/tiles/3/1/1.json
/path/to/my/tiles/3/1/2.json
/path/to/my/tiles/3/1/3.json
/path/to/my/tiles/3/1/4.json
/path/to/my/tiles/3/1/5.json
/path/to/my/tiles/3/1/6.json
/path/to/my/tiles/3/1/7.json
/path/to/my/tiles/3/2/0.json
/path/to/my/tiles/3/2/1.json
/path/to/my/tiles/3/2/2.json
/path/to/my/tiles/3/2/3.json
/path/to/my/tiles/3/2/4.json
/path/to/my/tiles/3/2/5.json
/path/to/my/tiles/3/2/6.json
/path/to/my/tiles/3/2/7.json
/path/to/my/tiles/3/3/0.json
/path/to/my/tiles/3/3/1.json
/path/to/my/tiles/3/3/2.json
/path/to/my/tiles/3/3/3.json
/path/to/my/tiles/3/3/4.json
/path/to/my/tiles/3/3/5.json
/path/to/my/tiles/3/3/6.json
/path/to/my/tiles/3/3/7.json
/path/to/my/tiles/3/4/0.json
/path/to/my/tiles/3/4/1.json
/path/to/my/tiles/3/4/2.json
/path/to/my/tiles/3/4/3.json
/path/to/my/tiles/3/4/4.json
/path/to/my/tiles/3/4/5.json
/path/to/my/tiles/3/4/6.json
/path/to/my/tiles/3/4/7.json
/path/to/my/tiles/3/5/0.json
/path/to/my/tiles/3/5/1.json
/path/to/my/tiles/3/5/2.json
/path/to/my/tiles/3/5/3.json
/path/to/my/tiles/3/5/4.json
/path/to/my/tiles/3/5/5.json
/path/to/my/tiles/3/5/6.json
/path/to/my/tiles/3/5/7.json
/path/to/my/tiles/3/6/0.json
/path/to/my/tiles/3/6/1.json
/path/to/my/tiles/3/6/2.json
/path/to/my/tiles/3/6/3.json
/path/to/my/tiles/3/6/4.json
/path/to/my/tiles/3/6/5.json
/path/to/my/tiles/3/6/6.json
/path/to/my/tiles/3/6/7.json
/path/to/my/tiles/3/7/0.json
/path/to/my/tiles/3/7/1.json
/path/to/my/tiles/3/7/2.json
/path/to/my/tiles/3/7/3.json
/path/to/my/tiles/3/7/4.json
/path/to/my/tiles/3/7/5.json
/path/to/my/tiles/3/7/6.json
/path/to/my/tiles/3/7/7.json
/path/to/my/tiles/8/136/82.json
/path/to/my/tiles/8/136/83.json
/path/to/my/tiles/8/136/84.json
/path/to/my/tiles/8/137/82.json
/path/to/my/tiles/8/137/83.json
/path/to/my/tiles/8/137/84.json
/path/to/my/tiles/8/138/82.json
/path/to/my/tiles/8/138/83.json
/path/to/my/tiles/8/138/84.json
Un poco tarde para el juego, pero si quieres mosaicos vectoriales en formato mbtiles, te sugiero lo siguiente:
(1) tippecanoe: Vaya a https://github.com/mapbox/tippecanoe e instálelo, si está en una Mac, luego prepare la instalación de tippecanoe; A continuación, puede colocar en mosaico el geojson directamente con el siguiente comando: tippecanoe -e tiles -l layer_name file.geojson
A continuación, debido a que están comprimidos con gzip usando este método, debe usar los siguientes comandos (lo mismo si usa mbutil para descomprimir un archivo .mbtiles y obtenerlos de esa manera):
cd /the tiles folder
gzip -d -r -S .pbf *;
find . -type f -exec mv '' ''.pbf ;
Luego, en sus fuentes style.json, use el paquete de mosaicos de la siguiente manera (si los está sirviendo en un servidor, use http, si está en un dispositivo, use file: ///, etc.):
"sources": {
"customtiles":
"type": "vector",
"tiles": [
"0/assets/tiles/z/x/y.pbf"
],
"minzoom": 0,
"maxzoom": 18
,...
Y en tu sección de capas: capas:[
"id": "rds",
"type": "line",
"source": "customtiles",
"source-layer": "layer_name",
"paint":
"line-opacity": 0.8,
"line-width": 2,
"line-color": "#FF0000"
,...]
(2) Utilice el método nodejs geojson-vt y vt-pbf. Personalmente estoy usando esto porque lo estoy ejecutando en Heroku y no quiero hacer un módulo usando C ++ o hacer un complemento de Heroku / usar un proceso secundario. Un gran ejemplo de esto se encuentra en https://github.com/NYCPlanning/geojson2mvt. Esencialmente, puede cambiar este script para generar pbfs en lugar de mvts y funciona.
Una gran diferencia es que geojson-vt simplifica mucho y tippecanoe no. Por lo tanto, los mosaicos geojson-vt son mucho más pequeños y no he encontrado que la calidad se degrade demasiado. Para obtener una versión sobre la marcha, consulte este ejemplo: http://fuzzytolerance.info/blog/2016/07/31/Adding-GeoJSON-and-MVT-to-PostGIS-HTTP-API/
Calificaciones y reseñas
Recuerda que puedes difundir esta división si te fue útil.