Skip to content

A high-performance hybrid proxy API (Node.js + Python) designed to serve GeoTIFF map tiles. It orchestrates requests using Express and delegates geospatial processing to rio-tiler, enabling on-the-fly RGB rendering and VARI vegetation index calculation.

Notifications You must be signed in to change notification settings

alissonpef/PytTiler-Proxy

Repository files navigation

PyTiler-Proxy

API REST em Express/TypeScript para servir tiles de arquivos GeoTIFF com visualizações RGB e índice VARI.

Resumo rápido

  • Build (TypeScript) -> gera o código JS em dist/.
  • O servidor em dist/server.js é o artefato que executamos em produção. Rodamos o JS compilado porque evita a sobrecarga de compilar TS em tempo de execução, é mais rápido para iniciar e é o padrão para deploys.

Setup (uma vez)

# cria venv Python e instala dependências Python + Node
npm run setup

# (opcional) ative a venv no seu shell se for executar comandos Python interativamente
source .venv/bin/activate

Configuração

Copie .env.example para .env e ajuste as variáveis conforme seu ambiente:

  • PORT - porta para o servidor Node
  • PYTHON_BIN - caminho para o Python na venv (ex: .venv/bin/python)
  • TILE_SCRIPT - caminho para o script Python gerador de tiles (ex: python/tile.py)
  • RASTER_PATH - caminho para o GeoTIFF a ser usado
  • HOST, DEFAULT_COUNT, ZOOM, TILE_X, TILE_Y, LOGS_DIR

Build

npm run build

Start (apenas servidor)

Existe um script útil que ativa a venv e inicia apenas o servidor Node (útil se já tiver dependências Python instaladas na venv):

npm run run:server

Detalhes sobre dist/server.js vs TypeScript direto

  • src/server.ts é o código fonte TypeScript. Para rodar em desenvolvimento usamos ferramentas como ts-node-dev.
  • Para produção preferimos compilar para JavaScript (npm run build) e executar node dist/server.js porque:
    • Remove a necessidade de compilar em tempo de execução.
    • Minimiza tempo de startup.
    • Evita dependências de runtime adicionais (ex.: ts-node).

Testes de performance

O projeto inclui scripts para medir latência de /tile e /vari. Os resultados são gravados em logs/.

# testar apenas tile
npm run perf:tile
# testar apenas vari
npm run perf:vari
# testar ambos (gera perf_tile_..., perf_vari_... e perf_combined_...)
npm run perf:both

Teste rápido via shell

bash scripts/test.sh

Logs

Os arquivos JSON de saída ficam em logs/ com nomes como perf_tile_YYYYMMDDTHHMMSSZ.json.

Endpoints principais

  • GET /tile/:z/:x/:y -> tile RGB/RGBA
  • GET /vari/:z/:x/:y -> tile VARI (mapa de calor)

Exemplo (curl):

curl http://localhost:3001/tile/18/95249/146380 -o tile.png

About

A high-performance hybrid proxy API (Node.js + Python) designed to serve GeoTIFF map tiles. It orchestrates requests using Express and delegates geospatial processing to rio-tiler, enabling on-the-fly RGB rendering and VARI vegetation index calculation.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published