Skip to main content

API para facilitar o acesso a dados LiDAR do GeoSampa

Project description

SpLaz (Vagas Verdes)

A SpLaz é uma biblioteca Python de alto nível projetada para automatizar a obtenção de dados LiDAR (nuvens de pontos) da cidade de São Paulo via portal GeoSampa. Ela resolve complexidades de geocodificação, conversão de sistemas de coordenadas (SIRGAS 2000 / UTM 23S) e instabilidades de download de servidores legados.

Este projeto é a base técnica do projeto Vagas Verdes, focado em identificar áreas potenciais para arborização urbana utilizando sensoriamento remoto.

🚀 Funcionalidades

  • Geocodificação por Endereço: Identifica automaticamente qual quadrante LiDAR baixar a partir de um endereço textual (ex: "Rua Quatá, 300").

  • Busca por Bairro: Lista e baixa todos os quadrantes que compõem um bairro específico.

  • Tratamento de Dados Espaciais: Download e extração automática da grade de articulação (Shapefile) da prefeitura.

  • Resiliência de Rede: Sistema de correção de encoding (ISO-8859-1) e verificação de integridade de arquivos ZIP.

  • Gestão de Cache: Armazenamento inteligente na pasta local .geosp_laz_api para evitar downloads repetitivos e poupar banda.

📦 Instalação

O próximo passo do projeto será a publicação no PyPI. Atualmente, a biblioteca pode ser instalada diretamente via pip a partir do diretório raiz:

Bash

Instalação em modo editável (ideal para desenvolvimento)

pip install -e .

🛠 Exemplos de Uso

1. Configuração Inicial

from splaz import GeospLidarClient, GeospGeocoder

client = SpLaz()
geo = SpLazGeo(client=client)

2. Download por Código do Quadrante

Ideal quando você já possui o mapeamento da grade de 2020:

quadrante = client.download_quadrante("3316-153")
quadrante.save("data/raw/laz")

3. Download por Endereço (Geocodificação)

A forma mais intuitiva de acessar os dados para um local específico:

endereco = "Avenida Santo Amaro, 1826"
codigo = geo.get_quadrant_by_address(endereco)
print(f"Quadrante identificado: {codigo}")
client.download_quadrante(codigo).save("data/raw/laz")

4. Download por Coordenadas (Lat/Lon)

Para integração com GPS ou outros sistemas de mapeamento:

lat, lon = -23.598, -46.676
codigo = geo.get_quadrant_by_coords(lat, lon)
client.download_quadrante(codigo).save("data/raw/laz")

5. Processamento por Bairro

Obtenha todos os quadrantes que interceptam a área de um bairro:

bairro = "Itaim Bibi"
codigos = geo.get_quadrants_by_neighborhood(bairro)

for cod in codigos:
    client.download_quadrante(cod).save(f"data/raw/laz/{bairro}")

6. Manipulando a Classe LidarQuadrante

A classe abstrai a complexidade dos binários baixados:

quadrante = client.download_quadrante("3316-153")

# Atributos úteis
print(quadrante.codigo)             # "3316-153"
print(quadrante.esta_carregado)     # True
print(len(quadrante.conteudo_binario)) # Tamanho em bytes do arquivo .laz

# Salva o arquivo final no disco
quadrante.save(dest_path="output/lidar")

📂 Estrutura do Projeto

src/splaz/
├── entities.py    # Representação de objetos LiDAR
├── downloader.py  # Lógica de comunicação com GeoSampa
├── geocoder.py    # Cálculos espaciais e geolocalização
└── constants.py   # EPSG, URLs e parâmetros de API

🧪 Testes Automatizados

A biblioteca possui uma suíte de testes robusta (Unitários, Integração e E2E) que valida desde a lógica de coordenadas até o download real. Para rodar:

pytest

📄 Licença

Distribuído sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

🎓 Contexto Acadêmico

Este projeto foi desenvolvido como parte de um projeto de Iniciação Científica no Insper.

Autor: João Braga

Perfil: Aluno do 7° semestre de Engenharia da Computação.

Objetivo: Apoiar a análise de dados geoespaciais para o projeto ambiental "Vagas Verdes".

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

splaz-0.1.1.tar.gz (12.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

splaz-0.1.1-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file splaz-0.1.1.tar.gz.

File metadata

  • Download URL: splaz-0.1.1.tar.gz
  • Upload date:
  • Size: 12.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for splaz-0.1.1.tar.gz
Algorithm Hash digest
SHA256 41eed959868c78e62f1508910d7d1e3e426bf6571e1197ff316c1b20c4f7ccd5
MD5 270c7c3739b583cb57b20c6fb5abce0a
BLAKE2b-256 202e7e7be92b2014c6f604ca22c3cb7447536f5cf04805c15def34241ace8d4b

See more details on using hashes here.

File details

Details for the file splaz-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: splaz-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 9.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for splaz-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 819cb0e3b4d74e6e450af53dad7e8e26bbf0af183415bea11a1d5f4a7b896346
MD5 f8431e0f34420e28ff00ad471d58fdd2
BLAKE2b-256 2f5a07c109eae94c260d53408d892d5082cccfdbf2e0633d3e3a650fc944e373

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page