<osm version="0.5" generator="OpenStreetMap server">
<way id="21536389" visible="true" ...>
<nd ref="81551260" aii="2500" aid="2501" afi="2598" afd="2599"/>
<nd ref="81834162" aii="2600" aid="2601" afi="2698" afd="2699"/>
...
<relation id="77" visible="true" timestamp="2006-03-14T10:07:23+00:00"
user="fred">
<member type="way" ref="343" />
<member type="node" ref="911" role="0" />
<member type="node" ref="227" role="100" />
<member type="node" ref="941" role="150" />
<member type="node" ref="217" role="400" />
<tag k="type" v="street_number" />
</relation>
Un tag opcional permitiría indicar si los números pares están a la
izquierda o a la derecha (pero acá definitivamente podríamos incluir algo
más internacional como 1-50 de un lado y 51-100 del otro).
Si se fijan en
http://wiki.openstreetmap.org/index.php/Proposed_features/House_numbers#Voting_2b
la propuesta, que sería perfectamente útil para nosotros es:
<relation id="42">
<member type="node" ref="553" role="" />
<member type="way" ref="104" role="" />
<tag k="type" v="street_number" />
<tag k="street_number_left" v="10" />
<tag k="street_number_right" v="11" />
<tag k="number_left_type" v="even" />
<tag k="number_right_type" v="odd" />
</relation>
Este esquema es la misma idea que plantean ustedes adaptado al modelo de
relaciones de OSM. Tiene una característica importante que es que se
puede usar aun teniendo datos parciales. Si a una calle le ponemos las
alturas del primer y último nodo, probablemente la interpolación a lo
largo de la calle nos dé una posición bastante buena, sin necesidad de
tener los nodos intermedios. Es más, es posible que hasta extrapolar de
resultados satisfactorios en muchos casos.
Esto es especialmente importante en un proyecto como este que va
creciendo orgánicamente.
El problema serio que presenta esto es a qué se considera izquierda y
derecha en una calle. Tenemos que tener en cuenta que es relativamente
sencillo dar vuelta una calle que es doble mano y esto desbarataría por
completo la numeración.
Usando el ejemplo de la calle Charcas, solucionaríamos este problema
incluyendo el nodo inicial y el nodo final en la relación de la
siguiente manera:
<relation id="37425">
<tag k="type" v="ar:street_number"/>
<member type="node" ref="81551260" role="first_node"/>
<member type="node" ref="81834162" role="last_node"/>
<member type="way" ref="21536389" role="way"/>
<tag k="last_street_number_right" v="2599"/>
<tag k="first_street_number_right" v="2501"/>
<tag k="first_street_number_left" v="2500"/>
<tag k="last_street_number_left" v="2598"/>
</relation>
Esto nos vuelve inmunes a que nos den vuelta la calle pero complica
bastante el ingreso de las alturas.
Sin embargo en la Argentina, hasta donde yo sé, la numeración de las
calles tiene una propiedad muy útil y es que siempre crece en el mismo
sentido, por lo que podemos definir el lado derecho e izquierdo de la
calle considerando que la recorremos del número más bajo hacia el más
alto, con lo que volveríamos al ejemplo anterior:
<relation id="37425">
<tag k="type" v="ar:street_number"/>
<member type="node" ref="81551260" role=""/>
<member type="way" ref="21536389" role=""/>
<tag k="street_number_right" v="2501"/>
<tag k="street_number_left" v="2500"/>
</relation>
Ni siquiera nos resulta necesario aclarar de qué lado es par e impar
porque basta con mirar si el primer número de ese lado es par o impar.
Tampoco son necesarios ahora los roles ya que hay un solo nodo y una
sola vía en la relación. A título de ejemplo pueden ver esta relación
implementada en:
http://www.openstreetmap.org/browse/relation/37425
¿Comentarios?
_______________________________________________
Talk-ar mailing list
Talk-ar@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-ar