<br><br><div class="gmail_quote">Am 3. April 2012 20:02 schrieb Paul Norman <span dir="ltr"><<a href="mailto:penorman@mac.com">penorman@mac.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div lang="EN-US" link="blue" vlink="purple"><div><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">The problem with detecting when changesets are closed is that there is no way to determine exactly when they are closed short of an API query. You can fake it by assuming changesets are closed an hour after the last change to them and 24 hours after the first change to them.</span></p>

</div></div></blockquote><div><br></div><div>Open: <span class="webkit-html-tag" style="font-family:monospace;font-size:13px"> (</span><a href="http://www.openstreetmap.org/api/0.6/changeset/11187430">http://www.openstreetmap.org/api/0.6/changeset/11187430</a><span style="font-family:monospace;font-size:13px">)</span></div>

<div><div class="line" style="font-family:monospace;font-size:13px"><span class="webkit-html-tag"><osm<span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">version</span>="<span class="webkit-html-attribute-value">0.6</span>"</span><span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">generator</span>="<span class="webkit-html-attribute-value">OpenStreetMap server</span>"</span>></span></div>

<div class="collapsible-content" style="margin-left:1em;font-family:monospace;font-size:13px"><span class="text"></span><div class="collapsible" id="collapsible1"><div class="expanded"><div class="line"><span class="button collapse-button" style></span><span class="webkit-html-tag"><changeset<span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">id</span>="<span class="webkit-html-attribute-value">11187430</span>"</span><span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">user</span>="<span class="webkit-html-attribute-value">regedi</span>"</span><span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">uid</span>="<span class="webkit-html-attribute-value">645826</span>"</span><span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">created_at</span>="<span class="webkit-html-attribute-value">2012-04-05T10:28:21Z</span>"</span><span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">open</span>="<span class="webkit-html-attribute-value">true</span>"</span><span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">min_lat</span>="<span class="webkit-html-attribute-value">50.0106489</span>"</span><span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">min_lon</span>="<span class="webkit-html-attribute-value">36.3515771</span>"</span><span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">max_lat</span>="<span class="webkit-html-attribute-value">50.0112144</span>"</span><span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">max_lon</span>="<span class="webkit-html-attribute-value">36.3586195</span>"</span>></span></div>

<div class="collapsible-content" style="margin-left:1em"><span class="text"></span><div class="line"><span class="webkit-html-tag"><tag<span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">k</span>="<span class="webkit-html-attribute-value">created_by</span>"</span><span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">v</span>="<span class="webkit-html-attribute-value">Potlatch 2</span>"</span>/></span></div>

<span class="text"></span><div class="line"><span class="webkit-html-tag"><tag<span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">k</span>="<span class="webkit-html-attribute-value">build</span>"</span><span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">v</span>="<span class="webkit-html-attribute-value">2.3-375-g9f05171</span>"</span>/></span></div>

<span class="text"></span><div class="line"><span class="webkit-html-tag"><tag<span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">k</span>="<span class="webkit-html-attribute-value">version</span>"</span><span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">v</span>="<span class="webkit-html-attribute-value">2.3</span>"</span>/></span></div>

<span class="text"></span></div><div class="line"><span class="webkit-html-tag"></changeset></span></div></div></div><span class="text"></span></div><div class="line" style="font-family:monospace;font-size:13px"><span class="webkit-html-tag"></osm></span></div>

</div><div class="line" style="font-family:monospace;font-size:13px"><span class="webkit-html-tag"><br></span></div><div class="line" style="font-family:monospace;font-size:13px"><span class="webkit-html-tag">Closed: (</span><a href="http://www.openstreetmap.org/api/0.6/changeset/11167430">http://www.openstreetmap.org/api/0.6/changeset/11167430</a>)</div>

<div class="line" style="font-family:monospace;font-size:13px"><div class="line"><span class="webkit-html-tag"><osm<span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">version</span>="<span class="webkit-html-attribute-value">0.6</span>"</span><span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">generator</span>="<span class="webkit-html-attribute-value">OpenStreetMap server</span>"</span>></span></div>

<div class="collapsible-content" style="margin-left:1em"><span class="text"></span><div class="collapsible" id="collapsible1"><div class="expanded"><div class="line"><span class="button collapse-button" style></span><span class="webkit-html-tag"><changeset<span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">id</span>="<span class="webkit-html-attribute-value">11167430</span>"</span><span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">user</span>="<span class="webkit-html-attribute-value">bergfrei</span>"</span><span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">uid</span>="<span class="webkit-html-attribute-value">327035</span>"</span><span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">created_at</span>="<span class="webkit-html-attribute-value">2012-03-31T15:11:30Z</span>"</span><span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">closed_at</span>="<span class="webkit-html-attribute-value">2012-03-31T15:16:55Z</span>"</span><span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">open</span>="<span class="webkit-html-attribute-value">false</span>"</span><span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">min_lat</span>="<span class="webkit-html-attribute-value">47.9912789</span>"</span><span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">min_lon</span>="<span class="webkit-html-attribute-value">9.7206276</span>"</span><span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">max_lat</span>="<span class="webkit-html-attribute-value">48.0492344</span>"</span><span class="webkit-html-attribute"><span class="webkit-html-attribute-name">max_lon</span>="<span class="webkit-html-attribute-value">9.8521079</span>"</span>></span></div>

<div class="collapsible-content" style="margin-left:1em"><span class="text"></span><div class="line"><span class="webkit-html-tag"><tag<span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">k</span>="<span class="webkit-html-attribute-value">comment</span>"</span><span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">v</span>="<span class="webkit-html-attribute-value">Hochdorf Ausgleich Luftbildversatz</span>"</span>/></span></div>

<span class="text"></span><div class="line"><span class="webkit-html-tag"><tag<span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">k</span>="<span class="webkit-html-attribute-value">created_by</span>"</span><span class="webkit-html-attribute"> <span class="webkit-html-attribute-name">v</span>="<span class="webkit-html-attribute-value">JOSM/1.5 (5047 de)</span>"</span>/></span></div>

<span class="text"></span></div><div class="line"><span class="webkit-html-tag"></changeset></span></div></div></div><span class="text"></span></div><div class="line"><span class="webkit-html-tag"></osm></span></div>

<div class="line"><span class="webkit-html-tag"><br></span></div><div class="line"><span class="webkit-html-tag">Or have I missed something?</span></div></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div lang="EN-US" link="blue" vlink="purple"><div><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> It is better to detect problems when they occur, not up to 24 hours after they’ve occurred.</span></p>

</div></div></blockquote><div><br></div><div>That's correct. A good practise would be, to code it as abstract as possible and so only parse modify/delete/create sets. The origin (minute/hour-diff/changeset) will be ignored. </div>

<div><br></div><div>I try to take this into account in my proposal.</div><div><br></div><div>Thanks for all of your ideas! It's time to finish my proposal :)</div><div><br></div><div>Regards,</div><div>Morris</div><div>

<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-US" link="blue" vlink="purple"><div><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u><u></u></span></p>

<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">

<div><div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0in 0in 0in"><p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> kabum [mailto:<a href="mailto:uu.kabum@gmail.com" target="_blank">uu.kabum@gmail.com</a>] <br>

<b>Sent:</b> Tuesday, April 03, 2012 2:20 AM<br><b>To:</b> Derick Rethans<br><b>Cc:</b> OpenStreetMap dev list</span></p><div class="im"><br><b>Subject:</b> Re: [OSM-dev] Google Summer of Code<u></u><u></u></div><p></p></div>

</div><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Hi,<u></u><u></u></p><div><div class="h5"><div><p class="MsoNormal"><u></u> <u></u></p><div><p class="MsoNormal">Am 2. April 2012 22:20 schrieb Paul Norman <<a href="mailto:penorman@mac.com" target="_blank">penorman@mac.com</a>>:<u></u><u></u></p>

<div><p class="MsoNormal"><span style="font-family:"Calibri","sans-serif"">A tool that operates on the changeset level is <a href="https://github.com/pnorman/osm-weirdness" target="_blank">https://github.com/pnorman/osm-weirdness</a></span><u></u><u></u></p>

<p class="MsoNormal"><span style="font-family:"Calibri","sans-serif"">It detects changesets that have a high probability  of being an import or mechanical edit. The detection is pretty crude but it does find a fair number of undocumented imports, mechanical edits, and other weirdness. If you point it an old state.txt file it will start in the past and work up to the present.</span><u></u><u></u></p>

</div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">I've a look later this day on your script.<u></u><u></u></p></div><div><p class="MsoNormal">  <u></u><u></u></p></div><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">

<div><p class="MsoNormal"><span style="font-family:"Calibri","sans-serif"">When working with the minutely diffs there are some limitations:</span><u></u><u></u></p><p class="MsoNormal"><span style="font-family:"Calibri","sans-serif"">Limited knowledge of changesets. In practice, if you start your detection an hour in the past you can have a list of all open changesets, but it is not possible to know the tags of the changesets.</span><u></u><u></u></p>

<p class="MsoNormal"><span style="font-family:"Calibri","sans-serif"">No knowledge of the previous state of objects. You know where deleted objects were, but you can’t tell how far an object is moved or what it’s tags were before. To tell this you need to query a service with a full history DB, and handling full history files is difficult.</span><u></u><u></u></p>

<p class="MsoNormal"><span style="font-family:"Calibri","sans-serif"">No knowledge of way geometry if using existing nodes. Iandees’ <a href="https://github.com/pnorman/osm-weirdness/tree/way_check" target="_blank">https://github.com/pnorman/osm-weirdness/tree/way_check</a> solves this by fetching nodes in a way that aren’t also in the changeset from jxapi and it can then detect bad geometry (e.g. ways that trace over themselves)</span><u></u><u></u></p>

<p class="MsoNormal"><span style="font-family:"Calibri","sans-serif""> </span><u></u><u></u></p><p class="MsoNormal"><span style="font-family:"Calibri","sans-serif"">If you were to code a vandalism detection tool I think it should work on the minutely replication diffs (<a href="http://wiki.openstreetmap.org/wiki/Planet.osm/diffs" target="_blank">http://wiki.openstreetmap.org/wiki/Planet.osm/diffs</a>)</span><u></u><u></u></p>

</div></blockquote><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">I thought about analyse the data after the changeset is closed, but this diffs sounds also good. I will check this way :) Thanks!<u></u><u></u></p>

</div><div><p class="MsoNormal"> <u></u><u></u></p></div><div><p class="MsoNormal"> <u></u><u></u></p></div></div><div><p class="MsoNormal">Am 3. April 2012 09:38 schrieb Derick Rethans <<a href="mailto:osm@derickrethans.nl" target="_blank">osm@derickrethans.nl</a>>:<u></u><u></u></p>

<div><p class="MsoNormal" style="margin-bottom:12.0pt">On Mon, 2 Apr 2012, kabum wrote:<br><br>> Result:<br>> - each changeset has a total rating -> use a treshold value to divide them<br>> into suspicious and not suspicious<u></u><u></u></p>

</div><p class="MsoNormal">Instead of just using static thresholds, I think that something like SVM<br>(<a href="http://en.wikipedia.org/wiki/Support_vector_machine" target="_blank">http://en.wikipedia.org/wiki/Support_vector_machine</a>) might be highly<br>

benificial here; and it's another cool technology to play with. There is<br>a cool library for this (<a href="http://www.csie.ntu.edu.tw/~cjlin/libsvm/" target="_blank">http://www.csie.ntu.edu.tw/~cjlin/libsvm/</a>) and<br>

I know there is at least an extension to use it from PHP:<br><a href="http://phpir.com/support-vector-machines-in-php" target="_blank">http://phpir.com/support-vector-machines-in-php</a><u></u><u></u></p><div><p class="MsoNormal">

<u></u> <u></u></p></div><div><p class="MsoNormal">Thanks for this method ... seems to be very suitable for our use case.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">

I've already some years of experience of PHP, but I wouldn't prefer it for this part of the project. I thought about Python (libsvm has native Python bindings ;)) <u></u><u></u></p></div><div><p class="MsoNormal">

<u></u> <u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in"><p class="MsoNormal">

<u></u> <u></u></p><div><p class="MsoNormal" style="margin-bottom:12.0pt"><br>> Some questions came up within this preparation:<br>> - Is there a prefered language? Has this to be specified within the<br>> proposal? (language skill has to be rated, so I would decide this during<br>

> the project phase)<u></u><u></u></p></div><p class="MsoNormal">Not really any preferred language. What did you have in mind? For the<br>front end I was thinking PHP, but the engine, I wouldn't know. I think<br>something high performant (so C or C++) might be benificial.<u></u><u></u></p>

</blockquote><div><p class="MsoNormal"><u></u> <u></u></p></div><div><div><p class="MsoNormal"><br>My thoughts were that it's easy to setup and it's capable to call it easy from a terminal or to include it in other python scripts (i.e. web frontend).<u></u><u></u></p>

</div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">If C++ is necessary, because of it's speed, then I think I could master this. In the passed semester I participated in a software engineering partical training at university (in a team of five fellow students), where we have an extensive use of C++ (<a href="https://github.com/brainafk/Empire" target="_blank">https://github.com/brainafk/Empire</a>).<u></u><u></u></p>

</div></div><div><p class="MsoNormal"> <u></u><u></u></p></div><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in"><div><p class="MsoNormal" style="margin-bottom:12.0pt">

<br>> - I also would like to discuss used libraries and framework within the<br>> project phase, or should I decide this also in my proposal?<br>> - Should the frontend integrate in the current website (ruby on rails<br>

> project) or should this just be an optional feature?<u></u><u></u></p></div><p class="MsoNormal">I think it can easily live as it's own website.<u></u><u></u></p></blockquote><div><p class="MsoNormal"><u></u> <u></u></p>

</div><div><p class="MsoNormal">Ok :)<u></u><u></u></p></div><div><p class="MsoNormal"> <u></u><u></u></p></div><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">

<div><p class="MsoNormal" style="margin-bottom:12.0pt"><br>> - How detailed should be the proposal? Is it enough to formulate this draft?<u></u><u></u></p></div><p class="MsoNormal">That's a tricky one, the more information you provide the better I<br>

think, as it shows you have thought about it :-)<u></u><u></u></p></blockquote><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">I think it grows a lot by this discussion and I try to be as detailed as possible. :)<u></u><u></u></p>

</div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Thanks for the response :)<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Regards,<u></u><u></u></p>

</div><div><p class="MsoNormal">Morris<u></u><u></u></p></div></div></div></div></div></div></div></div></blockquote></div><br>