[prev in list] [next in list] [prev in thread] [next in thread] 

List:       qgis-user
Subject:    Re: [Qgis-user] PyQGIS: Get project extent outside QGIS
From:       Jorge Gustavo Rocha <jgr () geomaster ! pt>
Date:       2019-11-18 17:05:19
Message-ID: 4f3090ef-a556-b88f-429e-b2a2f2f70136 () geomaster ! pt
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Hi,

Answer to my own question: the order was wrong.

I need to call

QgsLayerTreeMapCanvasBridge

before reading the project.

This works:

QgsApplication.setPrefixPath("/usr", True)
qgs = QgsApplication([], False)
# Load providers
qgs.initQgis()

project = QgsProject.instance()

root = project.layerTreeRoot()
canvas = QgsMapCanvas()

bridge = QgsLayerTreeMapCanvasBridge(root, canvas)

project.read(projectpath)

print(project.crs().authid())

print(canvas.extent())
print(canvas.fullExtent())
print(canvas.mapSettings().extent())
print(canvas.mapSettings().fullExtent())
print(canvas.mapSettings().visibleExtent())

Sorry for the noise.

Jorge

On 18/11/19 16:55, Jorge Gustavo Rocha wrote:
>
> Hi,
>
> I want to read a project file and get the extent when the project was
> saved.
>
> In QGIS,
>
> iface.mapCanvas().extent()
>
> does exactly what I want. But I want to run a script outside QGIS.
>
> I've already tried:
>
> QgsApplication.setPrefixPath("/usr", True)
> qgs = QgsApplication([], False)
> # Load providers
> qgs.initQgis()
>
> project = QgsProject.instance()
> project.read(projectpath)
>
> print(project.crs().authid())
>
> root = project.layerTreeRoot()
> canvas = QgsMapCanvas()
>
> bridge = QgsLayerTreeMapCanvasBridge(root, canvas)
>
> print(canvas.extent())
> print(canvas.fullExtent())
> print(canvas.mapSettings().extent())
> print(canvas.mapSettings().fullExtent())
> print(canvas.mapSettings().visibleExtent())
>
> All of these extents are much wider than the canvas extent when the
> project was saved.
>
> The extent is there, in the project file. I can read it as XML and get
> the extent.
>
>    <mapcanvas annotationsVisible="1" name="theMapCanvas">
>        <units>meters</units>
>        <extent>
>            <xmin>-22630.49319827121144044</xmin>
>            <ymin>208610.29666395089589059</ymin>
>            <xmax>-22314.35674389618725399</xmax>
>            <ymax>208889.62023152899928391</ymax>
>        </extent>
>
> But I would like to use the API.
>
> Thanks in advance,
>
> Jorge
>
> -- 
> Email Signature
> Logo <https://www.geomaster.pt> 	
> *Geomaster*
> *Jorge Gustavo Rocha* | Software Engineer
> *e:*jgr@geomaster.pt | *m:*+351 910 333 888
> *g:*41.54094,-8.40490 | *v: *510 906 109
> *a: * Rua António Cândido Pinto, 67, 4715-400 Braga
>
>
> _______________________________________________
> Qgis-user mailing list
> Qgis-user@lists.osgeo.org
> List info: https://lists.osgeo.org/mailman/listinfo/qgis-user
> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user
-- 
Email Signature
Logo <https://www.geomaster.pt> 	
*Geomaster*
*Jorge Gustavo Rocha* | Software Engineer
*e:*jgr@geomaster.pt | *m:*+351 910 333 888
*g:*41.54094,-8.40490 | *v: *510 906 109
*a: * Rua António Cândido Pinto, 67, 4715-400 Braga


[Attachment #5 (text/html)]

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>Hi,</p>
    <p>Answer to my own question: the order was wrong.<br>
    </p>
    <p>I need to call </p>
    <pre><span class="n">QgsLayerTreeMapCanvasBridge</span><span \
class="p"></span></pre>  <p>before reading the project.</p>
    <p>This works:</p>
    <p><tt>QgsApplication.setPrefixPath("/usr", True)</tt><tt><br>
      </tt><tt>qgs = QgsApplication([], False)</tt><tt><br>
      </tt><tt># Load providers</tt><tt><br>
      </tt><tt>qgs.initQgis()</tt><tt><br>
      </tt><tt><br>
      </tt><tt>project = QgsProject.instance()</tt></p>
    <p><tt>root = project.layerTreeRoot()</tt><tt><br>
      </tt><tt>canvas = QgsMapCanvas()</tt></p>
    <p><tt>bridge = QgsLayerTreeMapCanvasBridge(root, canvas)</tt><tt><br>
      </tt></p>
    <p><tt> </tt><tt>project.read(projectpath)</tt></p>
    <p><tt>print(project.crs().authid()) </tt><tt><br>
      </tt></p>
    <p><tt>print(canvas.extent())</tt><tt><br>
      </tt><tt>print(canvas.fullExtent())</tt><tt><br>
      </tt><tt>print(canvas.mapSettings().extent())</tt><tt><br>
      </tt><tt>print(canvas.mapSettings().fullExtent())</tt><tt><br>
      </tt><tt>print(canvas.mapSettings().visibleExtent())</tt></p>
    <p>Sorry for the noise.</p>
    <p>Jorge<br>
    </p>
    <div class="moz-cite-prefix">On 18/11/19 16:55, Jorge Gustavo Rocha
      wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:0fe3be23-ca09-6e50-e443-71d2ed087561@geomaster.pt">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <p>Hi,</p>
      <p>I want to read a project file and get the extent when the
        project was saved.</p>
      <p>In QGIS, <br>
      </p>
      <p><tt>iface.mapCanvas().extent()</tt></p>
      <p>does exactly what I want. But I want to run a script outside
        QGIS.<br>
      </p>
      <p>I've already tried:</p>
      <p><tt>QgsApplication.setPrefixPath("/usr", True)</tt><tt><br>
        </tt><tt>qgs = QgsApplication([], False)</tt><tt><br>
        </tt><tt># Load providers</tt><tt><br>
        </tt><tt>qgs.initQgis()</tt><tt><br>
        </tt><tt><br>
        </tt><tt>project = QgsProject.instance()</tt><tt><br>
        </tt><tt>project.read(projectpath)</tt></p>
      <p><tt>print(project.crs().authid()) </tt><tt><br>
        </tt></p>
      <p><tt>root = project.layerTreeRoot()</tt><tt><br>
        </tt><tt>canvas = QgsMapCanvas()</tt></p>
      <p><tt>bridge = QgsLayerTreeMapCanvasBridge(root, canvas)</tt><tt><br>
        </tt></p>
      <p><tt>print(canvas.extent())</tt><tt><br>
        </tt><tt>print(canvas.fullExtent())</tt><tt><br>
        </tt><tt>print(canvas.mapSettings().extent())</tt><tt><br>
        </tt><tt>print(canvas.mapSettings().fullExtent())</tt><tt><br>
        </tt><tt>print(canvas.mapSettings().visibleExtent())</tt></p>
      <p>All of these extents are much wider than the canvas extent when
        the project was saved.</p>
      <p>The extent is there, in the project file. I can read it as XML
        and get the extent.</p>
      <p><tt>   &lt;mapcanvas annotationsVisible="1"
          name="theMapCanvas"&gt;</tt><tt><br>
        </tt><tt>       &lt;units&gt;meters&lt;/units&gt;</tt><tt><br>
        </tt><tt>       &lt;extent&gt;</tt><tt><br>
        </tt><tt>           \
                &lt;xmin&gt;-22630.49319827121144044&lt;/xmin&gt;</tt><tt><br>
        </tt><tt>           \
                &lt;ymin&gt;208610.29666395089589059&lt;/ymin&gt;</tt><tt><br>
        </tt><tt>           \
                &lt;xmax&gt;-22314.35674389618725399&lt;/xmax&gt;</tt><tt><br>
        </tt><tt>           \
&lt;ymax&gt;208889.62023152899928391&lt;/ymax&gt;</tt><tt><br>  </tt><tt>       \
&lt;/extent&gt;</tt><br>  <br>
      </p>
      <p>But I would like to use the API.</p>
      <p>Thanks in advance,</p>
      <p>Jorge<br>
      </p>
      <div class="moz-signature">-- <br>
        <title>Email Signature</title>
        <meta content="text/html; charset=UTF-8"
          http-equiv="Content-Type">
        <table style="width: 525px; font-size: 11pt; font-family: Arial,
          sans-serif;" cellspacing="0" cellpadding="0">
          <tbody>
            <tr>
              <td style="text-align:center; font-size: 10pt;
                font-family: Arial, sans-serif; border-right: 1px solid;
                border-right-color: #fb6303; width: 125px;
                padding-right: 10px; vertical-align: top;" rowspan="6"
                width="125" valign="top"> <a
                  href="https://www.geomaster.pt" target="_blank"
                  moz-do-not-send="true"><img alt="Logo"
                    style="width:105px; height:auto; border:0;"
src="https://geomaster.pt/wp-content/uploads/2017/02/cropped-geomaster300x300-1.png"
                    moz-do-not-send="true" width="85" border="0"></a> </td>
              <td style="padding-left:10px">
                <table cellspacing="0" cellpadding="0">
                  <tbody>
                    <tr>
                      <td style="font-size: 10pt; color:#0079ac;
                        font-family: Arial, sans-serif; width: 400px;
                        padding-bottom: 5px; padding-left: 10px;
                        vertical-align: top;" valign="top"> <strong><span
                            style="font-size: 14pt; font-family: Arial,
                            sans-serif; color:#fb6303;">Geomaster</span></strong><br>
                        <strong><span style="font-size: 11pt;
                            font-family: Arial, sans-serif;
                            color:black;">Jorge Gustavo Rocha</span></strong>
                        <span style="font-family: Arial, sans-serif;
                          font-size:11pt; color:#000000;"><span
                            style="padding-right: 5px; padding-left:
                            5px;"> | </span>Software Engineer</span> </td>
                    </tr>
                    <tr>
                      <td style="font-size: 10pt; color:#444444;
                        font-family: Arial, sans-serif; padding-bottom:
                        5px; padding-top: 5px; padding-left: 10px;
                        vertical-align: top; line-height:17px;"
                        valign="top"> <span><span style="color:
                            #fb6303;"><strong>e:</strong></span><span
                            style="font-size: 10pt; font-family: Arial,
                            sans-serif; color:#000000;"> <a
                              class="moz-txt-link-abbreviated"
                              href="mailto:jgr@geomaster.pt"
                              \
moz-do-not-send="true">jgr@geomaster.pt</a></span></span>  <span><span \
style="padding-left:  5px;padding-right: 5px;"> | </span><span
                            style="color: #fb6303;"><strong>m:</strong></span><span
                            style="font-size: 10pt; font-family: Arial,
                            sans-serif; color:#000000;"> +351 910 333
                            888<br>
                          </span></span> <span><span style="color:
                            #fb6303;"><strong>g:</strong></span><span
                            style="font-size: 10pt; font-family: Arial,
                            sans-serif; color:#000000;">
                            41.54094,-8.40490</span></span> <span><span
                            style="padding-left: 7px;padding-right:
                            5px;"> | </span><span style="color:
                            #fb6303;"><strong>v: </strong></span><span
                            style="font-size: 10pt; font-family: Arial,
                            sans-serif; color:#000000; padding-left:
                            7px;"> 510 906 109<br>
                          </span></span> <span> <span style="color:
                            #fb6303;"><strong>a: </strong></span> </span>
                        <span> <span style="font-size: 10pt;
                            font-family: Arial, sans-serif; color:
                            #000000;"><span> </span>Rua António Cândido
                            Pinto, 67, 4715-400 Braga<br>
                          </span></span> </td>
                    </tr>
                  </tbody>
                </table>
              </td>
            </tr>
          </tbody>
        </table>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" \
wrap="">_______________________________________________ Qgis-user mailing list
<a class="moz-txt-link-abbreviated" \
href="mailto:Qgis-user@lists.osgeo.org">Qgis-user@lists.osgeo.org</a> List info: <a \
class="moz-txt-link-freetext" \
href="https://lists.osgeo.org/mailman/listinfo/qgis-user">https://lists.osgeo.org/mailman/listinfo/qgis-user</a>
                
Unsubscribe: <a class="moz-txt-link-freetext" \
href="https://lists.osgeo.org/mailman/listinfo/qgis-user">https://lists.osgeo.org/mailman/listinfo/qgis-user</a></pre>
  </blockquote>
    <div class="moz-signature">-- <br>
      <title>Email Signature</title>
      <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
      <table style="width: 525px; font-size: 11pt; font-family: Arial,
        sans-serif;" cellspacing="0" cellpadding="0">
        <tbody>
          <tr>
            <td style="text-align:center; font-size: 10pt; font-family:
              Arial, sans-serif; border-right: 1px solid;
              border-right-color: #fb6303; width: 125px; padding-right:
              10px; vertical-align: top;" rowspan="6" width="125"
              valign="top"> <a href="https://www.geomaster.pt"
                target="_blank"><img alt="Logo" style="width:105px;
                  height:auto; border:0;"
src="https://geomaster.pt/wp-content/uploads/2017/02/cropped-geomaster300x300-1.png"
                  width="85" border="0"></a> </td>
            <td style="padding-left:10px">
              <table cellspacing="0" cellpadding="0">
                <tbody>
                  <tr>
                    <td style="font-size: 10pt; color:#0079ac;
                      font-family: Arial, sans-serif; width: 400px;
                      padding-bottom: 5px; padding-left: 10px;
                      vertical-align: top;" valign="top"> <strong><span
                          style="font-size: 14pt; font-family: Arial,
                          sans-serif; color:#fb6303;">Geomaster</span></strong><br>
                      <strong><span style="font-size: 11pt; font-family:
                          Arial, sans-serif; color:black;">Jorge Gustavo
                          Rocha</span></strong> <span
                        style="font-family: Arial, sans-serif;
                        font-size:11pt; color:#000000;"><span
                          style="padding-right: 5px; padding-left: 5px;">
                          | </span>Software Engineer</span> </td>
                  </tr>
                  <tr>
                    <td style="font-size: 10pt; color:#444444;
                      font-family: Arial, sans-serif; padding-bottom:
                      5px; padding-top: 5px; padding-left: 10px;
                      vertical-align: top; line-height:17px;"
                      valign="top"> <span><span style="color: \
#fb6303;"><strong>e:</strong></span><span  style="font-size: 10pt; font-family: \
                Arial,
                          sans-serif; color:#000000;"> <a \
class="moz-txt-link-abbreviated" \
href="mailto:jgr@geomaster.pt">jgr@geomaster.pt</a></span></span>  <span><span \
style="padding-left:  5px;padding-right: 5px;"> | </span><span
                          style="color: #fb6303;"><strong>m:</strong></span><span
                          style="font-size: 10pt; font-family: Arial,
                          sans-serif; color:#000000;"> +351 910 333 888<br>
                        </span></span> <span><span style="color:
                          #fb6303;"><strong>g:</strong></span><span
                          style="font-size: 10pt; font-family: Arial,
                          sans-serif; color:#000000;"> \
41.54094,-8.40490</span></span>  <span><span style="padding-left:
                          7px;padding-right: 5px;"> | </span><span
                          style="color: #fb6303;"><strong>v: </strong></span><span
                          style="font-size: 10pt; font-family: Arial,
                          sans-serif; color:#000000; padding-left: 7px;">
                          510 906 109<br>
                        </span></span> <span> <span style="color:
                          #fb6303;"><strong>a: </strong></span> </span>
                      <span> <span style="font-size: 10pt; font-family:
                          Arial, sans-serif; color: #000000;"><span> </span>Rua
                          António Cândido Pinto, 67, 4715-400 Braga<br>
                        </span></span> </td>
                  </tr>
                </tbody>
              </table>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
  </body>
</html>


[Attachment #6 (text/plain)]

_______________________________________________
Qgis-user mailing list
Qgis-user@lists.osgeo.org
List info: https://lists.osgeo.org/mailman/listinfo/qgis-user
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic