Skip to content

Instantly share code, notes, and snippets.

View dinizime's full-sized avatar

Felipe Diniz dinizime

  • Porto Alegre, Brasil
View GitHub Profile
@dinizime
dinizime / pipeline_sr_multigpu.py
Created March 14, 2026 12:38
realiza SR on the fly em multigpu sem precisar cortar tiles.
"""
Pipeline de Super-Resolução Multi-GPU para servidor Linux.
Processa múltiplos rasters em paralelo, um por GPU.
Fluxo por raster:
GeoTIFF → numpy (RAM) → tiles → GPU (batches) → mosaico → GeoTIFF
Uso:
# Processar um raster (usa GPU 0 por padrão)
python pipeline_sr_multigpu.py -opt config_server.yml \
@dinizime
dinizime / conversao_edgv3_topo14.py
Created March 14, 2026 12:31
converte edgv topo 1.4 para MASACODE
# -*- coding: utf-8 -*-
from abc import ABC, abstractmethod
from typing import List
from dataclasses import MISSING, dataclass, field
import os
from qgis import processing
from qgis.PyQt.Qt import QVariant
from qgis.PyQt.QtCore import QCoreApplication
from qgis.core import (QgsProcessing, QgsVectorFileWriter, QgsProcessingAlgorithm,
@dinizime
dinizime / trata_raster_algorithm.py
Created March 4, 2026 19:42
Trata o raster classificado generalizando para escala 50k e conformando area edificada e massa dagua
# -*- coding: utf-8 -*-
"""
/***************************************************************************
DsgTools
A QGIS plugin
Brazilian Army Cartographic Production Tools
-------------------
begin : 2025-07-17
git sha : $Format:%H$
copyright : (C) 2025 by Philipe Borba - Cartographic Engineer @ Brazilian Army
@dinizime
dinizime / stack_sr.py
Created February 28, 2026 23:22
Faz o stack de 4 imagens em lote, reprojeta para 3857 e pixel de 9.555 com reamostragem bilinear
#!/usr/bin/env python3
"""
Stack e reprojeção de imagens Sentinel-2 TCI para Super Resolution.
Replica o model_sem_corte do QGIS:
1. gdal_merge -separate (stack temporal como bandas)
2. gdalwarp para EPSG:3857, bilinear, pixel 9.555m
"""
from osgeo import gdal
from pathlib import Path
@dinizime
dinizime / linha_letra_rotulo.py
Created February 6, 2026 20:03
Cria linha passando pelos rótulos curvados de forma precisa
"""
============================================================================
Label Line Extractor para QGIS
---------------------------------------------------------------------------
Itera cada polígono de uma camada de referência, renderiza off-screen,
e captura todos os rótulos de LINHA. Gera uma linha por rótulo com
comprimento exato do texto, seguindo a geometria da feição original.
- Labels "on line": linha coincide com a feição
- Labels "above/below line": linha é deslocada (offset) à distância
@dinizime
dinizime / poligono_letra_rotulo.py
Created February 6, 2026 16:29
Cria poligonos ao redor das letras dos rótulos de forma precisa
"""
============================================================================
Label Bounds Extractor para QGIS – v4 CURVO + PRECISO
---------------------------------------------------------------------------
Itera cada polígono de uma camada de referência, renderiza off-screen,
e captura todos os rótulos. Extrai propriedades COMPLETAS do texto
(fonte, tamanho, bold, itálico, buffer, espaçamentos, capitalização)
para subdividir cada rótulo em retângulos por caractere com precisão.
★ v4: Suporte completo a rótulos CURVOS (Curved / PerimeterCurved)
@dinizime
dinizime / largest_rectangle.py
Last active July 28, 2025 13:14
Retorna o maior retângulo cuja largura é maior que a altura contido dentro de um polígono
import numpy as np
from qgis.core import (QgsGeometry, QgsPointXY, QgsWkbTypes, QgsRasterLayer,
QgsVectorLayer, QgsFeature, QgsProject,
QgsCoordinateReferenceSystem, QgsField)
from qgis import processing
from qgis.utils import iface
from PyQt5.QtCore import QVariant
class RasterLabelPositioner:
def __init__(self, moldura_geometry, polygon_individual, text_width_cells=5, text_height_cells=5):
@dinizime
dinizime / combinar_pdf.py
Created July 24, 2025 12:37
Script em python para combinar multiplos PDF
# -*- coding: utf-8 -*-
# =========================
# 📖 Exemplos de Uso
# =========================
"""
Combinador de PDFs para mapas
- Combina múltiplos PDFs de página única em uma única página
- Posicionamento preciso sem redimensionamento
- Orientação horizontal e vertical (0° e 90°)
@dinizime
dinizime / converte_kmz.py
Created March 19, 2025 18:41
Converte camada poligono do qgis para kmz com label
from qgis.core import QgsProject, QgsGeometry, QgsCoordinateReferenceSystem, QgsCoordinateTransform, QgsWkbTypes, QgsPointXY
import os
import zipfile
import xml.dom.minidom as minidom
import random
import math
def create_kmz_with_labels(layer_name, label_field, output_kmz_path,
line_color='ff4aaf4d', line_width=4,
label_color='ff00ff00', label_scale=1.5,
@dinizime
dinizime / zipa_tiles.py
Created March 15, 2025 09:34
Rotina em python para zipar tiles em paralelo agrupando eles.
import os
import glob
import zipfile
import math
import shutil
import argparse
from concurrent.futures import ProcessPoolExecutor, as_completed
from multiprocessing import cpu_count
from tqdm import tqdm
import time