[QGIS-Developer] Geoprocessing Tools Fail with Memory Layers

C Hamilton adenaculture at gmail.com
Mon Jan 8 11:56:49 PST 2018


Richard,

Thanks for verifying this. It appears that the bug is with 2.18 and is not
in 2.99.

The wrong result that I get is dependent on the function run. I either get
one of the original layers or no result.

Regards,

Calvin

On Sat, Jan 6, 2018 at 3:19 AM, Richard Duivenvoorde <rdmailings at duif.net>
wrote:

>
> Hi Calvin,
>
> Confirmed here:
>
> - creating the two memory(!) layers using Calvin's python code, and
> running intersection returns one of the two polygons
> - saving the same layers to gpkg and run intersection just works
> (I thought that it would have something to do with OTF, but with or
> without it it returns wrong).
>
> Please create an issue for this.
>
> I adapted your code to run in 2.99, and then with me it seems to work:
> http://pix.toile-libre.org/?img=1515181793.png
>
> The red part is the intersection?
>
> What kind of (wrong) result do you get?
> Maybe create an issue for it too, with some more screendumps with your
> result and the expected result?
>
> from qgis.core import QgsFeature, QgsVectorLayer, QgsPoint, QgsFeature
>
> poly1 = QgsVectorLayer("Polygon?crs=epsg:4326", "Polygon 1", "memory")
> dp = poly1.dataProvider()
>
> pts = [QgsPointXY(-117.9031, 44.4169), QgsPointXY(-103.86080,
> 44.700146), QgsPointXY(-104.655656, 38.257599), QgsPointXY(-117.9031,
> 44.4169)]
> f = QgsFeature()
> f.setGeometry(QgsGeometry.fromPolygonXY([pts]))
> dp.addFeatures([f])
> poly1.updateExtents()
> QgsProject.instance().addMapLayer(poly1)
>
> poly2 = QgsVectorLayer("Polygon?crs=epsg:4326", "Polygon 2", "memory")
> dp = poly2.dataProvider()
>
> pts = [QgsPointXY(-115.27676, 40.242037), QgsPointXY(-101.32007,
> 41.387353), QgsPointXY(-102.1608432, 33.314810), QgsPointXY(-115.27676,
> 40.242037)]
> f = QgsFeature()
> f.setGeometry(QgsGeometry.fromPolygonXY([pts]))
> dp.addFeatures([f])
> poly2.updateExtents()
> QgsProject.instance().addMapLayer(poly2)
>
>
> Regards,
>
> Richard
>
>
> On 05-01-18 20:03, C Hamilton wrote:
> > I've asked about this several time and have never gotten a real
> > response. The following code creates two memory layer polygons that
> overlap.
> >
> > from qgis.core import (QgsFeature,
> >     QgsVectorLayer, QgsPoint, QgsFeature,
> >     QgsMapLayerRegistry)
> >
> > poly1 = QgsVectorLayer("Polygon?crs=epsg:4326", "Polygon 1", "memory")
> > dp = poly1.dataProvider()
> >
> > pts = [QgsPoint(-117.9031, 44.4169), QgsPoint(-103.86080, 44.700146),
> > QgsPoint(-104.655656, 38.257599), QgsPoint(-117.9031, 44.4169)]
> > f = QgsFeature()
> > f.setGeometry(QgsGeometry.fromPolygon([pts]))
> > dp.addFeatures([f])
> > poly1.updateExtents()
> > QgsMapLayerRegistry.instance().addMapLayer(poly1)
> >
> > poly2 = QgsVectorLayer("Polygon?crs=epsg:4326", "Polygon 2", "memory")
> > dp = poly2.dataProvider()
> >
> > pts = [QgsPoint(-115.27676, 40.242037), QgsPoint(-101.32007, 41.387353),
> > QgsPoint(-102.1608432, 33.314810), QgsPoint(-115.27676, 40.242037)]
> > f = QgsFeature()
> > f.setGeometry(QgsGeometry.fromPolygon([pts]))
> > dp.addFeatures([f])
> > poly2.updateExtents()
> > QgsMapLayerRegistry.instance().addMapLayer(poly2)
> >
> > From the QGIS menu if you run the Geoprocessing tools such as
> > Intersection or Difference on the two polygons the algorithms fail to
> > return the correct results. Are memory layers no longer supported in
> > QGIS or is this a bug in the Processing code? In QGIS 14 this code works
> > fine, but with QGIS 18.x and QGIS 2.99 it fails.
> >
> > Thanks,
> >
> > Calvin
> >
> >
> > _______________________________________________
> > QGIS-Developer mailing list
> > QGIS-Developer at lists.osgeo.org
> > List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
> > Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
> >
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20180108/f305cbae/attachment-0001.html>


More information about the QGIS-Developer mailing list