Le 16 avril 2013 21:51, <thevenon.jul...@free.fr> a écrit : > > > J aime bien ton idee, tu peux donner un peu plus de details sur le > fonctionnement interne ? ( cf les questions ci dessous ) >
OK, je vais y répondre, en étant conscient que Christian ne semble pas en accord avec cette proposition, il semble vouloir ne pas aller trop vite dans l'implémentation... il voulait du REST, je lui en propose... il est bien le seul qui ait peur que je travaille trop vite :-) J'attire tout de même son attention sur le fait que mon idée de partir, non pas de la notion d'identification, mais de la notion de critères d'égalité, ou critères de reconnaissance si je parle le plus "comme tout le monde" que je puis, est quand même pas du niveau du codage immédiat ! > > > Le serveur rest renvoie une lien vers une page contenant la liste des id > des objets osm correspondant à ce schéma, page et liens qu'il aura fabriqué > lui même. > > Comment il la fabrique ? > > Je vois ça avec l'overpass api. Le système transforme les critères d'égalité en requête overpass, puis numérote simplement les objets osm réponse, les transforme en une liste de liens, etc. L'URL de la page critère sera du type http://machin/CRITERES ( http://machin/PLACES_PIETONNES dans mon exemple) L'URL de chaque objet OSM sera du type http://machin/CRITERES/idobjet ( http://machin/PLACES_PIETONNES/4567 dans mon exemple). > > Donc, dans l'exemple, à partir de la, il existera dans le serveur rest > une base de liens des places piétonnes, et le serveur renverra l'url d'une > page contenant une liste de liens vers les places piétonnes. Cette page > sera une vue de la base OSM, c'est à dire que si on ajoute ou retire une > place piétonne, alors la liste sera dynamiquement modifiée en fonction. > > Comment tu maintiens la coherence entre la vue et le contenu de la base > OSM ? > > Pour chaque objet de la vue, il n'y a pas de problème il me semble ? Là c'est affaire d'implémentation, Christian va rouspéter si j'en parle trop :-) Le seul choix stratégique sera de savoir si je tolère un certain retard de la vue sur le contenu de la base OSM. Ce n'est pas fondamental me semble-t-il. Pour la liste, c'est plus difficile... Là je pense obligatoire qu'il y ait un certain retard, à voir. Chaque fois que le système mettra la liste à jour, il fera une nouvelle requête overpass, et traitera selon les critères. Si un objet osm correspond à un objet déjà identifié selon les critères donnés, alors il conserve l'id. Sinon, on lui donne un nouvel id. Et si un objet enregistré ne correspond plus à aucun objet dans la requête, alors il est supprimé (mais l'id n'est pas réutilisé). > Le serveur garantit que : > > [...] > > - Si quelqu'un change la valeur d'un des critères d'égalité (par exemple > change les coordonnées), alors le serveur changera l'id de cet objet, > l'ancien id devenant invalide, à moins qu'un autre objet osm devienne > "valide" selon cet id. > > Mais dans ce cas la on perd la trace de l objet non ? si il est deplace > pour etre positionne plus finement cela reste le meme objet. est ce que c > est souhaitable que l ID change ? > > Oui, l'objet changera d'id à ce moment là. Du moins si la définition des critères d'égalité contient les coordonnées et que ça sort de la surface de tolérance. Dans le système que je propose, qui je le crois se rapporte très bien aux objets géographiques, et même mieux que le système d'id des bases de données, (sinon je le proposerai pas) c'est l'utilisateur qui distingue les objets, et donc détermine les critères d'identification des objets, et donc les critères d'égalité. C'est le rendu qui fait l'objet. Je sais que cette approche est complètement opposée à celle proposée habituellement, et apparemment opposée à celle de Christian, mais c'est celle que je défends. Par exemple, on mappe un arrêt de bus, et on dit "Les critères de reconnaissance d'un arrêt de bus, c'est sa position géographique selon tel flou, son nom, sa ligne". Le système lui donnera un id selon ces critères. Et puis on s'aperçoit qu'on l'a mal mappé, qu'on s'est trompé de coté de rue, par exemple. Si le décalage sort du flou de position géographique, alors l'arrêt de bus aura un autre id, sinon, non. C'est à l'utilisateur de se donner le mou qu'il veut à l'avance, et de bien penser le jeux de critères. Normalement, pour un arrêt de bus, le couple "nom-ligne" est suffisant, il n'a pas besoin de mettre la coordonnée géographique. S'il a peur que deux arrêts de bus aient le même nom sur la même ligne (ce qui serait déjà fumeux), alors il rajoute la coordonnée. Si, en plus, il se trompe dans le mapping... OSM ne peut plus rien pour lui, son système est merdique, et il est justifié qu'il donne un nouvel id il me semble :-) > - Si quelqu'un change la valeur d'une propriété de l'objet osm non > incluse dans les critères d'égalité, alors l'id de l'objet ne change pas. > > Meme question que precedemment, comment detectes tu les changements ? > Là je vois pas le problème : si j'admets un certain retard je lis simplement les objets correspondant à la requête périodiquement ; si je n'admets aucun retard, et que la synchro est immédiate, alors je fais une requête à l'overpass api sur cet objet et je renvoie l'objet direct. Si je constate à ce moment là que les critères ne sont plus satisfaits, alors je ne renvoie aucun objet, je refabrique la liste des objets, etc. En fait, ce système est une sorte de proxy ciblé. Il est une façon, pour un domaine d'application, de dire : "Parmi tous les objets d'OSM, nous nous intéressons plus particulièrement à tels et tels objets, dont voici les critères de reconnaissance ; fabriquez nous une sorte de proxy de valeurs avec ça, proxy qui fournit par exemple le service d'identification selon nos propres critères." As usual, si ce que je dis est complètement incompréhensible, ou complètement faux, dites moi :-) Cordialement. -- Les dérives de rue : Profession émotion <http://drivrsdu.fr/profession-emotion/>
_______________________________________________ Talk-fr mailing list Talk-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-fr