Hi Richard,

thank you for your response, you may have already given me a good hint. QGIS is 
started from another app with an empty/no project, and the default CRS is in 
effect (WGS84 here). My layers are in epsg:2169 (Luxembourg), so I definitely 
need to correct this. Since all layers are in 2169, I could set the project's 
CRS in the plugin ...
But here are the extents, grabbed from the console

georecord_layer extent:
<QgsRectangle: 79099.45521477346483152 74612.53163364417559933, 
79127.02656594294239767 74638.46575664929696359>

mapCanvas extent:
<QgsRectangle: -15656.28378378378693014 53925, 170656.28378378378693014 141075>

When I run setExtent in the console, it works ...
iface.mapCanvas().setExtent(plugin.georecord_layer.layer.extent())

I did set the QGIS default CRS to 2169 in the options, but this did not help 
unfortunately.

Many thanks,
Frank


-----Ursprüngliche Nachricht-----
Von: Richard Duivenvoorde <rdmaili...@duif.net> 
Gesendet: Dienstag, 20. Juni 2023 13:37
An: Frank Broniewski <broniew...@a-a.lu>; qgis-developer@lists.osgeo.org
Betreff: Re: [QGIS-Developer] PyQGIS zoom to layer not working

Hi Frank,

It really depends on:
- what is the crs of your project
- what is the crs of your layer
- if they match, it should work
- if they do not match you have to reproject the layer extent to the crs of the 
mapcanvas

I think the python console will be helpfull here.

While loaded, does the plugin have a handle to the actual QGIS layer?
If so, say it is called 'self.georecord_layer.layer' in the plugin.

Then you can do (in the console):

# first find out the name of your plugin qgis.utils.plugins # will show you all 
loaded layers AND there key/name # say your plugins name is 'franks_plugin'
# then
plugin = qgis.utils.plugins['franks_plugin']
# will give you a handle (in the console) to your plugin # then 
plugin.georecord_layer.layer.extent should give you an extent... eg:
<QgsRectangle: 103890.796875 492342.34375, 104287.453125 492643.46875> # NOTE 
that this is in the layers crs !
# you can also use (making the right layer active in legend):
iface.activeLayer().extent()
# you can also look at the extent of the mapcanvas from the console:
iface.mapCanvas().extent()

(you can off course also use logging see the extent somewhere)

Can you show us both the canvas and the layer extent?

Regards,

Richard Duivenvoorde

On 6/20/23 12:59, Frank Broniewski via QGIS-Developer wrote:
> Hi,
> 
> I am writing a plugin, in which I am loading a bunch of layers, and I want to 
> zoom on one of them. Layers are loaded through an action (click).
> 
> def load_layer(self):
> 
>          self.project.addMapLayers(
> 
>              [
> 
>                  self.addresses_layer.layer,
> 
>                  self.adminunits_layer.layer,
> 
>                  self.georecord_layer,
> 
>              ],
> 
>              addToLegend=False,
> 
>          )
> 
>          self.project.addMapLayers(
> 
>              [
> 
>                  self.geolocation_point_layer.layer,
> 
>                  self.geolocation_line_layer.layer,
> 
>                  self.geolocation_poly_layer.layer,
> 
>                  self.ortho_layer
> 
>              ]
> 
>          )
> 
>          
> self.iface.mapCanvas().setExtent(self.georecord_layer.layer.extent())
> 
>          self.iface.mapCanvas().refresh()
> 
> but unfortunately, that does not work as expected. QGIS zooms just on the 
> ortho_layer in the end. I have the suspicion, that the extent I set, gets 
> overwritten by another layer that loads in in a later stage. Layers are from 
> a PostGIS, and the ortho_layer is a WMS layer.
> 
> I tried googleing, mapCanvas().waitWhileRendering() and whatnot, it just will 
> not zoom. I am completely clueless now, so any hints are greatly appreciated.
> 
> This is on OSGeo4W, QGIS 3.28 and Python , for explanation, the .layer 
> attribute is the actual QGIS layer …
> 
> Many thanks,
> 
> Frank
> 
> 
> _______________________________________________
> QGIS-Developer mailing list
> QGIS-Developer@lists.osgeo.org
> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer

_______________________________________________
QGIS-Developer mailing list
QGIS-Developer@lists.osgeo.org
List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer

Reply via email to