<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
span.im
        {mso-style-name:im;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";
        mso-fareast-language:DA;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:3.0cm 2.0cm 3.0cm 2.0cm;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="DA" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Hi Harrissou<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">I can give examples of how I did a few things, but I will definitely not be able to determine if my examples cover all situations or if the current
 examples provide an overall better solution.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Regards, Casper<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> DelazJ [mailto:delazj@gmail.com]
<br>
<b>Sent:</b> 12. august 2016 14:36<br>
<b>To:</b> Casper Børgesen (CABO)<br>
<b>Cc:</b> Martin Dobias; qgis-developer@lists.osgeo.org<br>
<b>Subject:</b> Re: [Qgis-developer] Python: How to allow for more results using QgsSnapper.snapMapPoint(...)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<div>
<div>
<div>
<div>
<p class="MsoNormal">Hi Casper,<o:p></o:p></p>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt">this page may need some update. Not many pythonistas are currently available to improve the PyQGIS Cookbook pages so once you went through the process and are aware of the best practices on this side, a couple
 of code sample or hints would be very welcome.<o:p></o:p></p>
</div>
<p class="MsoNormal">Thanks,<o:p></o:p></p>
</div>
<p class="MsoNormal">Harrissou<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">2016-08-12 14:26 GMT+02:00 Casper Børgesen (CABO) <<a href="mailto:CABO@niras.dk" target="_blank">CABO@niras.dk</a>>:<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:12.0pt">Hi Martin<br>
<br>
Going through the layer object works much better, thanks yet again :)<br>
<br>
Since I cannot remember all the syntaxes and ways to do stuff I found this page, which I have found so many times now:<br>
<br>
<a href="http://docs.qgis.org/testing/en/docs/pyqgis_developer_cookbook/vector.html" target="_blank">http://docs.qgis.org/testing/en/docs/pyqgis_developer_cookbook/vector.html</a><br>
<br>
The page suggest that you go through the data provider. Perhaps that is not the best way to go anymore, or does it depend on what you want to do?<br>
<br>
<br>
<span class="im">Regards, Casper</span><br>
<br>
<span class="im">-----Original Message-----</span><br>
<span class="im">From: Martin Dobias [mailto:<a href="mailto:wonder.sk@gmail.com">wonder.sk@gmail.com</a>]</span><br>
<span class="im">Sent: 12. august 2016 13:21</span><br>
<span class="im">To: Casper Børgesen (CABO)</span><br>
<span class="im">Cc: <a href="mailto:qgis-developer@lists.osgeo.org">qgis-developer@lists.osgeo.org</a></span><br>
<span class="im">Subject: Re: [Qgis-developer] Python: How to allow for more results using QgsSnapper.snapMapPoint(...)</span><o:p></o:p></p>
<div>
<div>
<p class="MsoNormal">Hi Casper<br>
<br>
On Fri, Aug 12, 2016 at 12:56 PM, Casper Børgesen (CABO) <<a href="mailto:CABO@niras.dk">CABO@niras.dk</a>> wrote:<br>
> 1. I have enabled snapping<br>
> 2. The user snaps to an edge.<br>
> 3. I then cut up a geometry (the one the user snapped to), replacing the geometry of the snapped feature and insert new features for the remaining geometries from the cut.<br>
> 4. Snapping now only works on the geometry which weren't changed and part of the changed geometry.<br>
><br>
> Cut pseudo code:<br>
>     geometry = QgsGeometry(f.geometry())<br>
>     (result, other, pts) = geometry.splitGeometry([p1, ..., pn])<br>
><br>
>     # Update feature.<br>
>     layer.startEditing()<br>
>     layer.dataProvider().changeGeometryValues({<a href="http://f.id" target="_blank">f.id</a>() : geometry})<br>
>     # Insert new feature.<br>
>     f2 = QgsFeature(layer.pendingFields())<br>
>     f2.setAttributes(f.attributes())<br>
>     f2.setGeometry(other[0])<br>
>     layer().dataProvider().addFeatures([f2])<br>
>     layer.commitChanges()<br>
><br>
> I can think of two reasons here. Either I do the cutting in an impropriate way or I need to update an index somewhere.<br>
<br>
Use layer.changeGeometry() and layer.addFeatures() instead of the methods from data provider. They do not notify the rest of the app about the changes, so the index does not get updated.<br>
<br>
Maybe even better you can use QgsVectorLayerEditUtils.splitFeatures()<br>
to cut features (it will do the splitGeometry calls, change geometries and add features).<br>
<br>
Cheers<br>
Martin<br>
_______________________________________________<br>
Qgis-developer mailing list<br>
<a href="mailto:Qgis-developer@lists.osgeo.org">Qgis-developer@lists.osgeo.org</a><br>
List info: <a href="http://lists.osgeo.org/mailman/listinfo/qgis-developer" target="_blank">
http://lists.osgeo.org/mailman/listinfo/qgis-developer</a><br>
Unsubscribe: <a href="http://lists.osgeo.org/mailman/listinfo/qgis-developer" target="_blank">
http://lists.osgeo.org/mailman/listinfo/qgis-developer</a><o:p></o:p></p>
</div>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</body>
</html>