1

I would like to put background border - with negative values - in my squere landscape in order to use in fragstats. I'm trying to do it with pyqgis. Exemple what I would like to do (figure 3).

So, I have a land use map (vector) and a grid (vector) (fig 1). I would like to clip land use map with this grid (one by one square grid) through pyqgis script. If possible I set this result in memory. In my code I set to save into temporary folder. I have to do it because I need to do many operations with a clipped land use separately in order to achieve the example result(figure 3) for my case. I try to do it with pyqgis but I dind't. There was a problem with my script. When I have run it, the land use didn't clip completely. What is the problem? The clip was running however it was only do in few polygons (fig 2). Figure 1: Vector Land use and grid

Figure 2: Clipped land use but only few polygons were clipped (red polygons)

Figure 3:Example of fragstats background with negative values around border square.

Here is my code:

# coding: utf-8
import processing 
from qgis.analysis import *
from PyQt4.QtGui import QInputDialog

#Defining vector land use patch
path_map = QgsVectorLayer("/media/dogosousa/56A22ED6A22EBA7F/
Geoprocessamento/Projetos_2015/Sisbiota/Vetor/Dados_Brutos/mapeamento_total.shp", "landscape use", "ogr")
try:
path_grid = QgsVectorLayer("/media/dogosousa/56A22ED6A22EBA7F/Geoprocessamento/Projetos_2015/Sisbiota/Vetor/buffer_square_point/square_3700m/square_3700m_join_sirgas200024S.shp", 
"grid", "ogr")

#Load layer grid into canvas
QgsMapLayerRegistry.instance().addMapLayers([path_grid])

#Doing loop in grid vector rows
canvas_layer = iface.activeLayer()

features = canvas_layer.getFeatures()

for feat in features:
    attrs = feat.attributes()
    print feat.id()
    print attrs[4]
    overlaylayer = path_grid.setSelectedFeatures([feat.id()])

    clip = processing.runalg("qgis:clip", path_grid,  path_map, "/tmp/"+"clip_"+str(attrs[4])+".shp")

except:
    #Conferir se a layer foi criada como esperado
    if not path_grid.isValid():
        print "Layer %s did not load" % path_grid.name()

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.