Skip to content

alissonpef/pytiler_proxy

Repository files navigation

Contributors Forks Stargazers Issues MIT License LinkedIn


Logo

pytiler_proxy

API REST de alto desempenho para servir fatias (tiles) de arquivos GeoTIFF com suporte a visualizações RGB e mapeamento de índice vegetativo VARI em tempo real.
Explore a documentação »

Reportar Bug · Solicitar Recurso

Índice
  1. Sobre O Projeto
  2. Começando
  3. Uso
  4. Contribuindo
  5. Licença
  6. Contato

Sobre O Projeto

O pytiler_proxy é uma API REST desenvolvida em Express e TypeScript criada para atuar como um servidor proxy dinâmico de tiles para arquivos GeoTIFF (ortofotos geoespaciais). O projeto resolve a complexidade de manipular dados raster de alta resolução no front-end ao renderizar e fatiar imagens sob demanda a nível de servidor, integrando um script Python de processamento espectral ultrarrápido.

Além de disponibilizar fatias no formato visível (RGB), o servidor realiza cálculos aritméticos de bandas espectrais para obter o índice VARI (Visible Atmospherically Resistant Index), gerando um mapa de calor colorido sobre a vegetação para análises agrícolas e ambientais rápidas.

Recursos em Destaque:

  • Fatiamento Dinâmico: Integração nativa com rio-tiler para carregar apenas as coordenadas do tile requisitado sem sobrecarregar a memória do servidor.
  • Índices de Vegetação: Processamento matemático dinâmico usando arrays NumPy para calcular o índice VARI no backend.
  • Cache Inteligente: Configuração automatizada de cache (Cache-Control) para otimizar chamadas repetidas a fatias de mapas.
  • Utilitários de Performance: Script embarcado em Python para medir latências e gerar estatísticas combinadas de performance nos endpoints.

(voltar ao topo)

Construído Com

Esta seção lista os principais frameworks, linguagens e bibliotecas essenciais utilizados no projeto.

  • Node
  • TypeScript
  • Express
  • Python
  • NumPy
  • Prettier
  • ESLint

(voltar ao topo)

Começando

Siga as instruções abaixo para configurar uma cópia local do projeto e executá-lo em ambiente de desenvolvimento ou produção.

Pré-requisitos

Certifique-se de possuir instalado em sua máquina:

  • Node.js (versão >= 20.0.0 recomendada)
  • Python 3 (versão >= 3.9 recomendada)

Instalação

  1. Clone o repositório:
    git clone https://github.com/alissonpef/pytiler_proxy.git
  2. Instale as dependências gerais do projeto (isso criará o ambiente virtual Python .venv, instalará as bibliotecas necessárias de Python e de Node.js):
    npm run setup
  3. Copie o arquivo de variáveis de ambiente de exemplo e ajuste os caminhos se necessário (por padrão aponta para ./data/ortophoto.tif):
    cp .env.example .env

(voltar ao topo)

Uso

Executando em Desenvolvimento (Live Reload)

Para executar o servidor Node em modo de desenvolvimento utilizando ts-node-dev:

npx ts-node-dev src/server.ts

Compilação e Produção

Para compilar o código TypeScript em JavaScript otimizado (pasta dist/) e iniciar o servidor em ambiente de produção:

  1. Compile o projeto:
    npm run build
  2. Inicie o servidor Node:
    npm run start

Alternativamente, você pode rodar o comando que ativa o .venv local e inicializa o servidor de uma vez:

npm run run:server

Endpoints da API

  • GET /tile/:z/:x/:y: Retorna a imagem do tile recortado do raster GeoTIFF no espectro RGB tradicional.
  • GET /vari/:z/:x/:y: Retorna a imagem do tile recortado com o mapeamento espectral do índice VARI aplicado em um gradiente de cores (Vermelho-Amarelo-Verde).

Exemplo de requisição (via curl):

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

Testes de Performance

Você pode analisar o tempo de resposta e a latência de geração de tiles por meio do script de testes integrado:

# Medir performance apenas do endpoint RGB
npm run perf:tile

# Medir performance apenas do endpoint VARI
npm run perf:vari

# Medir performance de ambos os endpoints simultaneamente
npm run perf:both

Os relatórios detalhados contendo estatísticas de latência média, mínima, máxima e desvio padrão serão exportados automaticamente para a pasta logs/ no formato JSON.

(voltar ao topo)

Contribuindo

Contribuições tornam a comunidade open-source um espaço incrível de aprendizado, inspiração e criação. Qualquer contribuição feita será muito apreciada.

Se possuir alguma sugestão de melhoria ou correção:

  1. Faça um Fork do projeto
  2. Crie uma Branch para a sua funcionalidade (git checkout -b feature/FuncionalidadeIncrivel)
  3. Faça o Commit de suas alterações (git commit -m 'Adiciona funcionalidade incrivel')
  4. Faça o Push para a Branch (git push origin feature/FuncionalidadeIncrivel)
  5. Abra um Pull Request

Principais contribuidores:

imagem contrib.rocks

(voltar ao topo)

Licença

Distribuído sob a licença MIT. Veja LICENSE para mais informações.

(voltar ao topo)

Contato

Alisson Pereira Ferreira - alissonpef@gmail.com - LinkedIn

Link do Projeto: https://github.com/alissonpef/pytiler_proxy

(voltar ao topo)


Made with ❤️ by Alisson Pereira.

About

A lightweight map tile server proxy to serve GeoTIFF raster tiles with RGB and VARI index visualizations, built with Node.js, TypeScript, Express, Python, and rio-tiler. Features dynamic calculation of vegetation indices and a built-in performance testing utility.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages