2 votos

Obtención de la ruta del archivo desde el objeto de capa vectorial en el marco de procesamiento de QGIS

Utilizando el marco de procesamiento de QGIS 3.x, dada una capa vectorial como parámetro de entrada:

(de la plantilla por defecto script)

def initAlgorithm(self, config=None):
    self.addParameter(
        QgsProcessingParameterFeatureSource(
            self.INPUT,
            self.tr('Input layer'),
            [QgsProcessing.TypeVectorAnyGeometry]
        )
    )

¿Cómo puedo obtener la ruta del archivo fuente de esta capa como una cadena (suponiendo que sólo se utilizarán fuentes de datos basadas en archivos, no tablas de PostGIS, etc.)?

7voto

Hady Elsahar Puntos 351

Pude obtener la ruta usando lo siguiente:

self.parameterDefinition('INPUT').valueAsPythonString(parameters['INPUT'], context)

1voto

Ievgen Puntos 96

Esta respuesta puede ser un poco fuera de tema, pero su pregunta sigue apareciendo mientras se buscan las respuestas del modelador gráfico.

Si está utilizando el modelador gráfico, puede utilizar la función de parámetros para recuperar una cadena de cualquier entrada. Desafortunadamente, no puedes usar la forma abreviada @parameter para acceder a los datos si quieres una cadena.

El siguiente código toma una carpeta de entrada (outputFolder) y una capa vectorial de entrada (dataFile) y produce una nueva cadena:

IF outputFolder == c: \temp AND dataFile == c: \someFolder\anotherFolder\SomeData.csv ENTONCES la salida será c: \temp\someData.gpkg

concat(
    @outputFolder,
    '\\',
    replace(file_name(to_string(parameter('dataFile'))),'.csv','.gpkg')
)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X