SlideShare a Scribd company logo
Osmose La détection automatique d’anomalies Frédéric Rodrigo <fred.rodrigo  gmail.com> La Cantine - Paris 07/10/2011 – (c)left 2011 - CC-BY-SA v3.0 @
Osmose Frontend Backends Plugin
JOSM
Backends Analyseurs
Fréquence : une région toutes les 2h Limité par les serveurs OSM 5/6
Nouveau serveur OSM 7/8 Téléchargement des extracts Geofabrik
Analyseurs Récupération de données externes OpenStreetBugs, Géodésie Analyseur SAX des .osm Plugins Bases osm2pgsql (deprecated) Requêtes GIS Bases osmosis Requêtes
Requêtes GIS
Analyseurs analyser()
Construit un fichier XML
Analyseur SAX : Plugins Passe tous les éléments du fichier .osm en revue

More Related Content

ODP
Mikstura it2013
PDF
数式を構文解析した話
PDF
Тененёв Анатолий, Boost.Asio в алгоритмической торговле
TXT
Suma de n numeros
PDF
I will be callback/JS同步與非同步
PPTX
JavaScript Assíncrono
PPT
从问题开始,前端,架构、框架与库的实战
PDF
openFrameworks基礎 動きを生みだす、アニメーション入門 - 芸大グラフィックスプログラミング演習B
Mikstura it2013
数式を構文解析した話
Тененёв Анатолий, Boost.Asio в алгоритмической торговле
Suma de n numeros
I will be callback/JS同步與非同步
JavaScript Assíncrono
从问题开始,前端,架构、框架与库的实战
openFrameworks基礎 動きを生みだす、アニメーション入門 - 芸大グラフィックスプログラミング演習B

What's hot (17)

PDF
Java script.trend(spec)
DOCX
Propuesta..sujei
PDF
Rambler.iOS #8: Чистые unit-тесты
PPTX
Алексей Кутумов, C++ без исключений, часть 3
DOCX
Bifurcaciones (Ejemplo)
PDF
openFrameworks、プログラムの制御構造の基本 - 多摩美メディアアートII
PDF
JUG.ua 20170225 - Java bytecode instrumentation
ODP
Антон Полухин. C++17
PDF
Grouping object1
DOCX
Ejercicios
PPTX
The Flavor of TypeScript
PDF
서버리스에 람다 대해 알아보자 [이론편] - 1
PDF
D2D Pizza JS Игорь Ковган "Koa поможет"
PDF
An introduction to functional programming with Go [redux]
DOCX
matrix operation using operator overloading
PDF
PDF
[KOSSA] C++ Programming - 14th Study - template
Java script.trend(spec)
Propuesta..sujei
Rambler.iOS #8: Чистые unit-тесты
Алексей Кутумов, C++ без исключений, часть 3
Bifurcaciones (Ejemplo)
openFrameworks、プログラムの制御構造の基本 - 多摩美メディアアートII
JUG.ua 20170225 - Java bytecode instrumentation
Антон Полухин. C++17
Grouping object1
Ejercicios
The Flavor of TypeScript
서버리스에 람다 대해 알아보자 [이론편] - 1
D2D Pizza JS Игорь Ковган "Koa поможет"
An introduction to functional programming with Go [redux]
matrix operation using operator overloading
[KOSSA] C++ Programming - 14th Study - template
Ad

Viewers also liked (7)

ODP
Osmose, quality assurance tool
PPS
Prezentare Plai cu Boi
ODP
Requêtes osmosis + gis
ODP
Osmose-QA OpenData
PDF
POV 18 - Mixin' it up (1)
DOCX
Registry docu flat
PPTX
Suncharge EV Carport
Osmose, quality assurance tool
Prezentare Plai cu Boi
Requêtes osmosis + gis
Osmose-QA OpenData
POV 18 - Mixin' it up (1)
Registry docu flat
Suncharge EV Carport
Ad

More from Frédéric Rodrigo (20)

PDF
OSXP 2021 - MAKINA MAPS
PDF
Cartography: Vector Tiles From an Open Initiative To an Industry Standard
PDF
Osmose-QA, OpenData, Mapillary and MapCSS
PDF
Automatic Enhancement of Pedestrian Route using extracted Landmarks from OSM
ODP
Annoter automatiquement un itinéraire piéton avec des repères issus d'OSM
ODP
Osmose-QA, Qualité et intégration de données
ODP
OSRM, Utilisation avancée
ODP
Open Traffic
ODP
ODP
OSRM L'état du routage
ODP
OSRM - Open Source Routing Machine
ODP
Addok, BAN et BANO dans un bateau
ODP
ODP
20150607 sotm-us-osmose-qa
ODP
ODP
Osmose : la conquête du monde
ODP
5/5 Osm 20141118-l2.3-réutilisation
PDF
4/5 Osm 20141118-l2.2-collecte et contribution
ODP
3/5 Osm 20141118-l2.1-être à l'aise avec open streetmap
ODP
2/5 Osm 20141106-l1.2-initiation à la contribution
OSXP 2021 - MAKINA MAPS
Cartography: Vector Tiles From an Open Initiative To an Industry Standard
Osmose-QA, OpenData, Mapillary and MapCSS
Automatic Enhancement of Pedestrian Route using extracted Landmarks from OSM
Annoter automatiquement un itinéraire piéton avec des repères issus d'OSM
Osmose-QA, Qualité et intégration de données
OSRM, Utilisation avancée
Open Traffic
OSRM L'état du routage
OSRM - Open Source Routing Machine
Addok, BAN et BANO dans un bateau
20150607 sotm-us-osmose-qa
Osmose : la conquête du monde
5/5 Osm 20141118-l2.3-réutilisation
4/5 Osm 20141118-l2.2-collecte et contribution
3/5 Osm 20141118-l2.1-être à l'aise avec open streetmap
2/5 Osm 20141106-l1.2-initiation à la contribution

Osmose

  • 1. Osmose La détection automatique d’anomalies Frédéric Rodrigo <fred.rodrigo gmail.com> La Cantine - Paris 07/10/2011 – (c)left 2011 - CC-BY-SA v3.0 @
  • 5. Fréquence : une région toutes les 2h Limité par les serveurs OSM 5/6
  • 6. Nouveau serveur OSM 7/8 Téléchargement des extracts Geofabrik
  • 7. Analyseurs Récupération de données externes OpenStreetBugs, Géodésie Analyseur SAX des .osm Plugins Bases osm2pgsql (deprecated) Requêtes GIS Bases osmosis Requêtes
  • 11. Analyseur SAX : Plugins Passe tous les éléments du fichier .osm en revue
  • 12. Appelle les plugins pour chaque éléments
  • 13. Analyseur SAX : Plugins Périmètre d’application only_for = [&quot;FR&quot;] Méthodes init()
  • 15. way()
  • 16. relation() Retourne une message si erreur détecté
  • 17. Plugin : TagManquant_RondPoint class TagManquant_RondPoint(Plugin): err_102 = 3010 err_102_fr = u&quot;Tag highway manquant sur junction=roundabout&quot; err_102_en = u&quot;Tag highway missing on junction=roundabout&quot; def way(self, data, tags, nds): if u&quot;junction&quot; not in tags: return if u&quot;highway&quot; not in tags: return [(102, 0, {})]
  • 18. Plugin : TagWatchWikipedia def init(self, logger): self.Wiki = re.compile(u&quot;http://([^\.]+)\.wikipedia.+/(.+)&quot;) def node(self, data, tags): err = [] if &quot;wikipedia&quot; in tags: if tags[&quot;wikipedia&quot;].startswith(&quot;http://&quot;): m = self.Wiki.match(tags[&quot;wikipedia&quot;]) if m: err.append((3031, 1, {&quot;en&quot;: u&quot;wikipedia=%s => wikipedia=%s:%s&quot;})) else: err.append((3031, 0, {&quot;en&quot;: u&quot;Not a wikipedia URL&quot;})) return err def way(self, data, tags, nds): return self.node(data, tags)
  • 19. Analyseur osmosis def analyser(config, logger = None): gisconn = PgSQL.Connection(config.dbs) giscurs = gisconn.cursor() apiconn = OsmOsis.OsmOsis(config.dbs, config.dbp) outxml = OsmSax.OsmSaxWriter(open(config.dst, &quot;w&quot;), &quot;UTF-8&quot;) ## output headers outxml.startDocument() outxml.startElement(&quot;analyser&quot;, {&quot;timestamp&quot;: time.gmtime()}) outxml.startElement(&quot;class&quot;, {&quot;id&quot;:&quot;1&quot;, &quot;item&quot;:&quot;1040&quot;}) outxml.Element(&quot;classtext&quot;, {&quot;lang&quot;:&quot;fr&quot;, &quot;title&quot;:&quot;Polygone invalide&quot;}) outxml.endElement(&quot;class&quot;) giscurs.execute(&quot;SET search_path TO %s,public;&quot; % config.dbp) giscurs.execute(&quot;SELECT id FROM ways&quot;) for res in giscurs.fetchall(): ## output data outxml.startElement(&quot;error&quot;, {&quot;class&quot;:&quot;1&quot;}) outxml.WayCreate(apiconn.WayGet(res[0])) outxml.endElement(&quot;error&quot;) outxml.endElement(&quot;analyser&quot;) ## output footers outxml._out.close()
  • 20. Résultat d'analyse <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <analyser timestamp=&quot;2011-09-26T20:20:55Z&quot;> <class item=&quot;7011&quot; id=&quot;1&quot;> <classtext lang=&quot;fr&quot; title=&quot;Monument historique&quot; /> </class> <error class=&quot;1&quot; subclass=&quot;7351311549282023996&quot;> <location lat=&quot;49.1182439431&quot; lon=&quot;6.17654968492&quot; /> <text lang=&quot;fr&quot; value=&quot;Manque monument historique name=Immeuble heritage=* (Inscrit); heritage:operator=mhs; ref:mhs=PA0010686 mhs:inscription_date=1947 (20 rue Ladoucette, Metz)&quot; /> </error>

Editor's Notes

  • #2: http://datenkueche.com/osmlive/