Georreferenciar datos

Aquí de nuevo molestándote, mi pregunta es la siguiente, existe la forma en asp.net de georreferenciar datos de bases de datos en sql server, te doy un ejemplo supongamos que tengo la imagen mapa de un edificio y una base de datos de los integrantes del edificio, que almacena nombre, numero id, piso de ubicación, bloque, numero de apartamento. La idea es que los datos que se muestren en el mapa estén conectado a la base de datos y que si se actualiza la bd, también se actualice el gráfico con los datos. Es similar a lo que hace arc gis en sus mapas.

1 respuesta

Respuesta
1
A ver si entiendo, ¿lo qué tu quieres es un gráfico? ¿O una imagen?
Si es un gráfico, puedes chequear este código que te ayudará a realizarlo:
http://www.elguille.info/colabora/puntoNET/adripulvi_graficotorta.htm
Si es una imagen, pues explicame un poco más al detalle para entender mejor tu idea.
Cordial saludo Eduardo
Eduardo es una imagen tipo plano de un edificio, en dicha imagen se ven las divisiones de los pisos y de los apartamentos. Lo que pretendo si es posible es mediante la imagen ubicar los datos que tengo del piso, numero de apartamento y dueño del mismo. Y que dichos datos se actualicen ante cualquier cambio en la base de datos. Si no soy claro me lo haces saber y la respuesta del gráfico es estupenda la voy a utilizar para otra cosa.
Gracias maestro
Si, ahora está más claro, lo que tu tienes es un plano que no tiene datos y que cuando se muestre se muestre con lo último grabado, pero si hay cambios estos se reflejen en la imagen.
Hay dos formas, la primera y más sencilla es mediante etiquetas DIV posicionándolas en las coordenadas donde se debe mostrar la información, de esa manera la imagen quedará etiquetada, lo malo de esta práctica que si deseas descargar la imagen con esa información no podrás.
Código:
<div style="position:absolute; top:1%; left:0%">TEXTO</div>
Puedes reemplazar TEXTO con un LABEL de ASP, puedes agregar runat="server" e ID="Nombre" para manejar el DIV desde tiempo de ejecución.
Otra forma es tomar la imagen que deberás hacerla permanecer en blanco siempre y al momento de traerla generas una imagen temporal donde le escribas los datos en tiempo de ejecución.
La idea básicamente es realizarle marcas de agua con los datos que debas ponerle, te voy a dejar un ejemplo que usamos en mi empresa para ponerle marcas de agua a las imágenes, obviamente tu deberás modificarlo un poco para hacerlo de manera diferente, sobre todo el posicionar las palabras en una posición diferente cada vez, etc, etc.
Lo bueno de este ejemplo que está comentado (en inglés) por el autor, que dicho sea de paso no es un código mio, tampoco me acuerdo de donde lo tomé, pero gracias a el autor.
Link de descarga:
http://www.negociosnesv.com/marca.txt
El código está en C#
Gracias por tu respuesta, la verdad ni yo me imagino de donde sacaste el código, lo he revisado y de pronto la dificultad esta dada como vos decís en vez de la marca de agua colocar los datos de la base de datos, pero para lo que se necesita no es prioritario que se descargue la imagen(no todavía) me gustaría que me ampliaras un poco más de la primera opción y de nuevo la segunda opción es brillante pero la veo un poco más compleja, disculpa pero la verdad soy más bien novato y no poseo mucha experiencia en c #.
Saludos jhovanny
Bien, el segundo ejemplo de la marca de agua sería cambiar algunas cosas, pero no vamos entrar en detalle.
Sobre el segundo tendrías que hacer tantos DIV como datos trajeras de la BD.
Una forma que yo haría sería con Place Holder que te permite insertar o poner controles en tiempo de ejecución, yo particularmente hago un LABEL y a ese LABEL le pongo código HTML, como el Explorador después interpreta ese código HTML y lo convierte en lo que es para el usuario, puedo de esa manera hacer muchas cosas o moverme según una cantidad de datos (como en este caso) sin tener un montón de objetos en el ASPX esperando para ser usados.
De esta manera creo los objetos que necesito según los necesito.
Te voy a poner un código en C# de como hago yo para mostrar datos de la base de datos y crear los objetos en tiempo de ejecución, la idea es que lo veas lo analices y veas como lo podrías usar tu, la idea aquí también es que pienses un poco y desarrolles la habilidad de programar y no que te de todo en bandeja ¿no?.
Código C#:
while (i <= DstRss.Tables[2].Rows.Count - 1)
        {
            Label Etiqueta = new Label();
            Etiqueta.Attributes.Add("Name", "Etiqueta_" + i.ToString());
            PH1.Controls.Add(Etiqueta);
            Etiqueta.Text = "
<h3 style='color:#090'>" + DstRss.Tables[2].Rows[3].ToString() + "</h3>
";
            Etiqueta.Text = Etiqueta.Text + DstRss.Tables[2].Rows[0].ToString() + "<br /><br />
<hr />
<br /><br />";
            i++;
        }
Te explico un poco, entramos en un While, donde se repetirá mientras I sea menor o igual que la cantidad de registros del DataSet de nombre DSTRSS, obviamente tu deberás llenar el DataSet con la información de tu base da datos para mostrarla.
Creamos un Label de nombre "Etiqueta".
El PlaceHolder de nombre PH1 agregamos el control (para que se vea)
Luego en el atributo TEXT de Etiqueta ponemos el código HTML.
¿Cómo lo haría yo?
Pues algo así
Etiqueta.Text ="<img src='ruta de la imagen' />";
Etiqueta.Text = Etiqueta.Text + "
<div style='posicion:absolute;top:1%;left:50%'>" + DtsRss.Tables[0].Rows["NombreDelCampoDeLaTabla"].ToString() + "</div>
";
Lo que harán estas lineas es, primero poner la imagen y luego el DIV, deberás jugar con el TOP y el LEFT para poner el texto donde debe ir en la imagen.
Deberías ir probando como te queda con datos en duro (sin base de datos).
Si tienes dudas (que las vas a tener) me lo haces saber.
Saludos.
Eduardo.
¿Sos Argentino o Uruguayo?
Me olvidé de agregarte que si tienes problemas con C# o viceversa, El Guille tiene unas herramientas que te ayudan a convertir el código:
Link:
de VB a C#
http://www.elguille.info/NET/WebServices/deVBaCS_web.aspx
de C# a VB
http://www.elguille.info/NET/WebServices/deCSaVB_web.aspx
Te ayudarán a entender los códigos de uno y otro lenguaje.
De nuevo gracias maestro, las indicaciones que me diste son muy buenas y dejan entrever el gran talento que posees, y la verdad ya es mi deber realizar el resto del trabajo, estoy en deuda amigo ya me has sacados de tres obstáculos en un momento conyuntural de mi carrera.
El código de la marca de agua creo que lo tomaste de acá:
http://www.codeproject.com/KB/GDI-plus/watermark.aspx
Y mi nacionalidad es Colombiana, más específicamente de Medellin.
Saludos eduardo y gracias por el interés y la ayuda desinteresada que no solo a mi si no a muchos que la necesitamos. Sin palabras...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas