Re: [OSM-talk-fr] carte des points d'eau en Ile-de-France. (besoin de conseils techniques)

2009-09-27 Par sujet arno
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)

2009-09-27 Par sujet sylvain letuffe
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)

2009-09-27 Par sujet arno
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)

2009-09-27 Par sujet Emilie Laffray
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)

2009-09-23 Par sujet Vincent Pottier
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)

2009-09-22 Par sujet arno
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)

2009-09-22 Par sujet arno
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)

2009-09-22 Par sujet sylvain letuffe
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)

2009-09-22 Par sujet Yann Coupin
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)

2009-09-21 Par sujet Etienne Chové
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)

2009-09-19 Par sujet arno
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)

2009-09-19 Par sujet sylvain letuffe
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