1 votos

Convertir las coordenadas url de maplibrejs en mbtiles tile_coumn y tile_row

Estoy usando maplibrejs como mi marco de trabajo frontal que hace solicitud como esta : http://localhost:8080/gis/14/9240/2582 a mi código de backend para obtener azulejos.

Como backend he utilizado tileserver-gl, que funciona perfectamente con esta configuración .

Para entender cómo funciona todo, he creado mi propio backend para servir azulejos vectoriales.

Mi Backend (en nodejs) obtiene sus datos mediante una consulta SQL a un data.mbtiles archivo: SELECT * FROM tiles WHERE zoom_level = ${z} AND tile_column = ${x} AND tile_row = ${y}

Sin embargo, cuando abro este data.mbtiles en el visor de sqllite, no veo ninguna baldosa con esta configuración: z=14, x=9240, y=2582 Veo algo así:

enter image description here

Quería saber cómo convertir una solicitud como esta http://localhost:8080/gis/14/9240/2582 para obtener el azulejo correspondiente mediante SQL. Tileserver-gl es capaz de hacer esto con la misma data.mbtiles archivo.

0voto

iyrin Puntos 245

Bien, he encontrado la respuesta por mi cuenta. Después de ir a través del código fuente de tileserver-gl llegó a saber que antes de hacer la consulta sql, las coordenadas y necesita ser transformado:

// Flip Y coordinate because MBTiles files are TMS.
y = (1 << z) - 1 - y;

//now do the SQL query: moever make sure that you set headers before sending response: noe js code
res.setHeader("Content-Type","application/x-protobuf");
res.setHeader("Content-Encoding","gzip");

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X