6 votos

Cómo comenzar con gis desarrollo de herramientas para el pasto o hierba de QGIS

Quería comenzar con el desarrollo de la herramienta personalizada en césped Grass GIS o QGIS. Cómo debo comenzar en desarrollar la herramienta. Buscar mucho en google motor de búsqueda para comenzar con el desarrollo de la herramienta en césped Grass GIS o QGIS. Alguien por favor me puede ayudar en el proceso de desarrollo de la herramienta en la hierba.

10voto

moffdub Puntos 3757

Si usted desea desarrollar un módulo de GRASS GIS como una secuencia de comandos de Python o simplemente una secuencia de comandos que utiliza GRASS GIS (que es, de hecho, casi el mismo), empezar con http://grasswiki.osgeo.org/wiki/GRASS_and_Python.

Usted necesita estar en el CÉSPED de la sesión y el inicio de una secuencia de comandos de Python a partir de allí, entonces usted puede importar

from grass.script import core as gcore

que permite llamar a HIERBA módulos/comandos como este:

return_code = gcore.run_command('r.lake', elevation=elevation,
                                lake=outputs[i], xy=coordinates,
                                wl=water_level)

El resto es solo la normal de Python. Sin embargo, si desea que su secuencia de comandos para tener parámetros de línea de comandos, es una gran idea para el uso de la HIERBA mecanismo para procesar los parámetros de línea de comandos porque al mismo tiempo que se volvió su secuencia de comandos de Python en la HIERBA módulo. Aquí está el código de ejemplo de un módulo completo:

#!/usr/bin/env python

#%module
#% description: Fills lake at given point(s) to given levels
#% keywords: raster
#% keywords: hydrology
#%end
#%option G_OPT_R_ELEV
#%end
#%option
#% key: output
#% type: string
#% label: Basename for output maps
#% description: Maps will start with this basename
#%end
#%option
#% key: start_water_level
#% type: double
#% label: Start water level
#% description: Initial water level at the start of the simulation
#% required: yes
#% guisection: Water
#%end
#%option
#% key: end_water_level
#% type: double
#% label: Final (maximal) water level
#% description: Maximal water level to be reached
#% required: yes
#% guisection: Water
#%end
#%option G_OPT_M_COORDS
#% label: Seed point coordinates
#% description: Either this coordinates pair or a seed map name have to be specified
#% required: no
#% guisection: Water
#%end


import sys

from grass.script import core as gcore


def frange(x, y, step):
    while x <= y:
        yield x
        x += step


def main():
    options, flags = gcore.parser()

    elevation = options['elevation']
    basename = options['output']
    start_water_level = float(options['start_water_level'])
    end_water_level = float(options['end_water_level'])
    water_level_step = 0.5
    coordinates = options['coordinates']

    water_levels = [step for step in frange(start_water_level,
                                            end_water_level, water_level_step)]
    outputs = ['%s%s%s' % (basename, '_', water_level)
               for water_level in water_levels]

    for i, water_level in enumerate(water_levels):
        return_code = gcore.run_command('r.lake', elevation=elevation,
                                        lake=outputs[i], xy=coordinates,
                                        wl=water_level)

if __name__ == '__main__':
    sys.exit(main())

El #! línea permite la ejecución en sistemas tipo unix, sin explícitamente usando el intérprete de Python en la línea de comandos. El #% líneas son utilizados por la HIERBA para analizar las opciones y los incluya en options, flags = gcore.parser() diccionarios. El resto del código, en este caso, es la computación de diferente nivel del agua, que se utiliza como una entrada a la HIERBA, r.lake módulo que simula lo que se inundan cuando el agua tiene cierto nivel en DEM. Este script es una versión simple de r.lake.series HIERBA addon (de la fuente que usted puede buscar en google usando svn r.lake.series y encontrar la manera de comprobar los parámetros, eliminar mapas, incluye licencia y autores).

Puede ejecutar esta secuencia de comandos/módulo:

# inside GRASS GIS session (command line)
python ~/myscripts/r.lake.series.simple.py --help
python ~/myscripts/r.lake.series.simple.py elevation=elevation output=lake start=15 end=18 coor=548841.585956,4388325.94431

Si usted desea desarrollar un módulo de GRASS GIS como programa escrito en C o C++, empezar con http://grass.osgeo.org/development/how-to-start/ y verificación de los módulos de la muestra en la HIERBA código fuente (doc/raster/r.example/ y doc/vector/v.example/).

Tenga en cuenta que la API en C de las funciones son accesibles en Python a través de ctypes y, hablando de GRASS GIS 7, hay también un interfaz Python llamada PyGRASS, por lo que en Python se puede usar todas las cosas disponibles en la HIERBA C API.

En QGIS puede usar QGIS Procesamiento. Cómo utilizar la función de secuencias de comandos se describe en Documentation for QGIS 2.0 -> User guide/Manual -> QGIS processing framework -> Using processing algorithms from the console (No puedo utilizar el enlace ahora). Básicamente, importe processing módulo y uso runalg función de:

import processing
...
processing.runalg('algorithm_name', params, ..., and_outputs, ...)

Este supongamos que usted tiene QGIS configurado con la HIERBA y que conocen los parámetros y salidas del algoritmo (esto se puede encontrar también el uso de processing funciones tales como algoptions y alghelp).

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