以KML编程方式创建矢量箭头

时间:2009-07-24 17:11:43

标签: algorithm kml vector

有没有人有任何以KML编程方式将图标绘制为矢量的实际示例?具体来说,我在给定坐标处有一个幅度和方位角的数据,我想根据这些值生成图标(或其他图形元素)。

关于我如何处理它的一些想法:

  1. 图像目录(强力方式):制作360个不同图像文件的图像控制器(可能是批量旋转单个图像),每个图像文件指向一个相应的方位角。我见过类似“Excel to KML”的内容,但我正在寻找可以在程序中使用的代码,而不是Web实用程序。 问题:箭头不包含幅度上下文,因此必须是标签。我宁愿动态地拉长箭头。

  2. KML中的线条创建:也许创建一个公式,在坐标点处创建一条原点线,线条的长度与大小成比例,并根据方位角成角度。然后会有两条线,也许是从前一条线的末端延伸30度左右,以使箭头成为头部。 问题:不是单独的图片图标,因此不确定它在KML中的工作方式。也不确定生成此算法有多容易。

  3. 单独生成图像:或许创建一个使用imagemagick或类似内容的PHP文件,以与上述类似的方法动态生成.png文件,然后使用链接到图标URI“domain.tld / imagegen.php?magnitude = magvalue& azimuth = azmvalue”。 问题:仍然存在实际编写图像生成算法的问题。

  4. 那么,问题:有没有其他人想出程序化矢量(而不仅仅是箭头)生成的解决方案?

1 个答案:

答案 0 :(得分:3)

我已经看到这个(在Fortran!中)使用选项1 的变体,但只使用箭头的一个图像并使用KML IconStyle元素设置大小和方向。

诀窍是首先将你的矢量从你拥有它们的任何格式转换为标题(从北到顺时针的度数,在0到360度之间),并将矢量长度转换为比例因子(十进制表示法中的浮点数)。您还需要为每个向量指定一个唯一的名称。然后为每个向量创建一个KML块,比如矢量“my-vector-1”,比例为1.8,标题为90.0(即东):

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

然后将矢量放在地图上引用IconStyle:

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

将所有内容包括在内:

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

你应该显示一堆矢量。获得比例因子可能需要一些实验(并且将取决于箭头图像的大小),但这种方法应该比加载大量不同的图像快得多。如果有任何帮助,我可能会挖出Fortran来做这件事......