6

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

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

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

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

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

所以,问题是:有没有其他人提出程序化向量(而不仅仅是箭头)生成的解决方案?

4

1 回答 1

3

我已经看到使用选项 1的变体完成此操作(在 Fortran 中!) ,但仅使用一个箭头图像并使用 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来做到这一点......

于 2010-03-31T20:28:57.810 回答