2009-07-24 11 views
5

¿Alguien tiene algún ejemplo práctico de cómo programar iconos como vectores en KML? Específicamente, tengo datos con una magnitud y un azimut en coordenadas dadas, y me gustaría tener iconos (u otro elemento gráfico) generados en base a estos valores.Creación programática de flechas vectoriales en KML

Algunas ideas sobre cómo podría acercarse a ella:

  1. directorio de imágenes (una forma de fuerza bruta): Hacer un director de imagen de 360 ​​archivos de imagen diferentes (probablemente por lotes girar una sola imagen) cada uno apuntando en un azimut corespondiente. He visto cosas como "Excel to KML", pero estoy buscando un código que pueda usar dentro de un programa, en lugar de una utilidad web. Número: la flecha no contiene contexto de magnitud, por lo que debería ser una etiqueta. Prefiero alargar dinámicamente la flecha.

  2. creación Line en KML: Tal vez crear una fórmula que crea una línea con el origen en los puntos de coordenadas, con la longitud de la línea proporcional a la magnitute, y en ángulo de acuerdo con el azimut. Entonces habría dos líneas más, tal vez 30 grados más o menos que se extienden desde el final de la línea anterior para hacer que la punta de la flecha. Problemas: No es un ícono de imagen separado, por lo que no estoy seguro de cómo funcionaría en KML. Tampoco estoy seguro de lo fácil que sería generar este algoritmo.

  3. generación de imágenes por separado: Tal vez crear un archivo PHP que utiliza ImageMagick o algo similar para generar dinámicamente un archivo .png en un método similar al anterior y, a continuación, enlazar hacia el icono con el URI "domain.tld /imagegen.php?magnitude=magvalue & azimuth = azmvalue ". Issue: Todavía tiene el problema de escribir el algoritmo para la generación de imágenes.

Entonces, la pregunta: nadie ha llegado a soluciones para el vector del programática (en lugar de simplemente flecha) generación?

Respuesta

3

He visto esto hecho (en Fortran!) Con una variante de opción 1, pero usando solo una imagen de una flecha y estableciendo el tamaño y la dirección con el elemento KML IconStyle. El truco consiste primero en convertir sus vectores desde cualquier formato en los encabezados (en grados a la derecha desde el norte, entre 0 y 360 grados) y las longitudes del vector en un factor de escala (un flotante en notación decimal). También necesita darle a cada vector un nombre único. Luego, para cada vector Crear un trozo de KML, digamos por vector "mi-vector-1", con una escala de 1,8 y un título de 90,0 (es decir, este):

<IconStyle id="my-vector-1"> 
    <scale>1.8</scale> 
    <heading>90.0</heading> 
    <Icon> 
     <href>/path/to/arrow.png</href> 
    </Icon> 
</IconStyle> 

y luego colocar el vector en el mapa de referencia del IconStyle:

<Placemark> 
    <styleUrl>#my-vector-1</styleUrl> 
    <Point> 
    <coordinates>-10.5,10.8</coordinates> 
    </Point> 

envolver todo eso en:

<kml><Document> ... </Document></kml> 

y usted debe estar dis jugando un montón de vectores.Conseguir corregir el factor de escala puede llevar algo de experimentación (y dependerá del tamaño de la imagen de la flecha), pero este enfoque debería ser mucho más rápido que cargar muchas imágenes diferentes. Si es de alguna ayuda, probablemente podría desenterrar el Fortran para hacer esto ...

+0

No puedo obtener las imágenes vectoriales para rotar cambiando el rumbo. ¿alguna sugerencia? –