我使用下面的PHP从kml文件中提取坐标:
$xml = simplexml_load_file('data.kml');
$data = $xml->Document->Folder->Placemark;
foreach ($data as $record) {
$coordinates = $record->MultiGeometry->Polygon->outerBoundaryIs->LinearRing->coordinates[0];
}
这适用于坐标。但是我怎样才能扩展ExtendedData?
我正在使用的kml文件:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>pc4_single_vlak</name>
<visibility>1</visibility>
<Schema name="pc4_single_vlak" id="kml_schema_ft_pc4_single_vlak">
<SimpleField type="xsd:string" name="pc4">
<displayName>pc4</displayName>
</SimpleField>
<SimpleField type="xsd:string" name="woonplaats">
<displayName>woonplaats</displayName>
</SimpleField>
<SimpleField type="xsd:string" name="wplnaam_uniek">
<displayName>wplnaam_uniek</displayName>
</SimpleField>
<SimpleField type="xsd:string" name="gemeente">
<displayName>gemeente</displayName>
</SimpleField>
<SimpleField type="xsd:string" name="provincie">
<displayName>provincie</displayName>
</SimpleField>
</Schema>
<Folder id="kml_ft_pc4_single_vlak">
<name>pc4_single_vlak</name>
<Placemark id="kml_1">
<name>kml_1</name>
<snippet></snippet>
<ExtendedData>
<SchemaData schemaUrl="#kml_schema_ft_pc4_single_vlak">
<SimpleData name="pc4">4001</SimpleData>
<SimpleData name="woonplaats">Tiel</SimpleData>
<SimpleData name="wplnaam_uniek">Tiel</SimpleData>
<SimpleData name="gemeente">Tiel</SimpleData>
<SimpleData name="provincie">Gelderland</SimpleData>
</SchemaData>
</ExtendedData>
<MultiGeometry>
<Polygon>
<outerBoundaryIs>
<LinearRing>
<coordinates>...</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</MultiGeometry>
</Placemark>
</Folder>
</Document>
</kml>
我尝试了各种各样的事情,但我无法让它发挥作用。
答案 0 :(得分:0)
我不确定打嗝在哪里,但希望这提供了一些清晰度。
让我们获取ExtendedData父级:
echo $record->ExtendedData;
但是没有属性,只有子节点,让我们从第一个SchemaData子节点获取schemaUrl:
echo $record->ExtendedData->SchemaData[0]['schemaUrl'];
获取属性时,可以将它们作为元素的索引进行访问。
答案 1 :(得分:0)
我找到了自己的问题的解决方案:)。我认为这不是最好的方法。但是我使用下面的代码来获取不同的SimpleData字段:
echo $record->ExtendedData->SchemaData->SimpleData[0];
echo $record->ExtendedData->SchemaData->SimpleData[1];
echo $record->ExtendedData->SchemaData->SimpleData[2];
ENZ ..
再次。我相信有更好的解决方案。如果有人知道,请发表评论!