Giter Club home page Giter Club logo

lftools's People

Contributors

leoxingu 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

lftools's Issues

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

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

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

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}

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

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?)

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

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

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

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

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.