Skip to main content

API para facilitar o acesso a dados LiDAR do GeoSampa

Project description

Python Tests PyPI version Python versions License: MIT

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 via pip

pip install splaz

🛠 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.2.tar.gz (12.7 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.2-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: splaz-0.1.2.tar.gz
  • Upload date:
  • Size: 12.7 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.2.tar.gz
Algorithm Hash digest
SHA256 c6aa5387b99e27cd9d0eafc794ecc1af113bdd5b637816e9e32c4026caf852c5
MD5 bfa7228b82e8637f0668d66d7aaeb9d8
BLAKE2b-256 2443b39fa20afc26843c078e3aa1f508e95347e8b339db63d86d81cff9de084b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: splaz-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 9.8 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4a95d95dfaee7be65737ea7dc9e17358637c7a9fd6bb05d23bb3eba90a8fff21
MD5 788eb0818bef51c6bf7b035f24d8f7ca
BLAKE2b-256 2d6212207846269d1d9e8ebcf62fc4eaa4f8fb293156db49353cd478af40698f

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