将GE kml弹出框中的属性限制为仅存在

时间:2016-01-29 16:18:11

标签: kml

搜索此答案未获成功。我有一个从shapefile创建的kml。它包含49个属性。并非所有属性都出现在每个多边形内如果属性出现在多边形中,则属性弹出框将列出所有49个属性,并在所存在的属性旁边放置“X”(请参阅​​链接)。有没有办法让弹出列表只显示所选多边形中存在的属性列表?

picture of pop-up box list with all the attributes

1 个答案:

答案 0 :(得分:0)

您所描述的是KML转换器的特定形状如何工作。每个地标的描述元素都是用X生成的。需要使用脚本对KML文件进行后处理,或者需要将自定义形状写入KML转换器。

有一些像GIScore这样的库可以读取KML文件,操作内容然后将它们写回新文件。 GIScoreJAK是可以执行此操作的Java库。 GIScore还可以读取形状文件并输出KML文件,但您需要使用自定义代码填充描述内容。 GIScore wiki提供了解析KML文件的示例。它很简单,可以创建一个KMLOuputStream,并在读取时写出每个特性。

KmlInputStream kis = new KmlInputStream(...);
KmlOututStream kos = new KmlOutputStream(new FileOutputStream("new.kml"));
for (IGISObject gisObj; (gisObj = kis.read()) != null; ) {
  if (gisObj instanceof Feature) {
    Feature f = (Feature)gisObj;
    String desc = f.getDescription();
    // TODO: re-create description and remove empty fields
    f.setDescription(desc);
  }
  // write each feature to new KML file in same order of original file
  kos.write(gisObj);
}
kos.close();
kis.close);