Re: [OSM-talk-fr] carte des points d'eau en Ile-de-France. (besoin de conseils techniques)
Le mercredi 23 septembre 2009, à 01:34:26 +0200, Yann a écrit : Les index, à ma connaissance ils faut les faire à la main, et les recréer après chaque import puisque les tables sont supprimées puis recréées. Pas bien dur de faire un script qui lance psql avec un fichier de requête après avoir lancé osm2pgsql ceci dit. D'un autre côté, c'est un index totalement incompatible avec l'index geographique utilisé pour connaitre la liste des objets pertinents dans la bbox. La solution du delete est donc sans doute très intéressante si le but n'est d'avoir qu'une petite fraction de la totalité des objets. J'ai pas compris cette histoire d'index. Après avoir importé les données avec osm2pgsql, j'ai un index pour la table planet_osm_point osm= \d planet_osm_point_index Index public.planet_osm_point_index Column | Type +--- way| box2d gist, for table public.planet_osm_point Est-ce que c'est cet index dont vous parlez ? Est-t-il créé par osm2pgsql, ou est-t-il interne à postgis ? a+ arno signature.asc Description: Digital signature ___ Talk-fr mailing list Talk-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-fr
Re: [OSM-talk-fr] carte des points d'eau en Ile-de-France. (besoin de conseils techniques)
Je n'avais pas noté la remarque de yann, mais il m'a permis moi aussi de mieux comprendre un comportement que je n'expliquait pas, je tente d'éclairer un peu : Le mercredi 23 septembre 2009, à 01:34:26 +0200, Yann a écrit : Les index, à ma connaissance ils faut les faire à la main, et les recréer après chaque import puisque les tables sont supprimées puis recréées. Ce n'est plus la peine, osm2pgsql se charge de créer automatiquement après chaque import de table : - un index spatial sur le champ way - un index arbre binaire sur le champ osm_id côté, c'est un index totalement incompatible avec l'index geographique utilisé pour connaitre la liste des objets pertinents dans la bbox. et c'est ça que je comprend mieux maintenant ! J'avais cru naïvement que l'on pouvait utiliser un index spatial, cumulé à un arbre binaire sur les types de champs. (J'avoue y avoir réfléchi au niveau programmation sans arriver à me convaincre que c'était possible, mais bon, c'est des magiciens ceux qui codent postgis alors pourquoi pas) Et finalement, après avoir tenté quelques bench, et avec des index de partout, les performances étaient bien moindre dans la majorité des cas (sauf bien sûr dans le cas où on utilises pas de contraintes spatiales) Le dimanche 27 septembre 2009 22:41, arno a écrit : J'ai pas compris cette histoire d'index. Après avoir importé les données avec osm2pgsql, j'ai un index pour la table planet_osm_point osm= \d planet_osm_point_index Index public.planet_osm_point_index Column | Type +--- way| box2d gist, for table public.planet_osm_point Tu dois en avoir un autre aussi : gis=# \d planet_osm_point Indexes: planet_osm2_point_index gist (way) planet_osm2_point_pkey btree (osm_id) Est-ce que c'est cet index dont vous parlez ? Non, je m'étais trompé, je parlais des indexes que osm2pgsql n'ajoute pas, et pour cause, c'est moins performant dans le cas de requête avec bbox (utilisation première du shéma de base par osm2pgsql) Il s'agissait d'indexes qu'on aurait pu ajouter sur le champ amenity par exemple afin de trouver plus rapidement les fontaines. -- sly ___ Talk-fr mailing list Talk-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-fr
Re: [OSM-talk-fr] carte des points d'eau en Ile-de-France. (besoin de conseils techniques)
Le dimanche 27 septembre 2009, à 22:59:17 +0200, sylvain a écrit : Le dimanche 27 septembre 2009 22:41, arno a écrit : J'ai pas compris cette histoire d'index. Après avoir importé les données avec osm2pgsql, j'ai un index pour la table planet_osm_point osm= \d planet_osm_point_index Index public.planet_osm_point_index Column | Type +--- way| box2d gist, for table public.planet_osm_point Tu dois en avoir un autre aussi : gis=# \d planet_osm_point Indexes: planet_osm2_point_index gist (way) planet_osm2_point_pkey btree (osm_id) Effectivement, je l'avais pas remarqué. Est-ce que c'est cet index dont vous parlez ? Non, je m'étais trompé, je parlais des indexes que osm2pgsql n'ajoute pas, et pour cause, c'est moins performant dans le cas de requête avec bbox (utilisation première du shéma de base par osm2pgsql) Il s'agissait d'indexes qu'on aurait pu ajouter sur le champ amenity par exemple afin de trouver plus rapidement les fontaines. ok merci, je crois que j'y vois un peu (mais pas plus) clair. signature.asc Description: Digital signature ___ Talk-fr mailing list Talk-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-fr
Re: [OSM-talk-fr] carte des points d'eau en Ile-de-France. (besoin de conseils techniques)
sylvain letuffe wrote: et c'est ça que je comprend mieux maintenant ! J'avais cru naïvement que l'on pouvait utiliser un index spatial, cumulé à un arbre binaire sur les types de champs. (J'avoue y avoir réfléchi au niveau programmation sans arriver à me convaincre que c'était possible, mais bon, c'est des magiciens ceux qui codent postgis alors pourquoi pas) Et finalement, après avoir tenté quelques bench, et avec des index de partout, les performances étaient bien moindre dans la majorité des cas (sauf bien sûr dans le cas où on utilises pas de contraintes spatiales) Tu peux le faire. Mais la bonne utilisation de ce cas de figure est parfois ésotérique. Ca te donne des bitmap heap hash etc Le résultat n'est pas forcement plus rapide mais il existe des cas bien particuliers ou cela peut être beaucoup plus rapide. Après il faut faire preuve d'imagination sur comment tu construis tes requêtes. Je dirais ça pour Postgresql mais l'analyseur de requête est plus intelligent que celui de SQL server 2000 ou 2005 ou on a parfois des surprises coté performance. (lire 1 ou 2 ordres de magnitudes pour la même requête mais écrite différemment et en utilisant exactement le même index). Emilie Laffray signature.asc Description: OpenPGP digital signature ___ Talk-fr mailing list Talk-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-fr
Re: [OSM-talk-fr] carte des points d'eau en Ile-de-France. (besoin de conseils techniques)
arno a écrit : Je connaissais pas xapi, c'est vraiment intéressant. Mais ça peut être très lent, comme expliquait Pieren. 10 mn pour extraire un fichier osm de 150Ko sur une zone de 20 km x 30 km ! Je voulais extraire les landuse|natural|waterbank... avant nettoyage pour import CLC. Comme je ne sais pas manier osmosis ou autres outils... patience et longueur de temps font plus que force ni que rage Le résultat est ici: http://renevier.net/maps/eau.html C'est dans le mapJumper, thèmes : leisure,POIs http://frvipofm.net/osm/mapjumper/?mode=hub -- Vincent alias FrViPofm ___ Talk-fr mailing list Talk-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-fr
Re: [OSM-talk-fr] carte des points d'eau en Ile-de-France. (besoin de conseils techniques)
Le samedi 19 septembre 2009, à 23:30:03 +0200, sylvain a écrit : Le samedi 19 septembre 2009 22:07, arno a écrit : Maintenant, si je veux réaliser toute la France: - si je veux mettre à jour, ça ne va plus être une bonne idée de télécharger le dump à chaque fois, il va falloir que j'utilise les daily diff. Bof, pas forcément, sur une bonne machine, c'est 1h30 pour importer tout le fichier france.osm avec osm2pgsql. (je ne sais pas pour osmosis) Ensuite, comme tu n'as besoin que des amenity=drinking_water, je dirais que tu en as pour maximum 10 minutes. Donc, à supposer que tu as beaucoup de bande passante, galérer avec les diff ne se justifie pas forcément. Je n'avais pas vu qu'on pouvait choisir ses tags à importer dans osm2pgsql. Du coup, j'utilise osm2pgsql et j'ai ce fichier de conf: node,way amenity text linear node,way drinkabletext linear node,way naturaltext linear qui me permet de récupérer tous les points (et ways) avec amenity, tous ceux avec drinkable etc. Mais je n'ai pas trouvé moyen d'avoir que les amenity=drinking_water Du coup, ça me met plein de trucs inutiles dans ma base de données. Est-ce qu'il y a un moyen de dire à osm2pgsql qu'il faut importer seulement certaines clés avec certaines valeurs. Sinon, est-ce que çà vaut le coup de parser le fichier osm moi-même, ou bien est-ce que ce n'est pas grave d'avoir une base avec plein de trucs inutiles dedans ? J'ai trouvé un exemple sur le wiki[3], mais ça a l'air relativement compliqué. Beuh ? c'est déjà ce que tu as fait ! Cette exemple ne me semble pas décrire une solution tuile/wms server mais un truc coté client, comme tu as déjà sur ton lien. (pas compris) Non, ce que j'avais fait, c'était un système où j'exportais tous les points dans un fichier, et le client le téléchargeait une fois et affichait les points. Ce que je cherchais à faire, c'est un script dynamique qui permet au client de télécharger les points correspondants à la zone d'affichage. J'ai découvert que ça se faisait facilement dans openlayers avec OpenLayers.Strategy.BBOX a+ arno signature.asc Description: Digital signature ___ Talk-fr mailing list Talk-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-fr
Re: [OSM-talk-fr] carte des points d'eau en Ile-de-France. (besoin de conseils techniques)
Le lundi 21 septembre 2009, à 10:55:59 +0200, Etienne a écrit : arno a écrit : - si je veux mettre à jour, ça ne va plus être une bonne idée de télécharger le dump à chaque fois Tu peux utiliser une xapi : rapide, simple, adapté à ton cas : http://osmxapi.hypercube.telascience.org/api/0.6/node[bbox=-6,42,9,51][amenity=drinking_water] Je connaissais pas xapi, c'est vraiment intéressant. Par contre, avec cette requête, il me retourne environ 1500 résultats, dont 300 pour la france, les autres étant, je pense, en Angleterre ou en Allemagne. Du coup, ça m'embête un peu d'avoir pour une carte de France, 80% des pois qui sont dans d'autres pays, près des frontières. D'où ma deuxième question: comment on fait pour mettre ça en place ? J'ai trouvé un exemple sur le wiki[3], mais ça a l'air relativement compliqué. Est-ce que cette a l'air plus compliqué qu'elle n'en a l'air, ou est-ce qu'il y a d'autres méthodes plus simples, ou est-ce que c'est vraiment compliqué de faire ça ? Tu est obligé d'utiliser Dynamic POI. Je l'ai déjà utilisé sur osmose et je peux t'aider si tu veux... mail moi en privé. Au final c'est pas si compliqué que ça : Télécharge : 1. http://osmose.openstreetmap.fr/poi/cgi-src/index.py 2. http://osmose.openstreetmap.fr/poi/DynPoi.js 3. http://osmose.openstreetmap.fr/poi/cgi-src/poi Finalement, j'ai utilisé OpenLayers.Strategy.BBOX et ça fonctionne pas mal. Ensuite, j'ai fait le script php qui envoie les pois en fonction des paramètres. envoyer seulement certains pois un peu au hasard, envoyer certains pois mais tous dans la même zone, ne rien envoyer en deça d'un certain zoom ? Perso, j'envoie les 100 plus proches du centre (requête sql simple). Finalement, j'ai mis une valeur limite à 80, et s'il y a plus de 80 pois dans la zone demandée, on n'affiche aucun poi, mais un message qui dit de zommer. Le résultat est ici: http://renevier.net/maps/eau.html a+ arno signature.asc Description: Digital signature ___ Talk-fr mailing list Talk-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-fr
Re: [OSM-talk-fr] carte des points d'eau en Ile-de-France. (besoin de conseils techniques)
Le mercredi 23 septembre 2009 00:46, arno a écrit : Mais je n'ai pas trouvé moyen d'avoir que les amenity=drinking_water J'avoue ne pas avoir cherché, mais je pense pas que cette option existe. Du coup, ça me met plein de trucs inutiles dans ma base de données. Certes, mais ça doit pas être énormément long à remplir pour autant ? Option à pas cher a posteriori : DELETE from planet_osm_point where amenity!='drinking_water' Mais bon, ça doit pas non plus te ralentir des masses, postgis doit avoir des indexes pour faire les requêtes. Sinon, est-ce que çà vaut le coup de parser le fichier osm moi-même, ou bien est-ce que ce n'est pas grave d'avoir une base avec plein de trucs inutiles dedans ? Je pense que c'est pas si grave aux vues des galères que représente parser le fichier osm soit même. -- sly ___ Talk-fr mailing list Talk-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-fr
Re: [OSM-talk-fr] carte des points d'eau en Ile-de-France. (besoin de conseils techniques)
Les index, à ma connaissance ils faut les faire à la main, et les recréer après chaque import puisque les tables sont supprimées puis recréées. Pas bien dur de faire un script qui lance psql avec un fichier de requête après avoir lancé osm2pgsql ceci dit. D'un autre côté, c'est un index totalement incompatible avec l'index geographique utilisé pour connaitre la liste des objets pertinents dans la bbox. La solution du delete est donc sans doute très intéressante si le but n'est d'avoir qu'une petite fraction de la totalité des objets. Yann Le 23 sept. 2009 à 00:57, sylvain letuffe a écrit : Option à pas cher a posteriori : DELETE from planet_osm_point where amenity!='drinking_water' Mais bon, ça doit pas non plus te ralentir des masses, postgis doit avoir des indexes pour faire les requêtes. ___ Talk-fr mailing list Talk-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-fr
Re: [OSM-talk-fr] carte des points d'eau en Ile-de-France. (besoin de conseils techniques)
arno a écrit : - si je veux mettre à jour, ça ne va plus être une bonne idée de télécharger le dump à chaque fois Tu peux utiliser une xapi : rapide, simple, adapté à ton cas : http://osmxapi.hypercube.telascience.org/api/0.6/node[bbox=-6,42,9,51][amenity=drinking_water] D'où ma deuxième question: comment on fait pour mettre ça en place ? J'ai trouvé un exemple sur le wiki[3], mais ça a l'air relativement compliqué. Est-ce que cette a l'air plus compliqué qu'elle n'en a l'air, ou est-ce qu'il y a d'autres méthodes plus simples, ou est-ce que c'est vraiment compliqué de faire ça ? Tu est obligé d'utiliser Dynamic POI. Je l'ai déjà utilisé sur osmose et je peux t'aider si tu veux... mail moi en privé. Au final c'est pas si compliqué que ça : Télécharge : 1. http://osmose.openstreetmap.fr/poi/cgi-src/index.py 2. http://osmose.openstreetmap.fr/poi/DynPoi.js 3. http://osmose.openstreetmap.fr/poi/cgi-src/poi Les cgi python sont faciles à transformer en php. - dans un système wms, qu'est-ce qu'il vaut mieux faire si l'utilisateur zoome au minimum (dans mon cas, s'il affiche toute la France): envoyer tous les pois, Non, car les navigateurs n'aiment pas afficher plus de 200 images en même temps (compter 20 tuiles et 100 poi). envoyer seulement certains pois un peu au hasard, envoyer certains pois mais tous dans la même zone, ne rien envoyer en deça d'un certain zoom ? Perso, j'envoie les 100 plus proches du centre (requête sql simple). -- Etienne ___ Talk-fr mailing list Talk-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-fr
[OSM-talk-fr] carte des points d'eau en Ile-de-France. (besoin de conseils techniques)
Salut, récemment, on a lancé le projet fontaines wallace[1] qui a permis de cartographier 41 fontaines wallace sur les 112 recensées à Paris, ainsi que 11 dans d'autres endroits de France. Pour visualiser ces fontaines, ainsi que les autres points d'eau de la région parisienne, j'ai mis en place une carte des points d'eau de la région parisienne: http://renevier.net/maps/water.html Les marqueurs verts représentes les fontaines Wallace, les marqueurs bleus représentent les autres points d'eau. J'aimerais bien étendre la carte avec les données sur toute la France métropolitaine, mais je me pose plusieurs questions d'ordre technique: pour réaliser cette carte, j'ai récupéré les données pour l'ile de france sur geofabrik[2], je les ai intégré dans une base de données avec osmosis, puis avec deux requêtes, j'ai crée un fichier de pois[3]. Maintenant, si je veux réaliser toute la France: - si je veux mettre à jour, ça ne va plus être une bonne idée de télécharger le dump à chaque fois, il va falloir que j'utilise les daily diff. D'où première question: admettons que j'utilise les daily diffs avec osmosis pour remplir ma base postgis. Comment çà va se passer les jours où pour X raisons, je n'aurais pas pu avoir de daily diff (parce que ma machine sera éteinte ou que le réseau sera cassé ou je ne sais quoi. Est-ce que vous utilisez des scripts maisons pour noter la date de la dernière maj ou bien il y a d'autres moyens ? - pour l'ile de france, il y a à l'heure actuelle 94 pois. Pour toute la france, je ne sais pas combien il y aura, mais j'imagine que ce sera plus pertinent d'utiliser un système wms. D'où ma deuxième question: comment on fait pour mettre ça en place ? J'ai trouvé un exemple sur le wiki[3], mais ça a l'air relativement compliqué. Est-ce que cette a l'air plus compliqué qu'elle n'en a l'air, ou est-ce qu'il y a d'autres méthodes plus simples, ou est-ce que c'est vraiment compliqué de faire ça ? - dans un système wms, qu'est-ce qu'il vaut mieux faire si l'utilisateur zoome au minimum (dans mon cas, s'il affiche toute la France): envoyer tous les pois, envoyer seulement certains pois un peu au hasard, envoyer certains pois mais tous dans la même zone, ne rien envoyer en deça d'un certain zoom ? voila, je crois que c'est tout pour l'instant a+ arno [1]: http://wiki.openstreetmap.org/wiki/FR:Fontaines_Wallace [2]: http://download.geofabrik.de/osm/europe/france/ [3]: http://wiki.openstreetmap.org/wiki/OpenLayers_Dynamic_POI signature.asc Description: Digital signature ___ Talk-fr mailing list Talk-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-fr
Re: [OSM-talk-fr] carte des points d'eau en Ile-de-France. (besoin de conseils techniques)
Le samedi 19 septembre 2009 22:07, arno a écrit : Maintenant, si je veux réaliser toute la France: - si je veux mettre à jour, ça ne va plus être une bonne idée de télécharger le dump à chaque fois, il va falloir que j'utilise les daily diff. Bof, pas forcément, sur une bonne machine, c'est 1h30 pour importer tout le fichier france.osm avec osm2pgsql. (je ne sais pas pour osmosis) Ensuite, comme tu n'as besoin que des amenity=drinking_water, je dirais que tu en as pour maximum 10 minutes. Donc, à supposer que tu as beaucoup de bande passante, galérer avec les diff ne se justifie pas forcément. D'où première question: admettons que j'utilise les daily diffs avec osmosis pour remplir ma base postgis. Comment çà va se passer les jours où pour X raisons, je n'aurais pas pu avoir de daily diff (parce que ma machine sera éteinte ou que le réseau sera cassé ou je ne sais quoi. Avec la bonne config (--rci de osmosis si je me souviens bien) il reprendra ce qu'il a manqué à condition que ça ne dépasse pas le temps de conservation sur le serveur openstreetmap.org Est-ce que vous utilisez des scripts maisons pour noter la date de la dernière maj ou bien il y a d'autres moyens ? J'utilise un script maison, car osmosis ne savait pas faire à l'époque, mais maintenant il sait. - pour l'ile de france, il y a à l'heure actuelle 94 pois. Pour toute la france, je ne sais pas combien il y aura, mais j'imagine que ce sera plus pertinent d'utiliser un système wms. A voir, c'est beaucoup de galère pour juste ça. Donc soit tu as une envie de découverte et alors lance toi dans les méandres de mapnik ou mapserver et les petits copains qui les accompagne (le wiki a tout... dont mon super tutoriel ;-) ) soit tu limites l'affichage à ~100 pois, de toute façon plus, et ça devient illisible ! J'ai trouvé un exemple sur le wiki[3], mais ça a l'air relativement compliqué. Beuh ? c'est déjà ce que tu as fait ! Cette exemple ne me semble pas décrire une solution tuile/wms server mais un truc coté client, comme tu as déjà sur ton lien. (pas compris) - dans un système wms, qu'est-ce qu'il vaut mieux faire si l'utilisateur zoome au minimum (dans mon cas, s'il affiche toute la France): envoyer tous les pois, envoyer seulement certains pois un peu au hasard, envoyer certains pois mais tous dans la même zone, ne rien envoyer en deça d'un certain zoom ? Ha... j'ai peut-être compris, tu veux monter un wms vectoriel qui transmet on demand les poi de la zone. Broaf, marteau pour une fourmi ;-) (à moins de vouloir le rendre dispo à moulte site partenaires dans un protocol standard ) sinon, tu remplaces dans ton code le location:./water_pois.txt par location:./water_pois.php (je sais pas comment on lui fait passer des paramètres avec openlayers, mais ça doit se faire) et coté serveur ton php (ou python, ou perl, ou ce qui te plait) va faire la requête on demand et zou. -- sly ___ Talk-fr mailing list Talk-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-fr