Last active
May 4, 2018 15:02
-
-
Save ClemRz/e08d856ca93502b8fa3f16ad531110a5 to your computer and use it in GitHub Desktop.
This python script can be used in QGIS actions. It allows to run a specific code on the very las feature when clicking on a stack of features.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from PyQt4.QtCore import QSettings | |
class Selection(QgsMapTool): | |
def __init__(self, canvas, layer): | |
QgsMapTool.__init__(self, canvas) | |
self.canvas = canvas | |
self.layer = layer | |
def getFeatureRequest(self): | |
sr = self.searchRadiusMU(self.canvas) | |
r = QgsRectangle() | |
r.setXMinimum([%$clickx%] - sr) | |
r.setXMaximum([%$clickx%] + sr) | |
r.setYMinimum([%$clicky%] - sr) | |
r.setYMaximum([%$clicky%] + sr) | |
r = self.toLayerCoordinates(self.layer, r) | |
return QgsFeatureRequest().setFilterRect(r).setFlags(QgsFeatureRequest.ExactIntersect) | |
def getFeaures(self): | |
return self.layer.getFeatures(self.getFeatureRequest()) | |
def getLastFeature(self): | |
feature = QgsFeature() | |
features = self.layer.getFeatures(self.getFeatureRequest()) | |
for feature in features: | |
pass | |
return feature | |
def getLastFeatureId(self): | |
return self.getLastFeature().id() | |
def qPrint(message): | |
txt = unicode(message) | |
if txt: | |
QgsMessageLog.logMessage(txt, tag="pics", level=QgsMessageLog.INFO) | |
def getLayer(): | |
return qgis.utils.iface.activeLayer() | |
def getCanvas(): | |
return qgis.utils.iface.mapCanvas() | |
def getFeature(): | |
feature = QgsFeature() | |
features = getLayer().getFeatures(QgsFeatureRequest([% $id %])) | |
features.nextFeature(feature) | |
return feature | |
if __name__=='__main__': | |
selection = Selection(getCanvas(), getLayer()) | |
currentId = getFeature().id() | |
if selection.getLastFeatureId() == currentId: | |
qPrint('This is the one at the top: ' + str(currentId)) | |
else: | |
qPrint('This is NOT the one at the top: ' + str(currentId)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment