No es 100% seguro de si esto iba a funcionar, pero un posible algoritmo sería conseguir el cuadro delimitador de la shapefile, convertir este Esférica Mercartor (ver aquí algunos consejos), entonces el trabajo de la baldosa medida. Esto podría ser algo como esto:
xmaxextent = 40075016.685578488 (max extent of spherical mercartor x)
ymaxextent = 40075016.685578488 (max extent of spherical mercartor y)
mintile_x = ((min x of bbox + (xmaxextent / 2)) / xmaxextent) * (2 ^ (zoomlayer + 1))
maxtile_x = ((max x of bbox + (xmaxextent / 2)) / xmaxextent) * (2 ^ (zoomlayer + 1))
mintile_y = ((min y of bbox + (ymaxextent / 2)) / ymaxextent) * (2 ^ (zoomlayer + 1))
maxtile_y = ((max y of bbox + (ymaxextent / 2)) / ymaxextent) * (2 ^ (zoomlayer + 1))
Usted tendrá que ronda el min de números y el número máx porque ellos serán calculados como decimales, pero, en esencia, que debe darle el rango de baldosa extensiones para cualquier zoom de la capa, es decir, (@z2,5-6x,4-5y). Usted probablemente necesita para escribir un script o algo para convertir los rangos reales de baldosas de números. En este caso hipotético de que sería:
2/5/4
2/5/5
2/6/4
2/6/5
Este enlace da algunos útiles de información de antecedentes y una secuencia de comandos de python para trabajar la baldosa número correspondiente a cualquier lat/lon.