Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Mapas de ciudades (https://www.clubdelphi.com/foros/showthread.php?t=53697)

MAXIUM 27-02-2008 16:03:52

Mapas de ciudades
 
Hola, como puedo crear un programa que me muestre un mapa con calles y avenidas de ciudades en donde yo necesite buscar determinada dirección y al ingresar el nombre de una calle, este muestre su ubicación y resalte en color.

Tengo el mapa creado en formato vectorial.

Neftali [Germán.Estévez] 28-02-2008 10:54:37

Supongo que necesitas tener en una Base de Datos almacenados los valores en Longitud y Latitud de las calles que deseas buscar parea luego eso posicionarlo en los mapas. O algun otro sistema que te permita asociar un nombre de una calle con una posicion del mapa que tienes. Creo que latitud y longitud es lo más universal.

Una vez hayas encontrado la calle se trata de convertir esas coordenadas que tienes en la posición del mapa. Normalmente para mapas muy grandes estos están guardados por secciones, de forma que cada sección corresponde a un intervalo de Longitud/latitud.

No se si es a esto a lo que te refieres, pero es un tema muy amplio. Deberías concretar más...

MAXIUM 28-02-2008 15:58:32

¿Onda, tabla de ajedrez? por ejemplo la calle se encuentra en el recuadro A3.

Mira, este es un plano de lo que me gustaria realizar. Puse buscar determinada calle, me muestra la sección del plano y resalta en color. Además del zoom.

http://s01.divshare.com/thumbs/2008/...83_display.jpg

Delphius 28-02-2008 16:04:27

Hola, disculpa que me meta en el problema... una pregunta que deberías tener en cuenta: ¿Buscas una determinada altura?
Por ejemplo Bulevares 1873... ¿Como harías para saber que estás a la altura 1800-1900 y no en la 200-300?

Ten presente ese hecho, porque las calles puede que tengan un comienzo y un fin... pero si alguien te dice ¿Donde queda la calle Sarmiento? Tu le dirás... mira... ¿a que altura?

Lo que dice Neftali es necesario, pero también debes preveer la altura y sentido de la calle.

Saludos,

Lord Delfos 28-02-2008 23:30:40

Sssss... Hmm...

Francamente esto se debería hacer con grafos... Pero, claro, antes tendrías que aprender qué son los grafos, cómo se usan, volverte bueno programando con ellos y recién después, ponerte a hacer tu programa de mapa de calles...

La alternativa que se me ocurre (que es bastante mala, pero ando flojo de neuroas hoy :p) es la siguiente:

¡WARNING! Stupid ideas from this point on.

Tendrías todas las intersecciones entre TODAS las calles posibles, es decir, todas las esquinas guardadas en una base de datos o lo que fuera.

Después tendrías una matriz TRIDIMENSIONAL (:eek:) gigante (realmente monstruosa). En una dimensión tendrías calles "verticales", en la otra "horizontales" y en la otra una estructura con la altura de ambas calles en esa intersección...

Creo que esa es una opción. Bastante "loca", pero opción al fin. Quizás tengas que esperar a que alguien más cuerdo te alguna otra idea...:rolleyes:

Saludongos.

MAXIUM 28-02-2008 23:55:08

lo de las matrices sería complicado por la memoria o no?

Por ahí he visto que usan shapes (.shp, .dbf y .shx) pero todas utilizan el tipo cuadro de ajedrez para dar una posición.

[Delphius], gracias pero no quiero saber la altura solo la calle completa. Lo de las intesecciones se me ocurre que irian en la misma DB.

No estaría mal aprender algo de grafos. Sigan participando...

zajoma 02-03-2008 21:30:45

localizar calles en un mapa
 
A mi se me ocurre la idea, menos descabellada, de definir el problema. Si sólo quieres que te localice el tramo de calle pues create una base de datos con dos coordenadas que te identifican el rectángulo que contiene dicha calle y el nombre de la calle. Con ello no generarías una tabla monstruosa y es bastánte rápido en la busqueda se creas un índice en X0,Y0,X1,Y1 (coordenadas de las esquinas opuestas de los rectángulos). Si lo que quieres es que además te la coloree no te queda más remedio que definirte los contornos cerrados de las calles y añadir esa información a un campo Blob de tu base de datos. Luego una vez identificada la calle sólo tienes que centrar y escalar el dibujo en función del rectángulo anteriormente citado y rellenar el contorno que guardas en la base de datos. Espero que alluede.

Neftali [Germán.Estévez] 03-03-2008 11:45:32

Creo que Maxium debería aclarar algiunas cosas para centrar un poco más el tema.
¿De cuantas calles estamos hablando?
¿Cual es la dimensión del plano del que estamos hablando?
¿Es un único plano?
¿Cómo haces el Zoom; utilizando el mismo plano u otros de mayor resolución?

MAXIUM 03-03-2008 16:47:30

No se como sea en España, pero en mi caso abarca toda una comuna, por ende muchas calles.

La dimensión del plano de momendo es única, digamos que 6000x6000 pixeles, pero eso no seria problema, ya que se usa la técnica del tablero de ajedrez y solo se muestras los cuadros requeridos.

Esta en formato GIF, pero lo convertire a algún formato vectorial como .EMF por ejemplo.

El zoom se logra con código de este mismo foro ;). Subire un código para que vean como va la cosa, de momento resulta.

Muchas gracias a todos aquellos que han respondio o interesado, esto puede ser útil a más de alguna persona.

axesys 03-03-2008 16:51:18

Checa este hilo creo que es lo que ocupas

http://www.clubdelphi.com/foros/showthread.php?t=4056


Saludos


La franja horaria es GMT +2. Ahora son las 15:52:50.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi