Calles con altura inicial y final

Hola a todos, es la primera vez que posteo algo en el foro. Soy programador y hace un tiempo que estoy trabajando con aplicaciones que utilizan alguna herramienta GIS, debido a un requerimiento laboral estoy trabajando con el proyecto OSM y me han consultado la posibilidad de utilizar alturas para determinar posiciones geográficas en un mapa. Ahora viendo la documentación del proyecto relacionada al tema de las alturas me encuentro con que no hay nada definido aún y que la forma más aceptada, por así decirlo, es el esquema Karlsruhe. Una vez planteado el contexto paso a preguntar, ¿es posible poner una altura inicial y final por cada traza de cada calle? Para los que conozcan PostGIS se van a dar cuenta que es muy fácil determinar una ubicación con altura con estos datos y muchas veces no hace falta que sea tan precisa la búsqueda con que sea aproximada es suficiente. Mi duda puntual es esta y en caso de ser posible les agradecería que me explicaran como hacerlo, ahora seguramente muchos de ustedes objetaran infinidades de cuestiones de trasfondo que tienen que ver con OSM y su funcionamiento. Encontré en una lista de correo una conversación muy interesante, les paso el enlace:

http://lists.openstreetmap.org/pipermail/talk-ar/2008-October/000097.html

Si bien el intercambio de opiniones es muy enriquecedor no se llego a una propuesta concreta pero se pueden sacar muy buenas ideas y bajo mi punto de vista el esquema Karlsruhe y lo que proponen ahí o lo que yo les pregunto pueden coexistir sin necesidad de ser excluyente uno de otro.

No sé si esto puede ayudar: en la ciudad de Buenos Aires existe la particularidad que si te parás mirando en el sentido de alturas crecientes, a la izquierda se encuentran los números pares y a la derecha los impares. Por eso al norte de la avenida Rivadavia los números pares están al Oeste, mientras que al sur están al Este.

Lamentablemente esto no ocurre en otros municipios.

Entiendo que eso pueda suceder pero para lo que yo planteo es totalmente irrelevante, supongamos que tenemos una traza de una calle que en el mejor de los escenarios no se corta en ningún lado y como valor inicial de las alturas es 0 y el final es 5200. Mediante funciones de PostGIS se puede determinar con esos valores una ubicación bastante cerca de la real y hasta inclusive si es par o impar dependiendo de que lado de la traza (linea) se encuentra el punto el cual contiene las coordenadas de latitud y longitud. Lo que se podría hacer es identificar mediante algún tag de que lado se encuentran las alturas pares y las impares y en caso de que en algún momento esto se invierta se podría marcar con un nodo o de alguna otra manera. Pero volviendo a mi duda con que se establezcan los valores iniciales y finales por traza me es suficiente siempre y cuando esto se pueda hacer.

Richard capaz no estoy entendiendo bien, pero con el esquema Karlsruhe se tiene que poder hacer lo que pretendés, salvo los hipotéticos casos (y a mi juicio muy fantásticos sobre todo en nuestro país) donde tengas mapeadas todas las casas. Tenés un segmento a cada lado de la cuadra, que te indica nodo inicial y final y si son números pares o impares. La relación lo que hace es unir todos los segmentos de todas las cuadras y asociarlas a un nombre de calle. Fijate en el centro de Resistencia, Chaco, que está completo, capaz se entiende mejor.

El mayor problema que tenés es que hay muy pocas calles con esa data.

Si no te entendí mal yo planteé lo mismo, que podés mapear las casas y en paralelo llevar un esquema de interpolación. Igual, si no podemos todavía mapear calles te imaginás mapear casas, estamos lejísimos de que tengas ese problema.

Yo agregué interpolación de alturas en varios lugares. Aunque debido a que no me caminé ninguna calle de punta a punta, en realidad no tengo altura inicial y final, sino solo en algunas esquinas :slight_smile:

Mi primera prueba fue en Rincón, Banfield, donde puse una vía de interpolación por cada vereda de cada cuadra. Así lo hace automáticamente el Merkaartor cuando le digo que agregue interpolación Karlsruhe. Después empecé a hacerlo distinto: poner dos vías de punta a punta de la calle, en vez de en cada cuadra (ej. Talcahuano). Estas vías con addr:interpolation tienen un nodo en cada esquina, los cuales tienen addr:street y addr:housenumber indicando la altura en esa esquina.

También estoy usando pseudo=yes para esos nodos, para indicar que no son alturas reales (o sea, que hay una casa con esa dirección en ese punto) sino que están sólo para que la interpolación funcione. Sin embargo, casi nadie usa pseudo=yes en el mapa, probablemente ningún software haga algo con él, y la etiqueta debería tener un mejor nombre. Más que nada la idea es tener la información, para después poder reemplazar masivamente pseudo=yes con algo decente una vez que se haya definido algo decente :slight_smile:

Pueden probar buscando Talcahuano 345 en Nominatim, que encuentra una posición aproximada basándose en los nodos con addr:housenumber=300 y 400, e incluso del lado correcto de la calle (según pares/impares).

Gracias! No conocía este tag todavía. Me parece útil.

Pertile entiendo lo que decís, mi duda era si lo podía hacer con Karlsruhe ya que no lo use nunca y como vos y muchas personas piensas este método es muy laborioso debido a la cantidad de información que se tiene que relevar. La forma que yo proponga sigue siendo válida ya que en definitiva son valores reales solo que no tan exactos, a su vez es mucho más fácil de conseguir un plano de una ciudad con sus respectivas alturas que relevar casa por casa.

¿los terminos de uso de ese plano “facil de conseguir” te permiten usarlo para ingresarlo en OSM?

Si uno va a la municipalidad de cualquier localidad y pide un plano de la ciudad y este contiene los datos de las alturas no creo que haya problema, si son de dominio público. Además nunca vi que en un plano de una ciudad obtenido en catastro o en el palacio municipal se especifique la licencia o los términos de uso, esto puede suceder en planos que pertenezcan entidades privadas.

Karlsruhe se hace cuadra por cuadra, tu propuesta ya se probó una vez, aparte de complicar el mapa no fue muy exitosa.
Si sabes programar JAVA podes ayudar a armar el plugin de JOSM para dibujar Karlsruhe usando interpolación cuadra por cuadra, lamentablemente no lo puede seguir por falta de tiempo

Mmm ahora entiendo un poco mejor, yo pensaba que vos hablabas de numeración cuadra por cuadra, y no toda la calle. Si ponés a toda la calle seguro te va a funcionar mal porque el largo de la cuadra no es uniforme, o bien el ancho de la calle varía mucho con lo cual es muy factible que en una calle larga te tire a 2 cuadras de distancia.

Creo que hay una confusión acá. No es que la interpolación se haga solamente en base a un 0 en una punta de la calle y un 1300 en la otra. Como dice pertile, eso funcionaría horriblemente mal.

Lo que hago yo es poner las vías de interpolación de punta a punta en la calle, pero las vías tienen nodos en cada cruce, y es en esos nodos que está la información de alturas:

Cuando alguien habla de usar la interpolación Karlsruhe “cuadra por cuadra”, lo que interpreto yo no es lo de arriba (porque para mí es obvio que tiene que haber nodos en cada esquina), sino que las vías de interpolación en sí sean una por cuadra:

Sin embargo, esto último me parece más complicado e innecesario, al menos con la información que tengo. Si obtuviera la numeración exacta de las casas en las cuatro esquinas, por ahí sí se justificaría…

No está mal, no se me había ocurrido.
Tira un par de lineas y fijate si el buscador de OSM (página) lo interpreta.
Es un Karlsruhe - Interpolation simplificado

El tema es q los navegadores/buscadores luego lo interpreten

Habría q analizar ventajas y desventajas
-La 1ra desventaja q le veo es q va a quedar feo y confuso el mapa, ya q el nodo de altura se superpone con la calle q la cruza. Difícil de dibujar en forma manual y más aún luego para editar el mapa
+Es fácil de convertir a Karlsruhe, si lo automatizas sería un buen inicio, para luego convertirlo a Karlsruhe

Hagamos una prueba
Elegí una ciudad chica y ponele las lineas con alguna herramienta q lo hago automáticamente. Yo tengo numeración de unas ciudades de 40 manzanas aprox q podes usar como ejemplo real. Vemos como funciona, pulimos tu herramienta, discutimos el tema y luego la publicamos para q la gente cargue la numeración con la app

:wink:

Ya lo probé en el sitio de nominatim y funciona (es más, dejé un link a Talcahuano 345 en un post anterior; probalo :)).

Para dibujar es super fácil, todos los editores tienen una forma de dibujar una vía paralela a la seleccionada. Seleccionás la calle, hacés dos paralelas, les borrás los tags de highway y ponés addr:interpolation en su lugar.

¿Esta parte era respuesta a mí o a Richard07? Yo no tengo ninguna herramienta propia…

Me gusto tu idea Nico, lo único q Birragratis tiene razón, los nodos sobre las vías q cruzan queda confuso a la vista, yo le pondría 2 nodos en cada cruce (1 a cada lado) Con la numeración mas exacta: en vez de 300 a 400, de 300 a 398 en el lado par y 301 a 399 lado impar. Si ya sé es mas laborioso…

En realidad debería ser 301 a 399 y 302 a 400. Al menos así es en la ciudad de Buenos Aires.

Grandioso nicolás!

Yo hace un tiempo habia probado la numeración en Luján basandome en:
http://wiki.openstreetmap.org/wiki/Addresses#Using_interpolation (no se si lo habran visto) Ahí coincide con tu visión de crear un way conectando housenumbers existentes mas la interpolacion creando nodos en las esquinas con (como dice alpertron) 1 a 99 para addr:interpolation=uneven y 2 al 100 para addr:interpolation=even.

No me queda claro si conviene hacer un solo way para cada mano para N cuadras con nodos en las esquinas en lugar de crear un way separado para cada cuadra, mas laborioso pero queda mejor, salvo que no se renderee el Addr:interpolation, lo cual me resultaría mas razonable.