Änderungen an eigenen Daten auf Karte darstellen

Hallo zusammen,

wie ja vielleicht aus meinen anderen Themen bekannt habe ich u.a. die Hydranten in meiner Gemeinde eingetragen und verwende u.a. eine entsprechende Karte als Einsatz-Informationssystem.

Wie sicherlich nachvollziehbar ist, möchte ich gerne mitbekommen wenn jemand an den von mir eingetragenen Daten etwas ändert damit im Einsatz nicht auf einmal jemand einen Hydranten sucht den jemand bei OSM z.B. versehentlich verschoben hat.

Ich habe hier http://www.mail-archive.com/bonn-rhein-sieg@lists.openstreetmap.de/msg01121.html schonmal einen Ansatz gefunden und auch schon umgesetzt und etwas erweitert. Ein Skript auf meinem Server lädt also jeden Tag eine Liste aller meiner Änderungen herunter, prüft ob sich etwas an den Daten geändert hat und schickt mir dann eine Email zu in der nur die neuen Änderungen aufgelistet sind. Das ganze sieht dann z.B. so aus:


392c392
<   <node id="322814411" lat="49.5729992" lon="8.0588039" version="12" timestamp="2013-07-10T12:55:25Z" changeset="16899483" uid="446845" user="cziehr"/>
---
>   <node id="322814411" lat="49.5729814" lon="8.0587021" version="11" timestamp="2013-06-26T18:39:55Z" changeset="16716886" uid="446845" user="cziehr"/>
745,760d744
<   <node id="355192813" lat="49.5715796" lon="8.0585038" version="8" timestamp="2013-07-10T12:55:25Z" changeset="16899483" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="125"/>
<     <tag k="fire_hydrant:flow_capacity" v="56.34"/>
<     <tag k="fire_hydrant:pressure" v="4.80"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
<   <node id="355192817" lat="49.5703182" lon="8.0586343" version="9" timestamp="2013-07-10T12:55:25Z" changeset="16899483" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="125"/>
<     <tag k="fire_hydrant:flow_capacity" v="50.06"/>
<     <tag k="fire_hydrant:pressure" v="4.37"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
763,770d746
<   <node id="355193186" lat="49.5702886" lon="8.0595153" version="5" timestamp="2013-07-10T12:55:26Z" changeset="16899483" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="125"/>
<     <tag k="fire_hydrant:flow_capacity" v="54.62"/>
<     <tag k="fire_hydrant:pressure" v="4.74"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
773,780d748
<   <node id="355193190" lat="49.5704730" lon="8.0613021" version="14" timestamp="2013-07-10T13:53:03Z" changeset="16900222" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="125"/>
<     <tag k="fire_hydrant:flow_capacity" v="64.25"/>
<     <tag k="fire_hydrant:pressure" v="5.44"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
784,791c752
<   <node id="355193194" lat="49.5708487" lon="8.0624636" version="11" timestamp="2013-07-10T13:53:03Z" changeset="16900222" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="125"/>
<     <tag k="fire_hydrant:flow_capacity" v="64.61"/>
<     <tag k="fire_hydrant:pressure" v="5.82"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
---
>   <node id="355193194" lat="49.5708487" lon="8.0624636" version="10" timestamp="2013-06-26T18:39:56Z" changeset="16716886" uid="446845" user="cziehr"/>
796,824d756
<   <node id="355193247" lat="49.5723055" lon="8.0595110" version="9" timestamp="2013-07-10T12:55:26Z" changeset="16899483" uid="446845" user="cziehr"/>
<   <node id="355193248" lat="49.5722868" lon="8.0590676" version="5" timestamp="2013-07-10T12:55:26Z" changeset="16899483" uid="446845" user="cziehr"/>
<   <node id="355193249" lat="49.5722581" lon="8.0585836" version="4" timestamp="2013-07-10T12:55:26Z" changeset="16899483" uid="446845" user="cziehr"/>
<   <node id="355193250" lat="49.5722367" lon="8.0582810" version="9" timestamp="2013-07-10T12:55:26Z" changeset="16899483" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="100"/>
<     <tag k="fire_hydrant:flow_capacity" v="57.33"/>
<     <tag k="fire_hydrant:pressure" v="4.79"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
<   <node id="355193254" lat="49.5708210" lon="8.0600774" version="5" timestamp="2013-07-10T12:55:26Z" changeset="16899483" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="100"/>
<     <tag k="fire_hydrant:flow_capacity" v="52.86"/>
<     <tag k="fire_hydrant:pressure" v="5.02"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
<   <node id="355193256" lat="49.5713793" lon="8.0598691" version="6" timestamp="2013-07-10T12:55:26Z" changeset="16899483" uid="446845" user="cziehr"/>
<   <node id="355193257" lat="49.5717344" lon="8.0597263" version="7" timestamp="2013-07-10T12:55:26Z" changeset="16899483" uid="446845" user="cziehr"/>
<   <node id="355193335" lat="49.5723564" lon="8.0605871" version="5" timestamp="2013-07-10T12:55:26Z" changeset="16899483" uid="446845" user="cziehr"/>
<   <node id="355193337" lat="49.5723163" lon="8.0597266" version="4" timestamp="2013-07-10T12:55:26Z" changeset="16899483" uid="446845" user="cziehr"/>
<   <node id="355193702" lat="49.5706447" lon="8.0611177" version="2" timestamp="2013-07-10T12:55:26Z" changeset="16899483" uid="446845" user="cziehr"/>
<   <node id="355193703" lat="49.5708961" lon="8.0609341" version="2" timestamp="2013-07-10T12:55:26Z" changeset="16899483" uid="446845" user="cziehr"/>
<   <node id="355193704" lat="49.5711722" lon="8.0608359" version="2" timestamp="2013-07-10T12:55:26Z" changeset="16899483" uid="446845" user="cziehr"/>
<   <node id="355193705" lat="49.5714637" lon="8.0607460" version="3" timestamp="2013-07-10T12:55:26Z" changeset="16899483" uid="446845" user="cziehr"/>
<   <node id="355193706" lat="49.5715715" lon="8.0607157" version="4" timestamp="2013-07-10T12:55:26Z" changeset="16899483" uid="446845" user="cziehr"/>
<   <node id="355193708" lat="49.5725988" lon="8.0605853" version="3" timestamp="2013-07-10T12:55:26Z" changeset="16899483" uid="446845" user="cziehr"/>
827,829d758
<   <node id="355194189" lat="49.5715166" lon="8.0602696" version="3" timestamp="2013-07-10T12:55:26Z" changeset="16899483" uid="446845" user="cziehr"/>
<   <node id="355194191" lat="49.5714571" lon="8.0598439" version="6" timestamp="2013-07-10T12:55:26Z" changeset="16899483" uid="446845" user="cziehr"/>
<   <node id="355194378" lat="49.5716786" lon="8.0593193" version="2" timestamp="2013-07-10T12:55:26Z" changeset="16899483" uid="446845" user="cziehr"/>
835,842c764
<   <node id="355194621" lat="49.5714733" lon="8.0630795" version="7" timestamp="2013-07-10T14:10:26Z" changeset="16900405" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="100"/>
<     <tag k="fire_hydrant:flow_capacity" v="67.43"/>
<     <tag k="fire_hydrant:pressure" v="6.36"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
---
>   <node id="355194621" lat="49.5714796" lon="8.0630776" version="6" timestamp="2013-06-26T18:39:56Z" changeset="16716886" uid="446845" user="cziehr"/>
845c767
<   <node id="355194624" lat="49.5715089" lon="8.0639966" version="7" timestamp="2013-07-10T14:10:26Z" changeset="16900405" uid="446845" user="cziehr"/>
---
>   <node id="355194624" lat="49.5715139" lon="8.0640063" version="6" timestamp="2013-06-26T18:39:56Z" changeset="16716886" uid="446845" user="cziehr"/>
848,849d769
<   <node id="355194631" lat="49.5727379" lon="8.0642418" version="7" timestamp="2013-07-10T14:10:26Z" changeset="16900405" uid="446845" user="cziehr"/>
<   <node id="355194632" lat="49.5728767" lon="8.0641907" version="7" timestamp="2013-07-10T14:10:26Z" changeset="16900405" uid="446845" user="cziehr"/>
860,867c780
<   <node id="355194840" lat="49.5734091" lon="8.0656543" version="7" timestamp="2013-07-10T14:10:26Z" changeset="16900405" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="100"/>
<     <tag k="fire_hydrant:flow_capacity" v="49.33"/>
<     <tag k="fire_hydrant:pressure" v="6.77"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
---
>   <node id="355194840" lat="49.5734252" lon="8.0655745" version="6" timestamp="2013-06-26T18:39:57Z" changeset="16716886" uid="446845" user="cziehr"/>
876c789
<   <node id="355195154" lat="49.5737268" lon="8.0579232" version="6" timestamp="2013-07-10T12:55:26Z" changeset="16899483" uid="446845" user="cziehr"/>
---
>   <node id="355195154" lat="49.5737268" lon="8.0579012" version="5" timestamp="2013-06-26T18:39:57Z" changeset="16716886" uid="446845" user="cziehr"/>
2633,2641d2545
<   <node id="1225488618" lat="49.5715936" lon="8.0647609" version="2" timestamp="2013-07-10T14:10:26Z" changeset="16900405" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="100"/>
<     <tag k="fire_hydrant:flow_capacity" v="57.23"/>
<     <tag k="fire_hydrant:pressure" v="6.71"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
<   <node id="1225488622" lat="49.5718327" lon="8.0657378" version="2" timestamp="2013-07-10T14:10:26Z" changeset="16900405" uid="446845" user="cziehr"/>
2643,2644d2546
<   <node id="1225488634" lat="49.5715277" lon="8.0644954" version="2" timestamp="2013-07-10T14:10:26Z" changeset="16900405" uid="446845" user="cziehr"/>
<   <node id="1225488636" lat="49.5719705" lon="8.0584364" version="2" timestamp="2013-07-10T12:55:25Z" changeset="16899483" uid="446845" user="cziehr"/>
5107,5108d5008
<   <node id="2213882123" lat="49.5724104" lon="8.0674148" version="2" timestamp="2013-07-10T14:10:26Z" changeset="16900405" uid="446845" user="cziehr"/>
<   <node id="2213882131" lat="49.5722814" lon="8.0673154" version="2" timestamp="2013-07-10T14:10:26Z" changeset="16900405" uid="446845" user="cziehr"/>
11859d11758
<   <node id="2264700424" lat="49.5714512" lon="8.0658813" version="2" timestamp="2013-07-10T14:10:26Z" changeset="16900405" uid="446845" user="cziehr"/>
15445,15450c15344
<   <node id="2269948250" lat="49.5713821" lon="8.0616514" version="2" timestamp="2013-07-10T13:53:03Z" changeset="16900222" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="100"/>
<     <tag k="fire_hydrant:flow_capacity" v="41.11"/>
<     <tag k="fire_hydrant:pressure" v="5.49"/>
<     <tag k="fire_hydrant:type" v="underground"/>
---
>   <node id="2269948250" lat="49.5713821" lon="8.0616514" version="1" timestamp="2013-04-16T20:26:10Z" changeset="15755113" uid="446845" user="cziehr">
15452d15345
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
15456,15461c15349
<   <node id="2269948254" lat="49.5718839" lon="8.0615524" version="2" timestamp="2013-07-10T13:53:03Z" changeset="16900222" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="100"/>
<     <tag k="fire_hydrant:flow_capacity" v="39.81"/>
<     <tag k="fire_hydrant:pressure" v="5.49"/>
<     <tag k="fire_hydrant:type" v="underground"/>
---
>   <node id="2269948254" lat="49.5718839" lon="8.0615524" version="1" timestamp="2013-04-16T20:26:10Z" changeset="15755113" uid="446845" user="cziehr">
15463d15350
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
15467c15354
<   <node id="2269948257" lat="49.5720247" lon="8.0634332" version="2" timestamp="2013-07-10T14:10:26Z" changeset="16900405" uid="446845" user="cziehr">
---
>   <node id="2269948257" lat="49.5720228" lon="8.0634935" version="1" timestamp="2013-04-16T20:26:10Z" changeset="15755113" uid="446845" user="cziehr">
25764,25950d25650
<   <node id="2380113305" lat="49.5703123" lon="8.0601471" version="1" timestamp="2013-07-10T12:55:23Z" changeset="16899483" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="125"/>
<     <tag k="fire_hydrant:flow_capacity" v="57.81"/>
<     <tag k="fire_hydrant:pressure" v="4.98"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
<   <node id="2380113307" lat="49.5707576" lon="8.0610167" version="1" timestamp="2013-07-10T12:55:23Z" changeset="16899483" uid="446845" user="cziehr"/>
<   <node id="2380113308" lat="49.5709485" lon="8.0585310" version="1" timestamp="2013-07-10T12:55:23Z" changeset="16899483" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="125"/>
<     <tag k="fire_hydrant:flow_capacity" v="53.16"/>
<     <tag k="fire_hydrant:pressure" v="4.51"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
<   <node id="2380113310" lat="49.5709717" lon="8.0600205" version="1" timestamp="2013-07-10T12:55:23Z" changeset="16899483" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="80"/>
<     <tag k="fire_hydrant:flow_capacity" v="25.20"/>
<     <tag k="fire_hydrant:pressure" v="4.21"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
<   <node id="2380113311" lat="49.5711089" lon="8.0593130" version="1" timestamp="2013-07-10T12:55:24Z" changeset="16899483" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="100"/>
<     <tag k="fire_hydrant:flow_capacity" v="50.92"/>
<     <tag k="fire_hydrant:pressure" v="4.82"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
<   <node id="2380113313" lat="49.5712205" lon="8.0599270" version="1" timestamp="2013-07-10T12:55:24Z" changeset="16899483" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="100"/>
<     <tag k="fire_hydrant:flow_capacity" v="56.39"/>
<     <tag k="fire_hydrant:pressure" v="5.10"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
<   <node id="2380113314" lat="49.5717278" lon="8.0596777" version="1" timestamp="2013-07-10T12:55:24Z" changeset="16899483" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="80"/>
<     <tag k="fire_hydrant:flow_capacity" v="53.17"/>
<     <tag k="fire_hydrant:pressure" v="5.10"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
<   <node id="2380113316" lat="49.5718531" lon="8.0606425" version="1" timestamp="2013-07-10T12:55:24Z" changeset="16899483" uid="446845" user="cziehr"/>
<   <node id="2380113317" lat="49.5718929" lon="8.0584652" version="1" timestamp="2013-07-10T12:55:24Z" changeset="16899483" uid="446845" user="cziehr"/>
<   <node id="2380113318" lat="49.5723032" lon="8.0594572" version="1" timestamp="2013-07-10T12:55:24Z" changeset="16899483" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="100"/>
<     <tag k="fire_hydrant:flow_capacity" v="57.35"/>
<     <tag k="fire_hydrant:pressure" v="5.11"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
<   <node id="2380113319" lat="49.5736828" lon="8.0579191" version="1" timestamp="2013-07-10T12:55:24Z" changeset="16899483" uid="446845" user="cziehr"/>
<   <node id="2380113320" lat="49.5737540" lon="8.0579581" version="1" timestamp="2013-07-10T12:55:24Z" changeset="16899483" uid="446845" user="cziehr"/>
<   <node id="2380179292" lat="49.5706319" lon="8.0618478" version="1" timestamp="2013-07-10T13:53:01Z" changeset="16900222" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="125"/>
<     <tag k="fire_hydrant:flow_capacity" v="63.87"/>
<     <tag k="fire_hydrant:pressure" v="5.63"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
<   <node id="2380179293" lat="49.5713879" lon="8.0625540" version="1" timestamp="2013-07-10T13:53:02Z" changeset="16900222" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="125"/>
<     <tag k="fire_hydrant:flow_capacity" v="67.11"/>
<     <tag k="fire_hydrant:pressure" v="6.06"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
<   <node id="2380179294" lat="49.5715195" lon="8.0607303" version="1" timestamp="2013-07-10T13:53:02Z" changeset="16900222" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="150"/>
<     <tag k="fire_hydrant:flow_capacity" v="64.90"/>
<     <tag k="fire_hydrant:pressure" v="5.39"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
<   <node id="2380179295" lat="49.5718621" lon="8.0625353" version="1" timestamp="2013-07-10T13:53:02Z" changeset="16900222" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="125"/>
<     <tag k="fire_hydrant:flow_capacity" v="67.64"/>
<     <tag k="fire_hydrant:pressure" v="6.12"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
<   <node id="2380179296" lat="49.5723605" lon="8.0606695" version="1" timestamp="2013-07-10T13:53:02Z" changeset="16900222" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="80"/>
<     <tag k="fire_hydrant:flow_capacity" v="63.31"/>
<     <tag k="fire_hydrant:pressure" v="5.29"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
<   <node id="2380179297" lat="49.5724266" lon="8.0625413" version="1" timestamp="2013-07-10T13:53:02Z" changeset="16900222" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="125"/>
<     <tag k="fire_hydrant:flow_capacity" v="68.07"/>
<     <tag k="fire_hydrant:pressure" v="5.87"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
<   <node id="2380179298" lat="49.5724284" lon="8.0620692" version="1" timestamp="2013-07-10T13:53:02Z" changeset="16900222" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="100"/>
<     <tag k="fire_hydrant:flow_capacity" v="55.09"/>
<     <tag k="fire_hydrant:pressure" v="5.57"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
<   <node id="2380194839" lat="49.5714274" lon="8.0658353" version="1" timestamp="2013-07-10T14:10:24Z" changeset="16900405" uid="446845" user="cziehr"/>
<   <node id="2380194840" lat="49.5714916" lon="8.0658997" version="1" timestamp="2013-07-10T14:10:24Z" changeset="16900405" uid="446845" user="cziehr"/>
<   <node id="2380194841" lat="49.5718933" lon="8.0657102" version="1" timestamp="2013-07-10T14:10:24Z" changeset="16900405" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="100"/>
<     <tag k="fire_hydrant:flow_capacity" v="56.01"/>
<     <tag k="fire_hydrant:pressure" v="6.98"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
<   <node id="2380194842" lat="49.5720495" lon="8.0633965" version="1" timestamp="2013-07-10T14:10:24Z" changeset="16900405" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="100"/>
<     <tag k="fire_hydrant:flow_capacity" v="40.33"/>
<     <tag k="fire_hydrant:pressure" v="6.10"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
<   <node id="2380194843" lat="49.5721908" lon="8.0669968" version="1" timestamp="2013-07-10T14:10:24Z" changeset="16900405" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="100"/>
<     <tag k="fire_hydrant:flow_capacity" v="37.69"/>
<     <tag k="fire_hydrant:pressure" v="6.93"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
<   <node id="2380194844" lat="49.5722547" lon="8.0642422" version="1" timestamp="2013-07-10T14:10:24Z" changeset="16900405" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="100"/>
<     <tag k="fire_hydrant:flow_capacity" v="59.61"/>
<     <tag k="fire_hydrant:pressure" v="6.52"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
<   <node id="2380194845" lat="49.5723314" lon="8.0673927" version="1" timestamp="2013-07-10T14:10:25Z" changeset="16900405" uid="446845" user="cziehr"/>
<   <node id="2380194846" lat="49.5724490" lon="8.0654964" version="1" timestamp="2013-07-10T14:10:25Z" changeset="16900405" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="100"/>
<     <tag k="fire_hydrant:flow_capacity" v="58.28"/>
<     <tag k="fire_hydrant:pressure" v="6.70"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
<   <node id="2380194847" lat="49.5726340" lon="8.0661607" version="1" timestamp="2013-07-10T14:10:25Z" changeset="16900405" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="100"/>
<     <tag k="fire_hydrant:flow_capacity" v="52.61"/>
<     <tag k="fire_hydrant:pressure" v="6.86"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
<   <node id="2380194848" lat="49.5728046" lon="8.0642414" version="1" timestamp="2013-07-10T14:10:25Z" changeset="16900405" uid="446845" user="cziehr"/>
<   <node id="2380194849" lat="49.5728418" lon="8.0652537" version="1" timestamp="2013-07-10T14:10:25Z" changeset="16900405" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="100"/>
<     <tag k="fire_hydrant:flow_capacity" v="57.21"/>
<     <tag k="fire_hydrant:pressure" v="6.52"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
<   <node id="2380194850" lat="49.5728430" lon="8.0642330" version="1" timestamp="2013-07-10T14:10:25Z" changeset="16900405" uid="446845" user="cziehr"/>
<   <node id="2380194851" lat="49.5728894" lon="8.0641583" version="1" timestamp="2013-07-10T14:10:25Z" changeset="16900405" uid="446845" user="cziehr"/>
<   <node id="2380194852" lat="49.5730406" lon="8.0665680" version="1" timestamp="2013-07-10T14:10:25Z" changeset="16900405" uid="446845" user="cziehr">
<     <tag k="emergency" v="fire_hydrant"/>
<     <tag k="fire_hydrant:diameter" v="100"/>
<     <tag k="fire_hydrant:flow_capacity" v="50.17"/>
<     <tag k="fire_hydrant:pressure" v="7.13"/>
<     <tag k="fire_hydrant:type" v="underground"/>
<     <tag k="source" v="Verbandsgemeinde Eisenberg (Pfalz), Feuerwehr"/>
<   </node>
27480,27523c27180
<   <way id="31740275" version="8" timestamp="2013-07-10T12:55:25Z" changeset="16899483" uid="446845" user="cziehr">
<     <nd ref="355192748"/>
<     <nd ref="355192811"/>
<     <nd ref="355192812"/>
<     <nd ref="355193250"/>
<     <nd ref="1225488636"/>
<     <nd ref="2380113317"/>
<     <nd ref="1225488629"/>
<     <nd ref="355192813"/>
<     <nd ref="355192814"/>
<     <nd ref="355194477"/>
<     <nd ref="2380113308"/>
<     <nd ref="355192815"/>
<     <nd ref="355192817"/>
<     <tag k="highway" v="residential"/>
<     <tag k="name" v="Saarlandstraße"/>
<   </way>
<   <way id="31740299" version="6" timestamp="2013-07-10T12:55:24Z" changeset="16899483" uid="446845" user="cziehr">
<     <nd ref="355192817"/>
<     <nd ref="1225488637"/>
<     <nd ref="355193184"/>
<     <nd ref="355193185"/>
<     <nd ref="355193186"/>
<     <nd ref="355193187"/>
<     <nd ref="2380113305"/>
<     <nd ref="355193189"/>
<     <nd ref="1225488615"/>
<     <nd ref="355193190"/>
<     <tag k="highway" v="residential"/>
<     <tag k="name" v="Ringstraße"/>
<   </way>
<   <way id="31740311" version="5" timestamp="2013-07-10T12:55:24Z" changeset="16899483" uid="446845" user="cziehr">
<     <nd ref="355193335"/>
<     <nd ref="355193336"/>
<     <nd ref="355193337"/>
<     <nd ref="355193247"/>
<     <nd ref="2380113318"/>
<     <nd ref="355193248"/>
<     <nd ref="355193249"/>
<     <nd ref="355193250"/>
<     <tag k="highway" v="residential"/>
<     <tag k="name" v="Goethestraße"/>
<   </way>
<   <way id="31740312" version="7" timestamp="2013-07-10T12:55:24Z" changeset="16899483" uid="446845" user="cziehr">
---
>   <way id="31740312" version="6" timestamp="2013-06-26T18:39:54Z" changeset="16716886" uid="446845" user="cziehr">
27527d27183
<     <nd ref="2380113310"/>
27529d27184
<     <nd ref="2380113313"/>
27539c27194
<   <way id="31740326" version="5" timestamp="2013-07-10T13:53:02Z" changeset="16900222" uid="446845" user="cziehr">
---
>   <way id="31740326" version="3" timestamp="2013-06-26T18:39:53Z" changeset="16716886" uid="446845" user="cziehr">
27542d27196
<     <nd ref="2380113307"/>
27546d27199
<     <nd ref="2380179294"/>
27548d27200
<     <nd ref="2380113316"/>
27559c27211
<   <way id="31740333" version="12" timestamp="2013-07-10T13:53:02Z" changeset="16900222" uid="446845" user="cziehr">
---
>   <way id="31740333" version="11" timestamp="2013-04-16T20:26:10Z" changeset="15755113" uid="446845" user="cziehr">
27562d27213
<     <nd ref="2380179292"/>
27569d27219
<     <nd ref="2380179293"/>
27571d27220
<     <nd ref="2380179295"/>
27573d27221
<     <nd ref="2380179297"/>
27583,27610d27230
<   <way id="31740361" version="3" timestamp="2013-07-10T12:55:25Z" changeset="16899483" uid="446845" user="cziehr">
<     <nd ref="355193257"/>
<     <nd ref="2380113314"/>
<     <nd ref="355194378"/>
<     <nd ref="355194379"/>
<     <nd ref="355192813"/>
<     <tag k="highway" v="residential"/>
<   </way>
<   <way id="31740382" version="4" timestamp="2013-07-10T12:55:25Z" changeset="16899483" uid="446845" user="cziehr">
<     <nd ref="355194407"/>
<     <nd ref="355194473"/>
<     <nd ref="2380113311"/>
<     <nd ref="355194474"/>
<     <nd ref="355194476"/>
<     <nd ref="355194477"/>
<     <tag k="highway" v="residential"/>
<     <tag k="name" v="Schillerstraße"/>
<   </way>
<   <way id="31740447" version="5" timestamp="2013-07-10T12:55:24Z" changeset="16899483" uid="446845" user="cziehr">
<     <nd ref="355195133"/>
<     <nd ref="355195151"/>
<     <nd ref="355195152"/>
<     <nd ref="355195153"/>
<     <nd ref="2380113319"/>
<     <nd ref="355195154"/>
<     <tag k="highway" v="residential"/>
<     <tag k="name" v="Jahnstraße"/>
<   </way>
27625c27245
<   <way id="31740493" version="6" timestamp="2013-07-10T14:10:25Z" changeset="16900405" uid="446845" user="cziehr">
---
>   <way id="31740493" version="5" timestamp="2013-06-26T18:39:54Z" changeset="16716886" uid="446845" user="cziehr">
27627d27246
<     <nd ref="2380194846"/>
27630d27248
<     <nd ref="2380194847"/>
27634d27251
<     <nd ref="2380194852"/>
27648c27265
<   <way id="31740526" version="8" timestamp="2013-07-10T14:10:25Z" changeset="16900405" uid="446845" user="cziehr">
---
>   <way id="31740526" version="7" timestamp="2013-04-17T18:03:49Z" changeset="15765348" uid="446845" user="cziehr">
27652d27268
<     <nd ref="2380194844"/>
27655,27656d27270
<     <nd ref="2380194848"/>
<     <nd ref="2380194850"/>
27658d27271
<     <nd ref="2380194851"/>
27687c27300
<   <way id="31740594" version="7" timestamp="2013-07-10T12:55:25Z" changeset="16899483" uid="446845" user="cziehr">
---
>   <way id="31740594" version="6" timestamp="2013-04-17T20:01:55Z" changeset="15766607" uid="446845" user="cziehr">
27689d27301
<     <nd ref="2380113320"/>
36681,36696d36292
<   <way id="106524931" version="2" timestamp="2013-07-10T14:10:26Z" changeset="16900405" uid="446845" user="cziehr">
<     <nd ref="355194843"/>
<     <nd ref="355194844"/>
<     <nd ref="2380194849"/>
<     <nd ref="355194833"/>
<     <tag k="highway" v="residential"/>
<     <tag k="name" v="Ollenhauerstraße"/>
<   </way>
<   <way id="106524932" version="2" timestamp="2013-07-10T14:10:25Z" changeset="16900405" uid="446845" user="cziehr">
<     <nd ref="355194833"/>
<     <nd ref="2380194841"/>
<     <nd ref="1225488622"/>
<     <tag k="highway" v="residential"/>
<     <tag k="name" v="Ollenhauerstraße"/>
<     <tag k="source" v="Bing"/>
<   </way>
44907,44927d44502
<   <way id="211387121" version="3" timestamp="2013-07-10T14:10:26Z" changeset="16900405" uid="446845" user="cziehr">
<     <nd ref="2264700424"/>
<     <nd ref="2380194840"/>
<     <nd ref="1225488622"/>
<     <tag k="highway" v="unclassified"/>
<   </way>
<   <way id="211387122" version="3" timestamp="2013-07-10T14:10:26Z" changeset="16900405" uid="446845" user="cziehr">
<     <nd ref="2213882124"/>
<     <nd ref="2380194839"/>
<     <nd ref="2264700424"/>
<     <tag k="highway" v="unclassified"/>
<   </way>
<   <way id="211387125" version="2" timestamp="2013-07-10T14:10:26Z" changeset="16900405" uid="446845" user="cziehr">
<     <nd ref="1225488622"/>
<     <nd ref="2380194843"/>
<     <nd ref="2213882131"/>
<     <nd ref="2380194845"/>
<     <nd ref="2213882123"/>
<     <nd ref="1196720420"/>
<     <tag k="highway" v="residential"/>
<   </way>
71909c71484
<   <way id="217685514" version="2" timestamp="2013-07-10T13:53:02Z" changeset="16900222" uid="446845" user="cziehr">
---
>   <way id="217685514" version="1" timestamp="2013-04-16T20:26:10Z" changeset="15755113" uid="446845" user="cziehr">
71911d71485
<     <nd ref="2380179298"/>
71913d71486
<     <nd ref="2380179296"/>

Alles in allem tut das Skript also schon was es soll. Wenn jetzt aber innerhalb eines Tages einige Änderungen vorgenommen werden wird es schnell unübersichtlich.

Nun hab ich mir gedacht, dass ich alle Änderungen als Punkt auf der Karte (pro Tag) darstellen will. Das jeweilige Koordinatenpaar aus der XML-Datei zu isolieren ist nicht das Problem, eher wie ich ggf. mehrere hundert Punkte (wenn es mal wieder ein paar mehr Änderungen waren…) dynamisch auf eine Karte kommen. Diese in einer URL zu übergeben ist ja wahrscheinlich nicht möglich, die würde vermutlich zu lang werden.

Hat irgendjemand für mich einen Tipp wie ich das realisieren kann? Wenns dann funktioniert veröffentliche ich hier natürlich gerne auch den Code wenn es jemanden interessiert.

Viele Grüße und schonmal danke,

Christoph

Hallo Christoph

Der Ansatz mit der Overpass-API aus obiger Mailingliste ist schon mal gut. Inzwischen gibt es jedoch einige Neuerungen.

  • Die Overpass-API kennt eine Abfrage auf Newer (neuer als).
    Das heißt du kannst direkt alle Änderungen in einem Gebiet abfragen.
  • Es gibt den Overpass-Turbo.
    Der erledigt für dich z.B. die Darstellung und Einschränkung auf einen Bereich.
    Die Treffer kannst du dir per Mausklick auf der Karte genauer ansehen.

Wenn es dir nur um relevante Änderungen zu deinem Thema geht, kannst du durch Abfrage bestimmter Schlüssel + ggfs. Werte die Menge an Treffer weiter reduzieren.

Edbert (EvanE)

Hallo Edbert,

danke für den Tipp. Dann hätte ich mir die bisherige Recherche wohl sparen können :smiley:

Na ja ich probiere dann mal deine Tipps aus, das hört sich ja schon vielversprechend an!

Grüße,

Christoph

EDIT: Hab es gerade mal ausprobiert, funktioniert ja echt prima. Allerdings ist mir noch nicht ganz klar ob das auch so funktioniert wie ich mir das wünsche. Also die Abfrage die ich geschrieben habe lautet

<code>
<osm-script>
  <query type="node">
  <user name="cziehr"/>
  <newer than="2013-07-08T23:55:00Z"/>
  </query>
  <print/>
</osm-script>
</code>

Wenn jetzt jemand einen meiner Hydranten verschieben würde wäre ich ja nicht mehr der User der die letzte Änderung vorgenommen hat und genau das würde dann ja nicht mehr als Abfrageergebnis auftauchen, oder?

Was ich ja bräuchte wäre im Prinzip

Zeige Objekte an bei denen nicht mehr user="cziehr"

Aber das geht wohl nicht, oder?

Bei der anderen Schreibart kann man bei Tags z.B. statt “highway=road” “highway!=road” schreiben um dieses auszuschliessen. Wie man das in XML übersetzt (irgendwas mit modv=*?) weiss ich jetzt genau so wenig wie ob das auch bei Metadaten funktioniert.

Wenn es nur darum ginge, z.B. die Hydranten eines bestimmten Gebietes zu überwachen, könnten man statt auf user auf emergency=fire_hydrant + newer filtern. Dann werden alle egal von wem geänderten Hydranten angezeigt, aber auch nur diese.

Hmmmm die Idee ist nicht schlecht. Außer den Hydranten würde ich vielleicht auch noch Saugstellen und Rettungspunkte und vielleicht noch 1-2 Sachen überwachen, aber das ist ja wahrscheinlich kein Problem. Danke für deinen Post!

EDIT:

Hmmm also ich hab jetzt folgendes probiert:


  <query type="node">
  <has-kv k="emergency" v="fire_hydrant"/>
  <newer than="2013-07-08T23:55:00Z"/>
  </query>
  <print mode="meta"/>

Aber irgendwie kommt die Abfrage nicht weiter als bis zum Punkt “calling Overpass API interpreter”. Hab ich was falsch gemacht?

Du solltest noch ein Gebiet angeben. Ansosnten wird die ganze Welt abgefragt.

Entweder mittels Area oder Bbox. Wie das geht findest du bei der Dokumentation der API.
Für die Bbox gibt es ein Variable beim Turbo, die den aktuellen Kartenausschnitt automatisch einsetzt.

Edbert (EvanE)

Ja, die hatte ich anfänglich eigentlich drin. Bei irgendeiner Copy&Paste-Aktion hab ich das wohl rausgelöscht.

Funktioniert nun einwandfrei. Jetzt muss mein Auswertungsscript nur noch die Overpass-URL dynamisch für das entsprechende Datum erzeugen, aber das ist kein Problem. Nur heute mach ich das nicht mehr :wink:

Danke an alle Helfer!

Der Nachteil bei der newer Abfrage ist glaube ich, dass man damit gelöschte Objekte nicht mitbekommt (weil die gar nicht mehr da sind).

Wenn Du aus dem ursprünglich erzeugten Diff eine gültige OSM XML Datei bastelst, könnte man die recht einfach mit JOSM oder auch OpenLayers oder Leaflet einlesen und anzeigen. Alternativ könntest Du mit Osmosis derive-change eine Change-Datei (OSC) erzeugen, da hätte ich einen Parser für OpenLayers. Geht halt nur für Punkte, wär in diesem Fall aber ja ausreichend.

Ansonsten gibt es noch UserActivity, das ein statisches Bild der Änderungen zwischen zwei OSM-Files erstellt.

Gruß,
Norbert

Ich würde da - natürlich - ganz anders rangehen:

  • definiere einen “Interessensbereich”, für den die Untersuchung statt finden soll.

  • filtere ALLE dich interessierenden Objekte (hier wohl Hydranten), die innerhalb des Gebietes liegen, einzig aufgrund ihrer speziellen Tags heraus.

    Ich empfehle für sowas Osmosis und eine bbox, ein Grenzpolygon oder ein selbst definiertes Poly-File.
    Die Overpass-Api kann neben der bbox inzwischen auch Poly-Files verwenden.
    Selber mach ich das mit meiner PostGIS-Datenbank, aber das wäre wohl etwas oversized.

  • Vergleiche altes und neues Suchergebnis.

Somit bist du unabhängig von irgendwelchen Usernamen und bekommst Zugänge, Verschiebungen und Löschungen mit. Haupt-Kriterium für Veränderungen sollte die Version sein. Die ist bei jedem Osm-Objekt dabei.

Gruss
walter

Hallo Walter

Für den relativ kleinen Bereich (Reichweite einer Feuerwehr) reichen wahrscheinlich die einfacheren Tools osmconvert, osmfilter und ggfs. osmupdate.
Diese Tools sind sicher nicht so universell wie osmosis, aber dafür deutlich schneller.

PS: Diffs als Inputdaten hätten den Vorteil, dass man auch Löschungen mitbekommt.

Edbert (EvanE)

Knackpunkt meines Vorschlages ist es, Polygone (hier wohl die Stadtgrenze) einzusetzen. Wenn die Tools das können, ok. Wenn nicht …

Bekommt man bei “meiner” Methode auch.

zum Thema Speed:

  • Schritt 1: BBOX um den Ort mit osmfilter & co aus Bundesland ausschneiden
  • Schritt 2: Daraus Grenzpolygon mit osmosis ausschneiden - dürfte maximal 10 Sekunden dauern
  • Schritt 3: auswerten

oder das Ganze mit Overpass

Gruss
walter

Hallo Walter

osmconvert kann auch nach einem Polyfile ausschneiden.

Wie auch immer, cziehr kann aus mehreren Methoden / Werkzeugen auswählen.

Edbert (EvanE)

Prima, dann würde ich an seiner Stelle dieses Tool verwenden.