Giter Club home page Giter Club logo

lftools's Introduction

Logo

LF Tools

Tools for cartographic production, surveying, digital image processing and spatial analysis

Tutorials

Requirement for QGIS 3.22 in MacOS:

Install the following package as follows:

pip install Pillow

Description of each tool

Set of Tools
  1. Cadastre
  2. Cartography
  3. Documents
  4. Drones
  5. Easy
  6. GNSS
  7. PostGIS
  8. Raster
  9. Reambulation
  10. Relief
  11. Spatial Statistics
  12. Survey
  13. Vector
Conjunto de Ferramentas (Portuguese-BR)
  1. Agrimensura
  2. Cadastro
  3. Cartografia
  4. Documentos
  5. Drones
  6. Estatística Espacial
  7. GNSS
  8. Mão na Roda
  9. Mão na roda
  10. PostGIS
  11. Raster
  12. Reambulação
  13. Relevo
  14. Vetor

Cadastre

Adjoiner Lines

Generates adjoiner lines from a polygon layer of parcels.

Connect features

Creates new vertices between adjacent polygons to ensure perfect connectivity (topology) between them.

Front Lot Lines

Generates front lot lines from a polygon layer of parcels.

Geographic Numbering

This tool fills in a numeric attribute following a geographic criterion, for example: from north to south and west to east.
Note: This algorithm uses the feature centroid to sort geographically.

Orient polygons

This tool orients the geometry of polygon-like features clockwise or counterclockwise, defining the first vertex as the north, south, east, or west.

Cartography

Coordinates to UTM grid

This algorithm returns the frame related to a scale of the Brazilian Mapping System. The generated frame, which is a polygon, is calculated from a Point defined by the user.

Extent to UTM grids

This algorithm returns the polygons correspondent to the frames related to a scale of the Brazilian Mapping System from a specific extent definied by the user.

Frames from lines

This tool generates frames in the direction of lines, given the measurements of longitudinal distance, transverse distance and overlapping percentage between frames.

Name to UTM grid

This algorithm returns the polygon correspondent to the frame related to a scale of the Brazilian Mapping System based on the Map Index (MI). Example: MI = 1214-1

Documents

Area and perimeter report

This tool generates a Report for the Analytical Calculation of Area, Azimuths, Polygon Sides, UTM Projection and Geodetic Coordinates of a Property.

Deed description

Elaboration of Deed Description based on vector layers that define a property.

Geodetic mark report

This tool generates report(s) with the informations about a geodetic landmarks automatically from the "reference_point_p" layer.

Points from Deed Description

Performs the reconstitution of a Deed Description using Regular Expressions (RegEx).

Synthetic deed description

This tool generates the Vertices and Sides Descriptive Table, also known as Synthetic Deed Description, based on the attributes, sequence and code, in the point layer's attribute table.

Validate topology

This tool performs a series of topological validations to ensure the correct generation of survey plans and deed description based on GeoOne's TopoGeo and GeoRural models.

Drones

Copy selected files

This tool makes it possible to copy or move files to a new folder from a point layer with file paths.

Generate GCP file from layer

Generate text file with Ground Control Points (GCP) from a point layer.

Georeferencing Adjustment

This tool performs the georeferencing adjustment of any raster image using Ground Control Points.
The following types of coordinate transformation can be used:
◼️ Translation Transformation: 1 vector without adjustment / 2 or + vectors with adjustment.
◼️ Conformal Transformation (2D Helmert): 2 vectors without adjustment / 3 or + vectors with adjustment.
◼️ Affine Transformation: 3 vectors without adjustment / 4 or + vectors with adjustment.

Join folders

This tool has the objective of joining the files from several folders in another new folder, with the possibility of renaming the files.
It is a very useful procedure for joining multiple drone images with repeated names into a single folder.

Overviews with JPEG compression

This tool aims to create an Overviews file (.ovr). This algorithm has the advantage of applying a JPEG compression at each level, greatly reducing the generated file size.

Photos Histogram Matching

This tool performs histogram matching of the JPEG photo files of one input photo layer relative to another reference photo layer.

Photos by blocks

This tool separates drone photographs into new folders to be processed by blocks, from a layer of polygons (blocks) and from layers of geotagged photographs.

Point cloud adjustment

This tool performs the horizontal and vertical adjustment of Cloud of Points in (TXT) format using LineStringZ vectors.

Remove alpha band

This tool removes the 4th band (apha band), transfering the transparency information as "NoData" to pixels of the RGB output.

Save as JPEG

Exports any 8 bit RGB or RGBA raster layer as a JPEG file. Ideal for reducing the size of the output file. It performs a lossy JPEG compression that, in general, the loss of quality goes unnoticed visually.

Vertical adjustment

This tool performs the vertical adjustment of Digital Elevation Models (DEM) from Ground Control Points (GCP).

Easy

Export expression as ASCII

This tool exports one or several files in standard text file (ASCII) based on an expression considering the attributes of a layer.

Get attribute by location

This algorithm fills in the attributes of a specific field from another layer, in such a way that the feature's centroid intercepts the corresponding feature from the other layer.
The source and destination fields must be indicated to fill in the attributes.

Measure layers

This tool calculates the line feature's lengths and polygon feature's perimeter and area in virtual fields for all vector layers.

Table to point layer

Generates a point layer from a coordinate table, whether it comes from a Microsoft Excel spreadsheet (.xls), Open Document Spreadsheet (.ods), or even attributes from another layer.

GNSS

NMEA to layer

Loads a NMEA file (protocol 0183) from GNSS receivers as a point layer.
Modes:
◼️ Kinematic - generates all tracked points with their accuracies (PDOP, HDOP and VDOP) and number of satellites.
◼️ Static - calculates the mean and standard deviation of the observed points, for all points or only for fixed solution points (best result).

POS file (.pos) to layer

Loads a POS file (.pos) from GNSS processing as a point layer.
Compatibility: RTKLIB, IBGE-PPP.
Types:
◼️ All processed points
◼️ Last point

RTK Points Correction

Performs base RTK correction using post-process coordinates, for example by PPP, and applies corrections to all rover points.

Stop and Go

It finds the central points (vertices) of the concentrations of points surveyed by the Kinematic method (stop and go) from the processing of GNSS data.
Input data:
◼️ GNSS point layer from RTKLIB or IBGE-PPP from .pos file
◼️ Minimum time to survey the point in minutes
◼️ Tolerance in centimeters to consider the static point

PostGIS

Backup database

This tool creates a backup file in the ".sql" format for a PostgreSQL server database.

Change SQL encoding

This tool changes the encoding type of a .sql file. A new file will be created with the user-defined encoding.
In some cases, this is a possible solution to transfer data between different operating systems, for example from Windows to Linux, and vice versa.

Clone database

This tool allows the user to clone any PostgreSQL database. From a model database, another database that has exactly the same (schema and instances) is generated with a new name defined by the operator.
Note: To create more than one "clone", the new database names must be filled and separated by "comma".

Delete database

This tool allows you to delete / drop any PostgreSQL database.
Notes:
- To run this operation, the database must be disconnected. This means, that it must not be opened in any software (PgAdmin, QGIS, etc.).
- To delete more than one database, the names must be filled and separated by "comma".

Attention: This operation is irreversible, so be sure before running it!

Import raster

This tool allows you to load a raster layer into a PostGIS database.

Rename database

This tool allows you to rename a PostgreSQL database.
Note: To run this operation, the database must be disconnected. This means, that it must not be opened in any software (PgAdmin, QGIS, etc.).

Restore database

This tool allows you to restore a database content by importing all the backup information in a ".sql" file into a PostgreSQL server.

Raster

Band Arithmetic

Performs an arithmetic operation on the bands of a raster. The predefined formula is used to calculate the Green Leaf Index (GLI) for a RGB raster. However you can enter your own formula.
Examples:
NDVI with RGN raster: ( b3 - b1) / (b3 + b1)
NDWI with RGN raster: ( b3 - b2) / (b3 + b2)
GLI with RGB raster: (2b2 - b1 - b3) / (2b2 + b1 + b3)
VARI with RGB raster: (b2 - b1) / (b2 + b1 - b3)
VIgreen with RGB raster: (b2 - b1) / (b2 + b1)
Obs.:
The operators supported are: + , - , * , /

Binary Thresholding

Creates a binarized raster, dividing the input raster into two distinct classes from statistical data (lower and upper threshold) from area or point samples. Optionally, minimum and maximum threshold values can also be set.
A class matches the values within the range of thresholds, where the value 1 (true) is returned. The other class corresponds to values outside the range, returning the value 0 (false).

Create holes in raster

Creates holes in Raster by defining "no data" pixels (transparent) from the Polygon Layer.

Define null cells

Cells of a raster with values outside the interval (minimum and maximum) are defined as null value.

Estimate point value from Raster

This tool estimates the value of the points from Raster, making the proper interpolation of the nearest pixels (cells).

Extract raster band

Extracts a difined band of a raster (for multiband rasters).

Fill with patches

Fills Raster null pixels (no data) with data obtained from other smaller raster layers (Patches).

Histogram matching

This tool matches the histogram of a raster layer in relation to another reference raster layer.

JPEG compression

JPEG compression is a lossy method to reduce the raster file size (about to 10%). The compression level can be adjusted, allowing a selectable tradeoff between storage size and image quality.

Load raster by location

Loads a set of raster files that intersect the geometries of an input vector layer.
Optionally, it is possible to copy the selected rasters and paste them in another folder.

Mosaic raster

Creates raster mosaic: a combination or merge of two or more images.

RGB composite

Combine three image bands into one picture by display each band as either Red, Green or Blue.

RGB to HSV

Converts the red, green, and blue values of an RGB image to Hue (H), Saturation (S), and Value (V) images.

Raster data inventory

Creates a vector layer with the inventory of raster files in a folder. The geometry type of the features of this layer can be Polygon (bounding box) or Point (centroid).

Rescale to 8 bit

Rescales the values of the raster pixels with radiometric resolution of 16 bits (or even 8 bits or float) to exactly the range of 0 to 255, creating a new raster with 8 bits (byte) of radiometric resolution.

Split raster

Splits a raster dataset into smaller pieces, by horizontal and vertical tiles.

Supervised classification

Performs the supervised classification of a raster layer with two or more bands.

Zonal Statistics

This algorithm calculates statistics for the bands of a raster layer, categorized by zones defined in a polygon type vector layer.
The values of the raster cells where the pixel center is exactly inside the polygon are considered in the statistics.

Reambulation

KML with photos

Creates a KML file embedding in that single file all photographs in base64 textual format to be viewed in Google Earth.
Images are resized to a new size corresponding to the image's largest side.

Photos with geotag

Imports photos with geotag to a Point Layer.

Resize photos

The largest width or height value of the original image is resized to the user-defined value. The short side is scaled proportionately.
Note: The metadata is preserved.

Relief

DEM difference

This tool performs the difference between two Digital Elevation Models (DEM).
Minuend is the raster to be subtracted.
Subtrahend is the rastar that is subtracting.

DEM filter

This tool applies the filtering technique in the Raster pixel by pixel, based on the gray level values of neighboring pixels.
The filtering process is done using matrices called masks (or kernel), which are applied to the image.

DEM to Text

This tool exports a Digital Elevation Model (DEM) as a text file (txt) for later transformation into a point cloud.
Optionally, the associated Orthomosaic RGB colors can be taken to the text file.

Generate Spot Elevations

This tool generates a layer of points with Spot Elevations from a Digital Terrain Model and a vector layer of contour lines.

Spatial Statistics

Central Tendency

This tool returns the central tendency point(s) for clustering points of entry points.
The following statistics can be obtained by grouping:
◼️ Mean Center: calculation of the average in X and Y
◼️ Median Center: calculation of the median in X and Y (less influenced by outliers)
◼️ Central Feature: identification of the central feature (smallest Euclidean distance)
Note: Layer in a projected SRC gets more accurate results.

Confidence ellipses

Creates ellipses based on the covariance matrix to summarize the spatial characteristics of point type geographic features: central tendency, dispersion, and directional trends.

Gaussian random points

Generate gaussian (normal) random points in 2D space with a given mean position (X0, Y0), standard deviation for X and Y, and rotation angle.

Nearest points

Calculates the sigmax, sigmay and sigmaz precisions (when available) of the closest points to each reference point considering a maximum distance or a minimum number of closest points.
Output: Multipoint layer with positional accuracies in meters and other statistics.
1) Max distance: get all points within the distance.
2) Minimum quantity: get all the closest points, regardless of the maximum distance.
3) Maximum distance and minimum quantity: get only the closest points that are within the maximum distance.

Standard Distance

Measures the degree to which features are concentrated or dispersed around the geometric mean center.

Survey

Azimuth and distance

Calculation of points or line from a set of azimuths and distances.

Closed polygonal

Calculates the adjusted coordinates from angles and horizontal distances of a Closed Polygonal.

Coordinate transformation 2D

This tool performs the following types of coordinate transformation:
◼️ Translation Transformation: 1 vector without adjustment / 2 or + vectors with adjustment.
◼️ Conformal Transformation (2D Helmert): 2 vectors without adjustment / 3 or + vectors with adjustment.
◼️ Affine Transformation: 3 vectors without adjustment / 4 or + vectors with adjustment.
With this tool it is possible to perform correctly the georeferencing of vector files in QGIS.

Estimate 3D coordinates

This tool calculates the coordinates (X, Y, Z) of a point from azimuth and zenith angle measurements observed from two or more stations with known coordinates using the Foward Intersection Method adjusted by the Minimum Distances.

Local Geodetic System transform


This algorithm transforms coordinates between the following reference systems:
- geodetic (λ, ϕ, h);
- geocentric or ECEF (X, Y, Z); and
- topocentric in a local tangent plane (E, N, U).
Default values for origin coordinates can be applied to Recife / Brazil.

Traverse adjustment

This algorithm performs the traverse adjustments of a framed polygonal by least squares method, where the distances, angles, and directions observations are adjusted simultaneously, providing the most probable values for the given data set. Futhermore, the observations can be rigorously weighted based on their estimated errors and adjusted accordingly.

Vector

Calculate polygon angles

This algorithm calculates the inner and outer angles of the polygon vertices of a layer. The output layer corresponds to the points with the calculated angles stored in the respective attributes.

Connect layers

Creates new vertices into polygons to ensure perfect connectivity (topology) between two layers.

Cross Sections

Generates cross sections from a line-type layer.

Extend lines

Extends lines at their start and/or end points.

Line sequence

This script fills in a certain attribute of the features of a layer of lines according to their connectivity sequence between them.

Lines to polygon

This tool generates a polygon layer from a connected line layer.

Merge lines in direction

This algorithm merges lines that touch at their starting or ending points and has the same direction (given a tolerance in degrees).

For the attributes can be considered:

1 - merge lines that have the same attributes; or
  • 2 - keep the attributes of the longest line.
  • Overlapping polygons

    Identifies the overlap between features of a polygon type layer.

    Points to polygon

    This tool generates a polygon layer from a point layer and its filled order (sequence) attributes.

    Reverse vertex order

    Inverts vertex order for polygons and lines.

    Sequence points

    This script fills a certain attribute of the features of a layer of points according to its sequence in relation to the polygon of another layer.

    Agrimensura

    Azimute e distância

    Cálculo de pontos ou linha a partir de um conjunto de azimutes e distâncias.

    Estimar coordenadas 3D

    Esta ferramenta calcula as coordenadas (X,Y,Z) de um ponto a partir de medições de azimute e ângulo zenital observados de duas ou mais estações de coordenadas conhecidas utilizando o Método de Interseção à Vante ajustado pelas Distâncias Mínimas.

    Poligonal enquadrada

    Este algoritmo realiza o ajustamento de poligonal enquadrada pelo método dos mínimos quadrados, onde as observações de distâncias, ângulos e direções são ajustadas simultaneamente, fornecendo os valores mais prováveis para o conjunto de dados. Além disso, as observações podem ser rigorosamente ponderadas considerando os erros estimados e ajustados.

    Poligonal fechada

    Cálculo das coordenadas ajustadas a partir de medições de ângulos e distâncias de uma poligonal fechada.

    Transformação de coordenadas 2D

    Esta ferramenta realiza os seguintes tipos de transformação de coordenadas:
    ◼️ Transformação de Translação: 1 vetor sem ajustamento / 2 ou + vetores com ajustamento.
    ◼️ Transformação Conforme (Helmert 2D): 2 vetores sem ajustamento / 3 ou + vetores com ajustamento.
    ◼️ Transformação Afim: 3 vetores sem ajustamento / 4 ou + vetores com ajustamento.
    Com esta ferramenta é possível realizar o correto georreferenciamento de arquivos vetoriais no QGIS.

    Transformação para SGL

    Este algoritmo transforma coordenadas entre os seguintes sistemas de referência:
    - Geodésico (λ, ϕ, h)
    - Geocêntrico ou ECEF (X, Y, Z);
    - Topocêntrico (E, N, U).
    Default: coordenadas de origem para Recife-PE, Brasil.

    Cadastro

    Conectar feições

    Gera novos vértices entre polígonos adjacentes para garantir a perfeita conectividade (topologia) entre eles.

    Linhas de Confrontantes

    Gera as linhas de confrontantes das parcelas a partir dos polígonos dos lotes.

    Linhas de Testada

    Gera as linhas de testada das parcelas a partir dos polígonos dos lotes.

    Numerar geograficamente

    Esta ferramenta preenche um atributo numérico seguindo um critério geográfico, por exemplo de norte para sul e oeste para leste.
    Obs.: Este algoritmo utiliza o centroide da feição para ordenar geograficamente.

    Orientar polígonos

    Esta ferramenta orienta a geometria de feições do tipo polígono no sentido horário ou antihorário, definindo o primeiro vértice mais ao norte, sul, leste ou oeste.

    Cartografia

    Coordenadas para moldura UTM

    Este algoritmo retorna o polígono correspondente à moldura relativa a uma escala do Mapeamento Sistemático Brasileiro. Esta moldura é calculada a partir das coordenadas de um Ponto definido pelo usuário.

    Extensão para molduras UTM

    Este algoritmo retorna os polígonos correspondentes às molduras relacionadas a uma escala do Mapeamento Sistemático Brasileiro para uma extensão específica definida pelo usuário.

    Molduras a partir de linhas

    Esta ferramenta gera molduras na direção de linhas, dada as medidas de distância longitudinal, distância transversal e percentual de sobreposição entre os quadros.

    Nome para moldura UTM

    Este algoritmo retorna o polígono correspondente à moldura relativa a uma escala do Mapeamento Sistemático Brasileiro. Esta moldura é calculada a partir do Índice de Nomenclatura INOM ou Mapa Índice MI válido, que deve ser dado pelo usuário.

    Documentos

    Memorial descritivo

    Elaboração de Memorial Descritivo a partir de camadas vetorias que definem uma propriedade.

    Memorial sintético

    Esta ferramenta gera a Tabela Descriva de Vértices e Lados, também conhecida como Memorial Descritivo Sintético, a partir de uma camada de pontos com os atributos de código e ordem (sequência) dos pontos.

    Monografia de marco geodésico

    Esta ferramenta gera monografia(s) de marcos geodésicos de forma automática a partir da camada "reference_point_p".

    Planilha de área e perímetro

    Esta gera o Relatório de Cálculo Analítico de Área, Azimutes, Lados, Coordenadas Planas e Geodésicas de um Imóvel.

    Reconstituição de Memorial

    Realiza a reconstituição de Memorial descritivo utilizando Expressões Regulares (RegEx).

    Validar topologia

    Esta ferramenta executa uma série de validações topológicas para garantir a correta geração de plantas topográficas e memoriais descritivos baseado nos modelos TopoGeo e GeoRural da GeoOne.

    Drones

    Ajuste Vertical

    Esta ferramenta realiza o ajuste vertical de Modelos Digitais de Elevação (MDE) a partir de Pontos de Controle no Terreno (GCP).

    Ajuste de Nuvem de Pontos

    Esta ferramenta realiza o ajuste horizontal e vertical de Nuvem de Pontos no formato (TXT) utilizando vetores do tipo LineStringZ.

    Ajuste do Georreferenciamento

    Esta ferramenta realiza o ajuste do georreferenciamento de qualquer imagem raster utilizando Pontos de Controle no Terreno.
    Os seguintes tipos de transformação de coordenadas podem ser utilizados:
    ◼️ Transformação de Translação: 1 vetor sem ajustamento / 2 ou + vetores com ajustamento.
    ◼️ Transformação Conforme (Helmert 2D): 2 vetores sem ajustamento / 3 ou + vetores com ajustamento.
    ◼️ Transformação Afim: 3 vetores sem ajustamento / 4 ou + vetores com ajustamento.

    Casar histogramas de fotos

    Esta ferramenta realiza o casamento do histograma dos arquivos de fotos JPEG de uma camada de fotografias de entrada em relação a outra camada de fotografias de referência.

    Copiar arquivos selecionados

    Esta ferramenta possibilita copiar ou mover arquivos para uma nova pasta a partir de uma camada de pontos com os caminhos dos arquivos.

    Fotos por blocos

    Esta ferramenta separa fotografias de drones em novas pastas para serem processadas por blocos, a partir de uma camada de polígonos (blocos) e da camadas de fotografias com geotag.

    Gerar arquivo de GCP a partir de camada

    Gera arquivo texto com Pontos de Controle no Terreno (GCP) a partir de uma camada de pontos.

    Juntar pastas

    Esta ferramenta tem o objetivo de juntar os arquivos de várias pastas em uma outra nova pasta, com a possibilidade de renomear os arquivos.
    É um procedimento muito útil para juntar várias imagens de drone com nomes repetidos em uma única pasta.

    Pirâmides com Compressão JPEG

    Esta ferramenta tem como objetivo criar um arquivo .ovr, correspondente às Overviews (ou pirâmides, em português). Este algoritmo tem a vantagem de aplicar uma compressão JPEG em cada nível, reduzindo bastante o tamanho do arquivo gerado.

    Remover banda alfa

    Esta ferramenta remove a 4ª banda (banda alfa), transferindo a informação de transparência como "Sem Valor" para os pixels da imagem RGB de saída.

    Salvar como JPEG

    Exporta qualquer camada raster RGB ou RGBA de 8 bits como um arquivo JPEG. Ideal para reduzir o tamanho do arquivo de saída. Realiza a compressão JPEG com uma pequena perda de qualidade que, em geral, passa despercebida visualmente.

    Estatística Espacial

    Distância padrão

    Mede o grau em que as feições estão concentradas ou dispersas em torno do centro médio geométrico.

    Elipses de confiança

    Cria elipses a partir da matriz variância-covariância para resumir as características espaciais de feções geográficas do tipo ponto: tendência central, dispersão e tendências direcionais.

    Pontos aleatórios gaussiano

    Gera pontos aleatórios no espaço 2D a partir de um ponto central (X0, Y0), desvios-padrões para X e Y, e ângulo de rotação.

    Pontos mais próximos

    Calcula as precisões sigmax, sigmay e sigmaz (quando existir) dos pontos mais próximos de cada ponto de referência considerando uma distância máxima ou uma quantidade mínima de pontos mais próximos.
    Saída: Camada de multipoint com precisões posicionais em metros e outras estatísticas.
    1) Distância máxima: busca todos os pontos dentro da distância.
    2) Quantidade mínima: busca todos os pontos mais próximos, independente de distância máxima.
    3) Distância máxima e quantidade mínima: busca apenas os pontos mais próximos que estão dentro da distância máxima.

    Tendência central

    Esta ferramenta retorna o(s) ponto(s) de tendência central para agrupamento de pontos dos pontos de entrada.
    As seguintes estatísticas pode ser obtidas por agrupamento:
    ◼️ Centro Médio: cálculo da média em X e Y
    ◼️ Centro Mediano: cálculo da mediana em X e Y (menos influenciado por outliers)
    ◼️ Feição Central: identificação da feição central (menor distância euclidiana)
    Observação: Camada em um SRC projetado obtém resultado mais acurados.

    GNSS

    Correção de Pontos RTK

    Realiza a correção da base RTK utilizando as coordenas pós-processsas, por exemplo pelo PPP, e aplica as correções a todos os pontos Rover.

    NMEA para camada

    Carrega um arquivo NMEA de rastreio GNSS (protocolo 0183) como uma camada do tipo ponto.
    Modos:
    ◼️ Cinemático - gera todos os pontos rastreados com suas precisões (PDOP, HDOP e VDOP) e número de satélites.
    ◼️ Estático - calcula a média e desvio-padrão dos pontos observados, para todos os pontos ou somente para os pontos de solução fixa (melhor resultado).

    POS para camada

    Carrega um arquivo POS resultante do processamento de dados GNSS como uma camada do tipo ponto.
    Compatibilidade: RTKLIB, IBGE-PPP
    Tipos:
    ◼️ Todos os pontos processados
    ◼️ Último ponto

    Semicinemático

    Encontra os pontos centrais (vértices) das concentrações de pontos levantados pelo método Seminemático (stop and go) provenientes do processamento de dados GNSS.
    Dados de entrada:
    ◼️ Camada do tipo ponto gerada do arquivo .pos do RTKLIB ou IBGE-PPP
    ◼️ Tempo mínimo de levantamento do ponto em minutos
    ◼️ Tolerância em centímetros para considerar o ponto estático

    Mão na Roda

    Medir camadas

    Esta ferramenta calcula em campos virtuais os comprimentos de feições do tipo linha e o perímetro e área de feições do tipo polígono para todas as camadas.

    Pegar atributo pela localização

    Este algoritmo preenche os atributos de um campo específico a partir de outra camada, tal que o centróide da feição intercepte a feição correspondente da outra camada.
    Os campos de origem e de destino devem ser indicadas para preenchimento dos atributos.

    Planilha para camada de pontos

    Geração de uma camada de pontos a partir das coordenadas preenchidas em uma planilha do Excel (.xls) ou Open Document Spreadsheet (.ods), ou até mesmo, a partir dos atributos de outra camada.

    Mão na roda

    Exportar expressão como ASCII

    Esta ferramenta exporta um ou vários arquivos no padrão de arquivo texto (ASCII) baseada em uma expressão considerando os atributos de uma camada.

    PostGIS

    Backup de BD

    Esta ferramenta gera um arquivo de backup no formato ".sql" para um banco de dados de um servidor PostgreSQL.

    Clonar BD

    Esta ferramenta permite clonar qualquer banco PostgreSQL. A partir de um banco de dados modelo, é gerado um outro banco exatamente igual (esquema e instâncias) com um novo nome definido pelo operador.
    Obs.: Para criação de mais de um "clone", os novos nomes dos bancos devem ser inseridos "separados por vírgula".

    Deletar BD

    Esta ferramenta permite apagar (delete/drop) qualquer banco do PostgreSQL.
    Obs.:
    - Para realizar esta operação, é necessário que o banco esteja desconectado, ou seja, não esteja aberto em nenhum software (PgAdmin, QGIS, etc).
    - Para deletar mais de um BD, os nomes devem ser preenchidos separados por vírgula.

    Atenção: Esta operação é irreversível, portanto esteja seguro quando for executá-la!

    Importar raster

    Esta ferramenta permite carregar uma camada raster para dentro de um banco de dados PostGIS.

    Renomear BD

    Esta ferramenta permite renomear um banco de dados do PostgreSQL.
    Nota: Para realizar esta operação, é necessário que o banco de dados esteja desconectado, ou seja, não esteja aberto em nenhum software (PgAdmin, QGIS, etc.).

    Restaurar BD

    Esta ferramenta permite restaurar, ou seja, importar um banco de dados para um servidor PostgreSQL, a partir de um arquivo de backup no formato ".sql".

    Trocar codificação de SQL

    Esta ferramenta realiza a troca do tipo de codificação de um arquivo .sql. Um novo arquivo será criado com a codificação definida pelo usuário.
    Em alguns casos, esse processo é uma possível solução para transferir dados entre diferentes sistemas operacionais, por exemplo de Window para Linux, e vice-versa.

    Raster

    Aritmética de bandas

    Executa uma operação aritmética entre as bandas de um raster. A fórmula predefinida é usado para calcular o Green Leaf Index (GLI) para um raster RGB. No entanto, você pode inserir sua própria fórmula.
    Exemplos:
    NDVI com raster RGN: ( b3 - b1) / (b3 + b1)
    NDWI com raster RGN: ( b3 - b2) / (b3 + b2)
    GLI com raster RGB: (2b2 - b1 - b3) / (2b2 + b1 + b3)
    VARI com raster RGB: (b2 - b1) / (b2 + b1 - b3)
    VIgreen com raster RGB: (b2 - b1) / (b2 + b1)
    Obs.:
    Os operadores suportados são: + , - , * , /

    Carregar raster pela localização

    Carrega um conjunto de arquivos raster que interceptam as geometrias de uma camada vetorial de entrada.
    Opcionalmente é possível copiar os rasters selcionados e colar em outra pasta.

    Casamento de Histograma

    Esta ferramenta realiza o casamento do histograma de uma camada raster em relação a outra camada raster de referência.

    Classificação supervisionada

    Realize a classificação supervisionada de camada raster com duas ou mais bandas.

    Composição RGB

    Realiza a combinação de três bandas em uma única imagem, apresentando-as nas bandas vermelha (R), verde (G) e Azul (B).

    Compressão JPEG

    A compressão JPEG é um método "com perdas" para reduzir o tamanho de um arquivo raster (para aproximadamente 10%). O grau de compressão pode ser ajustado, permitindo um limiar entre o tamanho de armazenamento e a qualidade da imagem.

    Definir pixel nulo

    As células do raster com valores fora do intervalo (mínimo e máximo) são definidas como valor nulo.

    Dividir raster

    Divide um raster em pedaços menores, por blocos horizontais e verticais

    Esburacar raster

    Cria buracos em Raster definindo pixels nulos (transparentes) a partir de Camada de Polígonos.

    Estatísticas zonais

    Este algoritmo calcula estatísticas para as bandas de uma camada raster, categorizados por zonas definidas em camada vetorial do tipo polígono.
    Os valores das células do raster onde o centro do pixel se encontra exatamente dentro do polígonos são considerados nas estatísticas.

    Estimar valor de ponto a partir de Raster

    Esta ferramenta estima o valor dos pontos a partir de Raster, fazendo a devida interpolação dos pixels (células) mais próximos.

    Extrair banda de raster

    Extrai uma das bandas de um arquivo raster (para imagens multi-bandas/multi-canal).

    Inventário de dados raster

    Cria uma camada vetorial com o inventário de arquivos raster de uma pasta. O tipo de geometria das feições dessa camada pode ser Polígono (retângulo envolvente) ou Ponto (centroide).

    Limiarização Binária

    Cria um raster binarizado, dividindo o raster de entrada em duas classes distintas a partir de dados estatísticos (limiar inferior e superior) de amostras de áreas ou pontuais. Opcionalmente, os valores de limiar mínimo e máximo também podem ser definidos.
    Uma classe irá corresponder aos valores compreendidos dentro do intervalo dos limiares, sendo retornado o valor 1 (verdadeiro). Já a outra classe correpondem aos valores fora do intervalo, sendo retornado o valor 0 (falso).

    Mosaicar raster

    Cria um mosaico: uma combinação ou mesclagem de duas ou mais imagens.

    RGB para HSV

    Converte os valores de vermelho, verde e azul de uma imagem RGB em imagens Matiz (H), Saturação (S) e Valor (V).

    Reescalonar para 8 bits

    Reescalona os valores dos pixels de raster com resolução radiométrica de 16 bits (ou até mesmo 8 bits ou float) para exatamente o intervalo de 0 a 255, criando um novo raster com 8 bits (byte) de resolução radiométrica.

    Remendar vazios de raster

    Preenche vazios de Raster (pixels nulos) com dados obtidos de outras camadas raster menores (Remendos).

    Reambulação

    Fotos com geotag

    Importa fotos com geotag para uma camada de pontos.

    KML com fotos

    Cria um arquivo KML incorporando nesse único arquivo todas as fotografias em formato textual base64 para ser visualizado no Google Earth.
    As imagens são redimensionadas para um novo tamanho correspondente ao maior lado da imagem.

    Redimensionar fotos

    O maior valor de largura ou altura da imagem original é redimensionado para o valor definido pelo usuário. O lado menor é redimensionado proporcionalmente.
    Obs.: Os metadados são preservados.

    Relevo

    Diferença de MDE

    Esta ferramenta executa a diferença entre dois Modelos Digitais de Elevação (MDE).
    Minuendo é o raster a ser subtraído.
    Subtraendo é o rastar que está subtraindo.

    Exportar MDE como Texto

    Esta ferramenta exporta um Modelo Digital de Elevação (MDE) como um arquivo de texto (txt) para posterior transformação em nuvem de pontos.
    Opcionalmente, as cores RGB associadas do Ortomosaico podem ser levadas para o arquivo de texto.

    Filtro de MDE

    Esta ferramenta aplica a técnica de filtragem no Raster pixel a pixel, baseando-se nos valores dos níveis de cinza dos pixels vizinhos.
    O processo de filtragem é feito utilizando matrizes denominadas máscaras (ou kernel), as quais são aplicadas sobre a imagem.

    Gerar Pontos Cotados

    Esta ferramenta gera uma camada de pontos cotados gerados a partir de um raster correspondente ao Modelo Digital do Terreno e uma camada vetorial do tipo linha correspondente às curvas de nível.

    Vetor

    Calcular ângulos de polígono

    Este algoritmo calcula os ângulos internos e externos dos vértices de uma camada de polígonos. A camada de pontos de saída tem os ângulos calculados armazenados em sua tabela de atributos.

    Conectar camadas

    Gera novos vértices em polígonos para garantir a perfeita conectividade (topologia) entre duas camadas.

    Estender linhas

    Estende linhas nos seus pontos inicial e/ou final.

    Inverter ordem dos vértices

    Inverte a ordem dos vértices para polígonos e linhas.

    Linhas para polígono

    Esta ferramenta gera uma camada de polígono a partir de uma camada de linhas conectadas.

    Mesclar linhas na direção

    Este algoritmo mescla linhas que se tocam nos seus pontos inicial ou final e tem a mesma direção (dada uma tolerância em graus).

    Para os atributos pode ser considerado:

  • 1 - mesclar linhas que tenham os mesmos atributos; ou
  • 2 - manter os atributos da linha maior.
  • Pontos para polígono

    Esta ferramenta gera uma camada de polígono a partir de uma camada de pontos e seus atributos de ordem (sequência) preenchidos.

    Sequenciar linhas

    Este script preenche um determinado atributo das feições de uma camada do tipo linha de acordo com sua sequência de conectividade entre as linhas.

    Sequenciar pontos

    Este script preenche um determinado atributo das feições de uma camada de pontos de acordo com sua sequência em relação ao polígono de outra camada.

    Seções transversais

    Gera seções transversais a partir de uma camada do tipo linha.

    Sobreposição de polígonos

    Identifica a sobreposição entre feições de uma camada do tipo polígono.

    lftools's People

    Contributors

    leoxingu avatar mario-f-f avatar

    Stargazers

     avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

    Watchers

     avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

    lftools's Issues

    Erro import raster

    Olá, gostaria de saber como resolver esse problema, a minha versão do postgres é a 15 coloquei certinho no parâmetro, já adicionei as extensões no pgadmin4 mas não está importando o raster.
    Captura de tela 2024-02-07 081127

    Carregamento do aplicativo

    Olá Leandro,
    Parabéns pela iniciativa ! ! !

    Quando tento ativar o plugin recebo a seguinte mensagem :

    impossível carregar complemento 'lftools' Devido a um erro ao chamar o método Class Factory().

    ModuleNotFoundError: No module named 'xlwt'
    Traceback (most recent call last):
    File "/usr/lib/python3/dist-packages/qgis/utils.py", line 335, in _startPlugin
    plugins[packageName] = package.classFactory(iface)
    File "/home/emilio/.local/share/QGIS/QGIS3/profiles/emilio/python/plugins/lftools/init.py", line 38, in classFactory
    from .lftools import LFToolsPlugin
    File "/usr/lib/python3/dist-packages/qgis/utils.py", line 799, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
    File "/home/emilio/.local/share/QGIS/QGIS3/profiles/emilio/python/plugins/lftools/lftools.py", line 41, in
    from .lftools_provider import LFToolsProvider
    File "/usr/lib/python3/dist-packages/qgis/utils.py", line 799, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
    File "/home/emilio/.local/share/QGIS/QGIS3/profiles/emilio/python/plugins/lftools/lftools_provider.py", line 40, in
    from lftools.processing_provider.Survey_Estimate3dCoord import Estimate3dCoord
    File "/usr/lib/python3/dist-packages/qgis/utils.py", line 799, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
    File "/home/emilio/.local/share/QGIS/QGIS3/profiles/emilio/python/plugins/lftools/processing_provider/Survey_Estimate3dCoord.py", line 23, in
    import xlwt
    File "/usr/lib/python3/dist-packages/qgis/utils.py", line 799, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
    ModuleNotFoundError: No module named 'xlwt'

    Versão do Python: 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]
    Versão do QGIS: 3.18.1-Zürich Zürich, 202f1bf7e5

    Caminho do Python:
    /home/emilio/.local/share/QGIS/QGIS3/profiles/emilio/python/plugins/geometric_attributes
    /usr/share/qgis/python
    /home/emilio/.local/share/QGIS/QGIS3/profiles/emilio/python
    /home/emilio/.local/share/QGIS/QGIS3/profiles/emilio/python/plugins
    /usr/share/qgis/python/plugins
    /usr/lib/python38.zip
    /usr/lib/python3.8
    /usr/lib/python3.8/lib-dynload
    /home/emilio/.local/lib/python3.8/site-packages
    /usr/local/lib/python3.8/dist-packages
    /usr/lib/python3/dist-packages
    /home/emilio/.local/share/QGIS/QGIS3/profiles/emilio/python

    Um abraço,
    Emilio Bruno
    Caetité-BA

    Using lftools with QGIS Conda installation

    I installed QGIS 3.28.1 under miniconda on an Ubuntu 22.10 system. My issue related to the lftools plugin. I get the following error on running QGIS:

    Couldn't load plugin 'lftools' due to an error when calling its classFactory() method
    ModuleNotFoundError: No module named 'PIL'

    I added pillow on conda in a separate environment, thinking that this might help, but still get the same error.

    Any thoughts on how to fix this, or a workaround?

    The traceback information I get when running QGIS follows:

    Traceback (most recent call last):
    File "/home/david/miniconda3/envs/qgis/share/qgis/python/qgis/utils.py", line 423, in _startPlugin
    plugins[packageName] = package.classFactory(iface)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/home/david/.local/share/QGIS/QGIS3/profiles/default/python/plugins/lftools/init.py", line 38, in classFactory
    from .lftools import LFToolsPlugin
    File "/home/david/miniconda3/envs/qgis/share/qgis/python/qgis/utils.py", line 888, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/home/david/.local/share/QGIS/QGIS3/profiles/default/python/plugins/lftools/lftools.py", line 41, in
    from .lftools_provider import LFToolsProvider
    File "/home/david/miniconda3/envs/qgis/share/qgis/python/qgis/utils.py", line 888, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/home/david/.local/share/QGIS/QGIS3/profiles/default/python/plugins/lftools/lftools_provider.py", line 36, in
    from lftools.processing_provider.Cart_inom2utm import Inom2utmGrid
    File "/home/david/miniconda3/envs/qgis/share/qgis/python/qgis/utils.py", line 888, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/home/david/.local/share/QGIS/QGIS3/profiles/default/python/plugins/lftools/processing_provider/Cart_inom2utm.py", line 21, in
    from lftools.geocapt.imgs import Imgs
    File "/home/david/miniconda3/envs/qgis/share/qgis/python/qgis/utils.py", line 888, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/home/david/.local/share/QGIS/QGIS3/profiles/default/python/plugins/lftools/geocapt/imgs.py", line 17, in
    import math, os, base64, PIL.Image
    File "/home/david/miniconda3/envs/qgis/share/qgis/python/qgis/utils.py", line 888, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ModuleNotFoundError: No module named 'PIL'

    Python version: 3.11.0 | packaged by conda-forge | (main, Oct 25 2022, 06:35:31) [GCC 10.4.0]
    QGIS version: 3.28.1-Firenze Firenze, exported

    Python Path:
    /home/david/miniconda3/envs/qgis/share/qgis/python
    /home/david/.local/share/QGIS/QGIS3/profiles/default/python
    /home/david/.local/share/QGIS/QGIS3/profiles/default/python/plugins
    /home/david/miniconda3/envs/qgis/share/qgis/python/plugins
    /home/david/miniconda3/envs/qgis/share/qgis/python/plugins
    /home/david/miniconda3/envs/qgis/share/qgis/python
    /home/david
    /home/david/miniconda3/envs/qgis/lib/python311.zip
    /home/david/miniconda3/envs/qgis/lib/python3.11
    /home/david/miniconda3/envs/qgis/lib/python3.11/lib-dynload
    /home/david/miniconda3/envs/qgis/lib/python3.11/site-packages
    /home/david/.local/share/QGIS/QGIS3/profiles/default/python

    Icon LF tools não aparece na barra e o oplugin está instalado e seleccionado

    Bom dia Leandro,

    Em primeiro lugar os meus parabens pelo desenvoilvimento do plugin. Estou a tentar aceder ao plugin, mas apenas me aparece as ferramentas nas ferramentas de processamento. O botão do INDA não me aparece nas barras superiores e já tentei de tudo, sem sucesso.

    Os melhores cumprimentos,
    Luis Carlos Pereira

    Impossível carregar complemento 'lftools' Devido a um erro ao chamar o método Class Factory().

    ModuleNotFoundError: No module named 'PIL'
    Traceback (most recent call last):
    File "C:\OSGeo4W/apps/qgis-ltr/./python\qgis\utils.py", line 423, in startPlugin
    plugins[packageName] = package.classFactory(iface)
    File "C:\Users/Enio/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\lftools_init
    .py", line 38, in classFactory
    from .lftools import LFToolsPlugin
    File "C:\Users/Enio/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\ee_plugin_init_.py", line 32, in wrapping_ee_import
    module = builtin_import(name, *args, **kwargs)
    File "C:\OSGeo4W/apps/qgis-ltr/./python\qgis\utils.py", line 888, in _import
    mod = builtin_import(name, globals, locals, fromlist, level)
    File "C:\Users/Enio/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\lftools\lftools.py", line 41, in
    from .lftools_provider import LFToolsProvider
    File "C:\Users/Enio/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\ee_plugin_init
    .py", line 32, in wrapping_ee_import
    module = builtin_import(name, *args, **kwargs)
    File "C:\OSGeo4W/apps/qgis-ltr/./python\qgis\utils.py", line 888, in _import
    mod = builtin_import(name, globals, locals, fromlist, level)
    File "C:\Users/Enio/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\lftools\lftools_provider.py", line 36, in
    from lftools.processing_provider.Cart_inom2utm import Inom2utmGrid
    File "C:\Users/Enio/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\ee_plugin_init
    .py", line 32, in wrapping_ee_import
    module = builtin_import(name, *args, **kwargs)
    File "C:\OSGeo4W/apps/qgis-ltr/./python\qgis\utils.py", line 888, in _import
    mod = builtin_import(name, globals, locals, fromlist, level)
    File "C:\Users/Enio/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\lftools\processing_provider\Cart_inom2utm.py", line 21, in
    from lftools.geocapt.imgs import Imgs
    File "C:\Users/Enio/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\ee_plugin_init
    .py", line 32, in wrapping_ee_import
    module = builtin_import(name, *args, **kwargs)
    File "C:\OSGeo4W/apps/qgis-ltr/./python\qgis\utils.py", line 888, in _import
    mod = builtin_import(name, globals, locals, fromlist, level)
    File "C:\Users/Enio/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\lftools\geocapt\imgs.py", line 17, in
    import math, os, base64, PIL.Image
    File "C:\Users/Enio/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\ee_plugin_init
    .py", line 32, in wrapping_ee_import
    module = builtin_import(name, *args, **kwargs)
    File "C:\OSGeo4W/apps/qgis-ltr/./python\qgis\utils.py", line 888, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
    ModuleNotFoundError: No module named 'PIL'

    Versão do Python: 3.9.5 (tags/v3.9.5:0a7dcbd, May 3 2021, 17:27:52) [MSC v.1928 64 bit (AMD64)]
    Versão do QGIS: 3.22.5-Białowieża Białowieża, c27231782f

    Caminho do Python:
    C:/OSGeo4W/apps/qgis-ltr/./python
    C:/Users/Enio/AppData/Roaming/QGIS/QGIS3\profiles\default/python
    C:/Users/Enio/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins
    C:/OSGeo4W/apps/qgis-ltr/./python/plugins
    C:\OSGeo4W\bin\python39.zip
    C:\OSGeo4W\apps\Python39\DLLs
    C:\OSGeo4W\apps\Python39\lib
    C:\OSGeo4W\bin
    C:\OSGeo4W\apps\Python39
    C:\OSGeo4W\apps\Python39\lib\site-packages
    C:\OSGeo4W\apps\Python39\lib\site-packages\GDAL-3.4.2-py3.9-win-amd64.egg
    C:/Users/Enio/AppData/Roaming/QGIS/QGIS3\profiles\default/python
    C:\Users\Enio\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins\DsgTools

    Calcula los ángulos del polígono

    El algoritmos de "calcular ángulos poligonales" me sale un error

    image
    Solo es posible cuando se ejecuta en una capa de polígono TEMPORAL. Como podría realizar para un polígono que ya se ha creado anteriormente

    Calculate polygon angles

    The algorithm to calculate polygon angles does not work, it generates the following error:
    Traceback (most recent call last):
    File "C:\Users/criss/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\lftools\processing_provider\Vect_PolygonAngles.py", line 185, in processAlgorithm
    dd2dms(pntsDic[ponto]['alfa_int']),
    TypeError: dd2dms() missing 1 required positional argument: 'n_digits'

    Execution failed after 0.10 segundos

    Input data for 2D conformal transformation

    First of all, thanks for the great LF plugin!

    Could you specify how exactly the input data for the 2D conformal transformation should look like?

    • Input Vector layer: presumably >2 individual POINT geometries?
    • Vector Lines (two points): LINESTRING type or a csv list of POINT pairs? Which of these must correspond to the values in the input vector layer?

    An example would be much appreciated

    Tooltip missing image with distant pictures on a network folder

    First, thanks for this wonderful and multifonction plugin!

    With the Reambulation/Photos with geotag tool
    It seems that when you process pictures on a networked Windows drive, the tooltip is not rendered.
    No problem when the folder is on a local drive.

    Example
    When the picture folder is located on
    \\ZZZ356FA11\folder\PictureFolder\
    then in the tooltip properties
    <img src="file:///[%path%]" width="450">
    is not rendered on map

    It seems like a QGIS bug and not specifically a plugin bug but do you have any hints in tooltip redaction to make this working even on networked drive?
    (and making this function more resilient?)

    Error loading in QGIS 3.36.0

    TypeError
    QgsProcessingParameterNumber(): arguments did not match any overloaded call:
    
      overload 1: argument 'type' has unexpected type 'int'
      overload 2: argument 1 has unexpected type 'str'
    

    Traceback:

    # -*- coding: utf-8 -*-
    
    """
    Survey_LocalTangentPlane.py
    ***************************************************************************
    *                                                                         *
    *   This program is free software; you can redistribute it and/or modify  *
    *   it under the terms of the GNU General Public License as published by  *
    *   the Free Software Foundation; either version 2 of the License, or     *
    *   (at your option) any later version.                                   *
    *                                                                         *
    ***************************************************************************
    """
    __author__ = 'Leandro França'
    __date__ = '2019-10-28'
    __copyright__ = '(C) 2019, Leandro França'
    
    from PyQt5.QtCore import *
    from qgis.core import *
    import processing
    from numpy import sin, cos, sqrt, matrix, radians, arctan, pi, floor
    from pyproj.crs import CRS
    from lftools.geocapt.imgs import Imgs
    from lftools.geocapt.topogeo import geod2geoc, geoc2geod, geoc2enu, enu2geoc, dd2dms, dms2dd
    import os
    from qgis.PyQt.QtGui import QIcon
    
    
    class LocalTangentPlane(QgsProcessingAlgorithm):
    
        INPUT = 'INPUT'
        TABLE = 'TABLE'
        TYPE = 'TYPE'
        COORD1 = 'COORD1'
        COORD2 = 'COORD2'
        COORD3 = 'COORD3'
        GRS = 'GRS'
        LON_0 = 'LON_0'
        LAT_0 = 'LAT_0'
        H_0 = 'H_0'
        OUTPUT = 'OUTPUT'
    
        LOC = QgsApplication.locale()[:2]
    
        def translate(self, string):
            return QCoreApplication.translate('Processing', string)
    
        def tr(self, *string):
            # Traduzir para o portugês: arg[0] - english (translate), arg[1] - português
            if self.LOC == 'pt':
                if len(string) == 2:
                    return string[1]
                else:
                    return self.translate(string[0])
            else:
                return self.translate(string[0])
    
        def createInstance(self):
            return LocalTangentPlane()
    
        def name(self):
            return 'localtangentplane'
    
        def displayName(self):
            return self.tr('Local Geodetic System transform', 'Transformação para SGL')
    
        def group(self):
            return self.tr('Survey', 'Agrimensura')
    
        def groupId(self):
            return 'survey'
    
        def tags(self):
            return self.tr('survey,agrimensura,LGS,SGL,tangent,transform,geocentric,topocentric,ECEF,geodetic,geodesic,brazil').split(',')
    
        def icon(self):
            return QIcon(os.path.join(os.path.dirname(os.path.dirname(__file__)), 'images/total_station.png'))
    
        txt_en = '''
    This algorithm transforms coordinates between the following reference systems:
    - geodetic <b>(λ, ϕ, h)</b>;
    - geocentric or ECEF <b>(X, Y, Z)</b>; and
    - topocentric in a local tangent plane <b>(E, N, U)</b>.
    Default values for origin coordinates can be applied to Recife / Brazil.'''
        txt_pt = '''Este algoritmo transforma coordenadas entre os seguintes sistemas de referência:
    - Geodésico <b>(λ, ϕ, h)</b>
    - Geocêntrico ou ECEF <b>(X, Y, Z)</b>;
    - Topocêntrico <b>(E, N, U)</b>.
    Default: coordenadas de origem para Recife-PE, Brasil.'''
        figure = 'images/tutorial/survey_LTP.jpg'
    
        def shortHelpString(self):
            social_BW = Imgs().social_BW
            nota_en = '''Note: Example data obtained from Mendonça et al. (2010).
    Know more:'''
            nota_pt = '''Nota: Dados de exemplo obtidos de Mendonça et al. (2010).
    Saiba mais:'''
            footer = '''<div align="center">
                          <img src="'''+ os.path.join(os.path.dirname(os.path.dirname(__file__)), self.figure) +'''">
                          </div>
                          <div align="right">
                          <div>''' + self.tr(nota_en, nota_pt) + '''
                          </div>
                          <p align="right">
                          <b><a href="https://geoone.com.br/sistema-geodesico-local/" target="_blank">'''+self.tr('Local Geodetic System (LGS)', 'Sistema Geodésico Local (SGL)') + '''</b>
                                        ''' +'</a><br><b>'+ self.tr('Author: Leandro Franca', 'Autor: Leandro França')+'''</b>
                          </p>'''+ social_BW + '''</div>
                        </div>'''
            return self.tr(self.txt_en, self.txt_pt) + footer
    
        def initAlgorithm(self, config=None):
            # INPUT
            self.addParameter(
                QgsProcessingParameterFeatureSource(
                    self.TABLE,
                    self.tr('Table of coordinates', 'Tabela de coordenadas'),
                    [QgsProcessing.TypeVector]
                )
            )
    
            types = [ self.tr('lon, lat, h'),
                          self.tr('X, Y, Z'),
                          self.tr('E, N, U')
                   ]
    
            self.addParameter(
                QgsProcessingParameterEnum(
                    self.TYPE,
                    self.tr('Input Coordinates type', 'Tipo de Coordenadas de Entrada'),
    				options = types,
                    defaultValue= 0
                )
            )
    
            self.addParameter(
                QgsProcessingParameterField(
                    self.COORD1,
                    self.tr('Lon, X or E field', 'Campo Lon, X ou E'),
                    parentLayerParameterName=self.TABLE,
                    type=QgsProcessingParameterField.Numeric
                )
            )
    
            self.addParameter(
                QgsProcessingParameterField(
                    self.COORD2,
                    self.tr('Lat, Y or N field', 'Campo Lat, Y ou N'),
                    parentLayerParameterName=self.TABLE,
                    type=QgsProcessingParameterField.Numeric
                )
            )
    
            self.addParameter(
                QgsProcessingParameterField(
                    self.COORD3,
                    self.tr('h, Z or U field', 'Campo h, Z ou U'),
                    parentLayerParameterName=self.TABLE,
                    type=QgsProcessingParameterField.Numeric
                )
            )
    
            self.addParameter(
                QgsProcessingParameterCrs(
                    self.GRS,
                    self.tr('Ellipsoid parameters', 'Parâmetros do Elipsoide'),
                    QgsCoordinateReferenceSystem('EPSG:4674')
                )
            )
    
            self.addParameter(
                QgsProcessingParameterString(
                    self.LON_0,
                    self.tr('Origin Longitude (λ)', 'Longitude (λ) da Origem'),
                    defaultValue = '''-34°57'05.45910"'''
                )
            )
    
            self.addParameter(
                QgsProcessingParameterString(
                    self.LAT_0,
                    self.tr('Origin Latitude (ϕ)', 'Latitude (ϕ) da Origem'),
                    defaultValue = '''-8°03'03.46970"'''
                )
            )
    
            self.addParameter(
                QgsProcessingParameterNumber(
                    self.H_0,
                    self.tr('Origin Elipsoid Height (h)', 'Altitude (h) da Origem'),
                    type=1, #Double = 1 and Integer = 0
                    defaultValue = 4.217
                )
            )
    
            # OUTPUT
            self.addParameter(
                QgsProcessingParameterFeatureSink(
                    self.OUTPUT,
                    self.tr('Transformed Coordinates', 'Coordenadas Transformadas')
                )
            )
    
        def processAlgorithm(self, parameters, context, feedback):
    
            # Tabela de coordenadas
            table = self.parameterAsSource(
                parameters,
                self.TABLE,
                context
            )
            if table is None:
                raise QgsProcessingException(self.invalidSourceError(parameters, self.TABLE))
    
            # Tipo de Coordenadas
            tipo = self.parameterAsEnum(
                parameters,
                self.TYPE,
                context
            )
            if tipo < 0 or tipo >2:
                raise QgsProcessingException(self.invalidSourceError(parameters, self.TYPE))
    
            # Coordenadas
            coord1 = self.parameterAsFields(
                parameters,
                self.COORD1,
                context
            )
            coord2 = self.parameterAsFields(
                parameters,
                self.COORD2,
                context
            )
            coord3 = self.parameterAsFields(
                parameters,
                self.COORD3,
                context
            )
    
            # Sistema Geodésico de Referência
            GRS = self.parameterAsCrs(
                parameters,
                self.GRS,
                context
            )
    
            # Coordenadas da Origem (lon, lat, h)
            lon0 = self.parameterAsString(
                parameters,
                self.LON_0,
                context
            )
            lon0 = dms2dd(lon0)
            if lon0 < -180 or lon0 >180:
                raise QgsProcessingException('Invalid Longitude')
    
            lat0 = self.parameterAsString(
                parameters,
                self.LAT_0,
                context
            )
            lat0 = dms2dd(lat0)
            if lat0 < -90 or lat0 >90:
                raise QgsProcessingException('Invalid Latitude')
    
            h0 = self.parameterAsDouble(
                parameters,
                self.H_0,
                context
            )
            if h0 < -1e3 or h0 >1e4:
                raise QgsProcessingException('Invalid Height')
    
    
            # OUTPUT
            # Camada de Saída
            GeomType = QgsWkbTypes.Point
            Fields = QgsFields()
            itens  = {
                         'lon' : QVariant.Double,
                         'lon_dms' : QVariant.String,
                         'lat':  QVariant.Double,
                         'lat_dms':  QVariant.String,
                         'h': QVariant.Double,
                         'X':  QVariant.Double,
                         'Y': QVariant.Double,
                         'Z': QVariant.Double,
                         'E': QVariant.Double,
                         'N': QVariant.Double,
                         'U': QVariant.Double
                         }
    
            field_list = []
            for field in table.fields():
                if field.name() not in itens:
                    Fields.append(field)
                    field_list += [field.name()]
    
            for item in itens:
                Fields.append(QgsField(item, itens[item]))
    
            (sink, dest_id) = self.parameterAsSink(
                parameters,
                self.OUTPUT,
                context,
                Fields,
                GeomType,
                GRS
            )
            if sink is None:
                raise QgsProcessingException(self.invalidSinkError(parameters, self.OUTPUT))
    
            # Parâmetros a e f do elipsoide
            EPSG = int(GRS.authid().split(':')[-1]) # pegando o EPGS do SRC do QGIS
            proj_crs = CRS.from_epsg(EPSG) # transformando para SRC do pyproj
            a=proj_crs.ellipsoid.semi_major_metre
            f_inv = proj_crs.ellipsoid.inverse_flattening
            f=1/f_inv
            feedback.pushInfo((self.tr('Semi major axis: {}', 'Semi-eixo maior: {}')).format(str(a)))
            feedback.pushInfo((self.tr('Inverse flattening: {}', 'Achatamento (inverso): {}')).format(str(f_inv)))
    
            Xo, Yo, Zo = geod2geoc(lon0, lat0, h0, a, f)
    
            # Field index
            coord1_id = table.fields().indexFromName(coord1[0])
            coord2_id = table.fields().indexFromName(coord2[0])
            coord3_id = table.fields().indexFromName(coord3[0])
    
            # Gerar output
            total = 100.0 / table.featureCount() if table.featureCount() else 0
            for current, feature in enumerate(table.getFeatures()):
                att = feature.attributes()
                coord1 = att[coord1_id]
                coord2 = att[coord2_id]
                coord3 = att[coord3_id]
                if tipo == 0: #(lon,lat,h)
                    lon, lat, h = coord1, coord2, coord3
                    X, Y, Z = geod2geoc(lon, lat, h, a, f)
                    E, N, U = geoc2enu(X, Y, Z, lon0, lat0, Xo, Yo, Zo)
                elif tipo == 1: #(X,Y,Z)
                    X, Y, Z = coord1, coord2, coord3
                    lon, lat, h = geoc2geod(X, Y, Z, a, f)
                    E, N, U = geoc2enu(X, Y, Z, lon0, lat0, Xo, Yo, Zo)
                elif tipo == 2: #(E,N,U)
                    E, N, U = coord1, coord2, coord3
                    X, Y, Z = enu2geoc(E, N, U, lon0, lat0, Xo, Yo, Zo)
                    lon, lat, h = geoc2geod(X, Y, Z, a, f)
    
                feat = QgsFeature(Fields)
                itens  = {
                             'lon' : float(lon),
                             'lon_dms' : dd2dms(float(lon),5),
                             'lat':  float(lat),
                             'lat_dms':  dd2dms(float(lat),5),
                             'h': float(h),
                             'X':  float(X),
                             'Y': float(Y),
                             'Z': float(Z),
                             'E': float(E),
                             'N': float(N),
                             'U': float(U)
                             }
    
                for item in itens:
                    feat[item] = itens[item]
    
                for item in field_list: # atributos antigos
                    feat[item] = feature[item]
    
                geom = QgsGeometry.fromPointXY(QgsPointXY(lon, lat))
                feat.setGeometry(geom)
                sink.addFeature(feat, QgsFeatureSink.FastInsert)
                if feedback.isCanceled():
                    break
                feedback.setProgress(int(current * total))
    
            feedback.pushInfo(self.tr('Operation completed successfully!', 'Operação finalizada com sucesso!'))
            feedback.pushInfo(self.tr('Leandro Franca - Cartographic Engineer','Leandro França - Eng Cart'))
            return {self.OUTPUT: dest_id}
    
    

    Impossível carregar complemento 'lftools' Devido a um erro ao chamar o método Class Factory().

    Olá, Leandro.
    Meu LF tools não está rodando.
    Aparece o seguinte erro:
    .
    Impossível carregar complemento 'lftools' Devido a um erro ao chamar o método Class Factory().

    ImportError: numpy.core.multiarray failed to import
    Traceback (most recent call last):
    File "C:\PROGRA1/QGIS331.2/apps/qgis/./python\qgis\utils.py", line 423, in startPlugin
    plugins[packageName] = package.classFactory(iface)
    File "C:\Users/Usuário/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\lftools_init
    .py", line 38, in classFactory
    from .lftools import LFToolsPlugin
    File "C:\PROGRA1/QGIS331.2/apps/qgis/./python\qgis\utils.py", line 888, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
    File "C:\Users/Usuário/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\lftools\lftools.py", line 41, in
    from .lftools_provider import LFToolsProvider
    File "C:\PROGRA1/QGIS331.2/apps/qgis/./python\qgis\utils.py", line 888, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
    File "C:\Users/Usuário/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\lftools\lftools_provider.py", line 49, in
    from .processing_provider.Rast_Bands2RGB import Bands2RGB
    File "C:\PROGRA1/QGIS331.2/apps/qgis/./python\qgis\utils.py", line 888, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
    File "C:\Users/Usuário/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\lftools\processing_provider\Rast_Bands2RGB.py", line 47, in
    from osgeo import osr, gdal_array, gdal
    File "C:\PROGRA1/QGIS331.2/apps/qgis/./python\qgis\utils.py", line 888, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
    File "C:\PROGRA1\QGIS331.2\apps\Python39\lib\site-packages\osgeo\gdal_array.py", line 13, in
    from . import _gdal_array
    File "C:\PROGRA1/QGIS331.2/apps/qgis/./python\qgis\utils.py", line 888, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
    ImportError: numpy.core.multiarray failed to import

    Versão do Python: 3.9.5 (tags/v3.9.5:0a7dcbd, May 3 2021, 17:27:52) [MSC v.1928 64 bit (AMD64)]
    Versão do QGIS: 3.30.2-'s-Hertogenbosch 's-Hertogenbosch, 0992b533

    Caminho do Python:
    C:\Users/Usuário/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\HTML_Generator-main
    C:\Users/Usuário/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\GeoINCRA
    C:\Users/Usuário/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\contour
    C:/PROGRA1/QGIS331.2/apps/qgis/./python
    C:/Users/Usuário/AppData/Roaming/QGIS/QGIS3\profiles\default/python
    C:/Users/Usuário/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins
    C:/PROGRA1/QGIS331.2/apps/qgis/./python/plugins
    C:\PROGRA1\QGIS331.2\apps\grass\grass82\etc\python
    C:\WINDOWS\system32
    C:\Program Files\QGIS 3.30.2\bin\python39.zip
    C:\PROGRA1\QGIS331.2\apps\Python39\DLLs
    C:\PROGRA1\QGIS331.2\apps\Python39\lib
    C:\Program Files\QGIS 3.30.2\bin
    C:\Users\Usuário\AppData\Roaming\Python\Python39\site-packages
    C:\PROGRA1\QGIS331.2\apps\Python39
    C:\PROGRA1\QGIS331.2\apps\Python39\lib\site-packages
    C:\PROGRA1\QGIS331.2\apps\Python39\lib\site-packages\win32
    C:\PROGRA1\QGIS331.2\apps\Python39\lib\site-packages\win32\lib
    C:\PROGRA1\QGIS331.2\apps\Python39\lib\site-packages\Pythonwin
    C:/Users/Usuário/AppData/Roaming/QGIS/QGIS3\profiles\default/python
    C:\Users\Usuário\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins\DigitizingTools\tools
    C:\Users\Usuário\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins\DigitizingTools
    C:\Users/Usuário/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\excel_sync\libs\xlrd-1.2.0-py2.py3-none-any.whl
    C:\Users/Usuário/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\excel_sync\libs\xlwt-1.3.0-py2.py3-none-any.whl
    C:\Users\Usuário\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins\HCMGIS/forms
    C:\Users/Usuário/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\inde
    C:\Users\Usuário\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins\kmltools\libs
    C:\Users/Usuário/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\qgis2web
    C:\Users\Usuário\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins
    C:\Users/Usuário/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\rvt-qgis

    Merge lines in direction error

    Merge lines in direction produces this rather incomprehensible error if there is a line that starts and ends at the same point:

    Calculating feature informations...
    Merging lines...
    Saving output...
    Traceback (most recent call last):
    File "C:\Users/alister/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\lftools\processing_provider\Vect_DirectionalMerge.py", line 334, in processAlgorithm
    fet.setGeometry(QgsGeometry.fromPolylineXY(item[0]))
    TypeError: index 0 has type 'float' but 'QgsPointXY' is expected
    
    Execution failed after 0.01 seconds
    

    Recommend Projects

    • React photo React

      A declarative, efficient, and flexible JavaScript library for building user interfaces.

    • Vue.js photo Vue.js

      🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

    • Typescript photo Typescript

      TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

    • TensorFlow photo TensorFlow

      An Open Source Machine Learning Framework for Everyone

    • Django photo Django

      The Web framework for perfectionists with deadlines.

    • D3 photo D3

      Bring data to life with SVG, Canvas and HTML. 📊📈🎉

    Recommend Topics

    • javascript

      JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

    • web

      Some thing interesting about web. New door for the world.

    • server

      A server is a program made to process requests and deliver data to clients.

    • Machine learning

      Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

    • Game

      Some thing interesting about game, make everyone happy.

    Recommend Org

    • Facebook photo Facebook

      We are working to build community through open source technology. NB: members must have two-factor auth.

    • Microsoft photo Microsoft

      Open source projects and samples from Microsoft.

    • Google photo Google

      Google ❤️ Open Source for everyone.

    • D3 photo D3

      Data-Driven Documents codes.