Ver Mensaje Individual
  #4  
Antiguo 16-12-2009
Avatar de Cabanyaler
Cabanyaler Cabanyaler is offline
Miembro
 
Registrado: jun 2003
Ubicación: País Valencià
Posts: 339
Reputación: 21
Cabanyaler Va por buen camino
Red face Para Navegantes. Como lo he hecho.

Espero que esto sirva a gente interesada en el tema como cualquier post mío.
Aunque sigo interesado en mis dudas de los hilos anteriores.

Bien a grandes rasgos y resumiendo mucho, cuento como lo he solucionado:

Objetivo:
Conseguir tener en una bbdd una tabla puntos de referencia georeferenciados por coordenadas UTM (p.e. cabinas telefónicas, parques infantiles, semáforos, puntos de interés de cualquier tipo...) con información relacional con otras tablas y la funcionalidad que ello ofrece.
Poder ir desde la aplicación que mueve esta bbdd al punto exacto en el GoogleEarth donde se encuentra cada uno de esos puntos para verlo situado.
Y la bidireccionalidad antes mencionada hace referencia a poder ir desde el GoogleEarth mediante click de ratón sobre el punto referenciado automáticamente a la aplicación que mueve la bbdd y situarme sobre la tupla de la tabla que representa ese objeto en el GoogleEarth que contiene dichos puntos de referencia.

Como:
Primero he optado por la generación desde la aplicación de un fichero kml (Punto.kml) con todos los puntos de referencia, traduciendo las coordenadas UTM a las geográficas con las que trabaja el GoogleEarth. Para ello recorro completa la tabla de los puntos de referencia y voy insertando en el kml tantos <Folder> con sus coordenadas como tuplas o puntos tenga en la tabla de la bbdd.
Este kml crea en el GoogleEarth en Lugares Temporales un grupo con todo el contenido de la tabla con sus nombres identificativos.
De este modo desde la aplicación, pongo en el formulario de visualización de estos puntos de referencia un botón que invoca una instrucción que crea y posteriormente ejecuta otro kml (camara.kml) y que se situa a cierta altura sobre el GoogleEath sobre el elemento representado y guardado desde Lugares Temporales a Mis Lugares. Con ello soluciono la ida desde mi aplicación a la visualización del punto en el GoogleEarth.

Para la bidereccionalidad, en el mismo proceso de creación del anterior Punto.kml, creo para cada elemento un fichero bat que contiene una llamada a mi aplicación con el parámetro del identificador del punto sobre el que quiero abrir la aplicación. Existirán por tanto tantos ficheros bat de 1Kb como puntos desee localizar. Del mismo modo y en el mismo proceso también incluyo en el fichero Punto.kml una referencia al bat, que ofrecerá un enlace URL a la ejecución del fichero bat. Con ello soluciono que desde el GoogleEarth y al hacer click sobre el enlace se abra mi aplicación situada sobre la tupla correspondiente el punto

Aquí pongo parte necesaria del código kml :

Camara.kml
Código PHP:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
<name>1-1-2</name>
<Camera id="ID">
<longitude>-0.433410469763336 </longitude>
<latitude>39.6373450821231</latitude>
<altitude>250</altitude>
<altitudeMode>RelativeToGround</altitudeMode>
</Camera>
</Document>
</kml>
Los valores de longitud y latitud, los asigno en el momento pulse el usuario el botón de visualización sobre el GoogleEarth desde la aplicación y situado sobre un punto de interes en su respectivo formulario.
Una vez creado el lo invoco con la instrución:
Código Delphi [-]
ShellExecute(0, 'open', 'C:\Archivos de programa\Google\Google Earth\client\googleearth.exe', 'C:\GIS\BDGIS\Xls\Iconos\Camara.kml', nil, SW_SHOW);

Punto.kml (Sólo un <Folder>) obvio el resto del contenido del kml
Código PHP:
<Folder>
<
name>1-1-1</name>
<
Placemark>
<
name>1-1-1</name>
<
description>
<![
CDATA[<table width="310">
<
th>
<
tr><td>
<
img src C:\GIS\BDGIS\Fotos\1-1-1.jpg width="300" height="400">
</
tr></td>
<
A HREF="C:\GIS\BDGIS\Xls\Bats\1-1-1.bat">Ir a GIS</A>
</
th>
<
tr><td>
<
BR>Callexxxxxx
<BR>Codigo Postalxxxxxxx
   
------- Resto de campos de la tabla a visualizar en la ficha del GoogleEarth
<BR>
<
BR>
]]>
</
description>

<
styleUrl>#1.1.1</styleUrl>
<Point>
<
coordinates>-0.551156959657427,38.8320514219218,0</coordinates>
</
Point>
</
Placemark>
</
Folder
Los valores coordinates, los asigno en el momento he creado el kml.

Y bueno.. os dejo que en dos minutos empieza el Barça en Abu Dhabi.
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí.

Última edición por Cabanyaler fecha: 16-12-2009 a las 16:55:02.
Responder Con Cita