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 > [email protected] > List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer > Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer > _______________________________________________ QGIS-Developer mailing list [email protected] List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
