How to move a layer position on the layers order Planned maintenance scheduled April 23, 2019 at 00:00UTC (8:00pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?How to move layers in the Layer Order Panel using PyQGIS?Using Python to set text for a label in a QGIS3 print layout labelCreating and manipulating an HTML frame in QGIS 3.2.0 Print Composer using PyQGISUnable to export map with PyQGIS 3PyQGIS import csv- QGIS 3.4Getting field index from input vector layer in PyQGIS?Writing pyQGIS 3 script to modify layer (add field and feel it) inside QGIS?PyQGIS - Managing print layoutsQGIS Processing Script Stops Working After First Runpyqgis 3:how to identify partial intersections between a buffer (polygon) layer and pipe (line) layer?Selecting layers in PyQGIS
Why doesn't SQL Optimizer use my constraint?
Hangman Game with C++
Why is my ESD wriststrap failing with nitrile gloves on?
An adverb for when you're not exaggerating
Is grep documentation about ignoring case wrong, since it doesn't ignore case in filenames?
Benefits of using sObject.clone versus creating a new record
How do living politicians protect their readily obtainable signatures from misuse?
I want to run a python3 script on startup and in an endless loop on my raspberry pi
Multiple OR (||) Conditions in If Statement
Effects on objects due to a brief relocation of massive amounts of mass
What do you call the main part of a joke?
Is it ethical to give a final exam after the professor has quit before teaching the remaining chapters of the course?
How do I find out the mythology and history of my Fortress?
NumericArray versus PackedArray in MMA12
Crossing US/Canada Border for less than 24 hours
If windows 7 doesn't support WSL, then what does Linux subsystem option mean?
Physics no longer uses mechanical models to describe phenomena
Should I follow up with an employee I believe overracted to a mistake I made?
What is a fractional matching?
Using audio cues to encourage good posture
Denied boarding although I have proper visa and documentation. To whom should I make a complaint?
How does light 'choose' between wave and particle behaviour?
Why is it faster to reheat something than it is to cook it?
Project Euler #1 in C++
How to move a layer position on the layers order
Planned maintenance scheduled April 23, 2019 at 00:00UTC (8:00pm US/Eastern)
Announcing the arrival of Valued Associate #679: Cesar Manara
Unicorn Meta Zoo #1: Why another podcast?How to move layers in the Layer Order Panel using PyQGIS?Using Python to set text for a label in a QGIS3 print layout labelCreating and manipulating an HTML frame in QGIS 3.2.0 Print Composer using PyQGISUnable to export map with PyQGIS 3PyQGIS import csv- QGIS 3.4Getting field index from input vector layer in PyQGIS?Writing pyQGIS 3 script to modify layer (add field and feel it) inside QGIS?PyQGIS - Managing print layoutsQGIS Processing Script Stops Working After First Runpyqgis 3:how to identify partial intersections between a buffer (polygon) layer and pipe (line) layer?Selecting layers in PyQGIS
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I am looking for a way of moving a layer to the top of the layer order once another layer is loaded. Using the following code extracted from this answer I get the error: AttributeError: 'QgsLayerTreeMapCanvasBridge' object has no attribute 'customLayerOrder'
shapeindex = self.iface.mapCanvas().currentLayer()
bridge = self.iface.QgslayerTreeCanvasBridge()
order = bridge.customLayerOrder()
order.inster(0, order.pop(order.index(shapeindex.id())))
bridge.setCustomLayerOrder(order)
I looked into pyqgis3 documentation but it doesn't show more than the function name: QgsLayerTreeMapCanvasBridge
qgis-3 pyqgis-3 python-3
add a comment |
I am looking for a way of moving a layer to the top of the layer order once another layer is loaded. Using the following code extracted from this answer I get the error: AttributeError: 'QgsLayerTreeMapCanvasBridge' object has no attribute 'customLayerOrder'
shapeindex = self.iface.mapCanvas().currentLayer()
bridge = self.iface.QgslayerTreeCanvasBridge()
order = bridge.customLayerOrder()
order.inster(0, order.pop(order.index(shapeindex.id())))
bridge.setCustomLayerOrder(order)
I looked into pyqgis3 documentation but it doesn't show more than the function name: QgsLayerTreeMapCanvasBridge
qgis-3 pyqgis-3 python-3
add a comment |
I am looking for a way of moving a layer to the top of the layer order once another layer is loaded. Using the following code extracted from this answer I get the error: AttributeError: 'QgsLayerTreeMapCanvasBridge' object has no attribute 'customLayerOrder'
shapeindex = self.iface.mapCanvas().currentLayer()
bridge = self.iface.QgslayerTreeCanvasBridge()
order = bridge.customLayerOrder()
order.inster(0, order.pop(order.index(shapeindex.id())))
bridge.setCustomLayerOrder(order)
I looked into pyqgis3 documentation but it doesn't show more than the function name: QgsLayerTreeMapCanvasBridge
qgis-3 pyqgis-3 python-3
I am looking for a way of moving a layer to the top of the layer order once another layer is loaded. Using the following code extracted from this answer I get the error: AttributeError: 'QgsLayerTreeMapCanvasBridge' object has no attribute 'customLayerOrder'
shapeindex = self.iface.mapCanvas().currentLayer()
bridge = self.iface.QgslayerTreeCanvasBridge()
order = bridge.customLayerOrder()
order.inster(0, order.pop(order.index(shapeindex.id())))
bridge.setCustomLayerOrder(order)
I looked into pyqgis3 documentation but it doesn't show more than the function name: QgsLayerTreeMapCanvasBridge
qgis-3 pyqgis-3 python-3
qgis-3 pyqgis-3 python-3
asked Apr 10 at 18:53
ThriskelThriskel
859
859
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
If you look at the documentation, you can see the changes in the API.
https://qgis.org/api/api_break.html#qgis_api_break_3_0_QgsLayerTreeMapCanvasBridge
Using your example you must use this
vlayer = iface.activeLayer()
root = QgsProject.instance().layerTreeRoot()
root.setHasCustomLayerOrder (True)
order = root.customLayerOrder()
order.insert(0, order.pop( order.index( vlayer ) ) ) # vlayer to the top
root.setCustomLayerOrder( order )
but this code change the order in which layers will be rendered on the canvas,it doesn't physically move.If you want move physically need something like this:
alayer = QgsProject.instance().mapLayersByName("trails")[0]
root = QgsProject.instance().layerTreeRoot()
# Move Layer
myalayer = root.findLayer(alayer.id())
myClone = myalayer.clone()
parent = myalayer.parent()
parent.insertChildNode(0, myClone)
parent.removeChildNode(myalayer)
or for automatic update
def rearrange( layers ):
root = QgsProject.instance().layerTreeRoot()
order = root.customLayerOrder()
for layer in layers: # How many layers we need to move
order.insert( 0, order.pop() ) # Last layer to first position
root.setCustomLayerOrder( order )
QgsProject.instance().legendLayersAdded.connect( rearrange )
I hope it helps you
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "79"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f318421%2fhow-to-move-a-layer-position-on-the-layers-order%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
If you look at the documentation, you can see the changes in the API.
https://qgis.org/api/api_break.html#qgis_api_break_3_0_QgsLayerTreeMapCanvasBridge
Using your example you must use this
vlayer = iface.activeLayer()
root = QgsProject.instance().layerTreeRoot()
root.setHasCustomLayerOrder (True)
order = root.customLayerOrder()
order.insert(0, order.pop( order.index( vlayer ) ) ) # vlayer to the top
root.setCustomLayerOrder( order )
but this code change the order in which layers will be rendered on the canvas,it doesn't physically move.If you want move physically need something like this:
alayer = QgsProject.instance().mapLayersByName("trails")[0]
root = QgsProject.instance().layerTreeRoot()
# Move Layer
myalayer = root.findLayer(alayer.id())
myClone = myalayer.clone()
parent = myalayer.parent()
parent.insertChildNode(0, myClone)
parent.removeChildNode(myalayer)
or for automatic update
def rearrange( layers ):
root = QgsProject.instance().layerTreeRoot()
order = root.customLayerOrder()
for layer in layers: # How many layers we need to move
order.insert( 0, order.pop() ) # Last layer to first position
root.setCustomLayerOrder( order )
QgsProject.instance().legendLayersAdded.connect( rearrange )
I hope it helps you
add a comment |
If you look at the documentation, you can see the changes in the API.
https://qgis.org/api/api_break.html#qgis_api_break_3_0_QgsLayerTreeMapCanvasBridge
Using your example you must use this
vlayer = iface.activeLayer()
root = QgsProject.instance().layerTreeRoot()
root.setHasCustomLayerOrder (True)
order = root.customLayerOrder()
order.insert(0, order.pop( order.index( vlayer ) ) ) # vlayer to the top
root.setCustomLayerOrder( order )
but this code change the order in which layers will be rendered on the canvas,it doesn't physically move.If you want move physically need something like this:
alayer = QgsProject.instance().mapLayersByName("trails")[0]
root = QgsProject.instance().layerTreeRoot()
# Move Layer
myalayer = root.findLayer(alayer.id())
myClone = myalayer.clone()
parent = myalayer.parent()
parent.insertChildNode(0, myClone)
parent.removeChildNode(myalayer)
or for automatic update
def rearrange( layers ):
root = QgsProject.instance().layerTreeRoot()
order = root.customLayerOrder()
for layer in layers: # How many layers we need to move
order.insert( 0, order.pop() ) # Last layer to first position
root.setCustomLayerOrder( order )
QgsProject.instance().legendLayersAdded.connect( rearrange )
I hope it helps you
add a comment |
If you look at the documentation, you can see the changes in the API.
https://qgis.org/api/api_break.html#qgis_api_break_3_0_QgsLayerTreeMapCanvasBridge
Using your example you must use this
vlayer = iface.activeLayer()
root = QgsProject.instance().layerTreeRoot()
root.setHasCustomLayerOrder (True)
order = root.customLayerOrder()
order.insert(0, order.pop( order.index( vlayer ) ) ) # vlayer to the top
root.setCustomLayerOrder( order )
but this code change the order in which layers will be rendered on the canvas,it doesn't physically move.If you want move physically need something like this:
alayer = QgsProject.instance().mapLayersByName("trails")[0]
root = QgsProject.instance().layerTreeRoot()
# Move Layer
myalayer = root.findLayer(alayer.id())
myClone = myalayer.clone()
parent = myalayer.parent()
parent.insertChildNode(0, myClone)
parent.removeChildNode(myalayer)
or for automatic update
def rearrange( layers ):
root = QgsProject.instance().layerTreeRoot()
order = root.customLayerOrder()
for layer in layers: # How many layers we need to move
order.insert( 0, order.pop() ) # Last layer to first position
root.setCustomLayerOrder( order )
QgsProject.instance().legendLayersAdded.connect( rearrange )
I hope it helps you
If you look at the documentation, you can see the changes in the API.
https://qgis.org/api/api_break.html#qgis_api_break_3_0_QgsLayerTreeMapCanvasBridge
Using your example you must use this
vlayer = iface.activeLayer()
root = QgsProject.instance().layerTreeRoot()
root.setHasCustomLayerOrder (True)
order = root.customLayerOrder()
order.insert(0, order.pop( order.index( vlayer ) ) ) # vlayer to the top
root.setCustomLayerOrder( order )
but this code change the order in which layers will be rendered on the canvas,it doesn't physically move.If you want move physically need something like this:
alayer = QgsProject.instance().mapLayersByName("trails")[0]
root = QgsProject.instance().layerTreeRoot()
# Move Layer
myalayer = root.findLayer(alayer.id())
myClone = myalayer.clone()
parent = myalayer.parent()
parent.insertChildNode(0, myClone)
parent.removeChildNode(myalayer)
or for automatic update
def rearrange( layers ):
root = QgsProject.instance().layerTreeRoot()
order = root.customLayerOrder()
for layer in layers: # How many layers we need to move
order.insert( 0, order.pop() ) # Last layer to first position
root.setCustomLayerOrder( order )
QgsProject.instance().legendLayersAdded.connect( rearrange )
I hope it helps you
answered Apr 11 at 9:37
Fran RagaFran Raga
3,42311123
3,42311123
add a comment |
add a comment |
Thanks for contributing an answer to Geographic Information Systems Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f318421%2fhow-to-move-a-layer-position-on-the-layers-order%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown