搜索此答案未获成功。我有一个从shapefile创建的kml。它包含49个属性。并非所有属性都出现在每个多边形内如果属性出现在多边形中,则属性弹出框将列出所有49个属性,并在所存在的属性旁边放置“X”(请参阅链接)。有没有办法让弹出列表只显示所选多边形中存在的属性列表?
答案 0 :(得分:0)
您所描述的是KML转换器的特定形状如何工作。每个地标的描述元素都是用X生成的。需要使用脚本对KML文件进行后处理,或者需要将自定义形状写入KML转换器。
有一些像GIScore这样的库可以读取KML文件,操作内容然后将它们写回新文件。 GIScore和JAK是可以执行此操作的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);