我需要为每条道路形成一个表格,每条道路都有一个shape_leng和一个坐标(多线串)列,我需要将它们保存在一行中的道路可以有任意数量的行
Xml文件具有以下格式:一些道路是多行字符串,而其他一些道路只有一行:
我试图解析它
(请注意, shape_leng 对于道路来说是单一的,但道路的坐标线可以是单个或多个。)
所以我无法按照 shape_leng 和坐标等特定顺序添加它们。
答案 0 :(得分:1)
如果要将所有坐标插入到单个数据库行中,我认为您必须以不同方式构造XPath和循环。循环通过道路,然后使用XPath获取属于该道路的所有坐标。例如:
// get all the roads and loop through them
$roads = $xml->xpath("//e:featureMember/b:AA_ROAD");
$i=0;
while(isset($roads[$i]))
{
// get the coordinates for the current road
$coordinates = $roads[i]->xpath("/b:the_geom/e:MultiLineString/e:lineStringMember/e:LineString/e:coordinates");
$shapel = $roads[i]->xpath("/b:SHAPE_Leng");
// add a second loop to concatinate all the $coordinates
$j=0;
while (isset($coordinates[$j])) {
// TODO concatinate coordinates
}
// insert the row
$b=mysql_query("INSERT IGNORE INTO `new`.`road1` (`coordstr`, `shapeleng`) values (GEOMFROMTEXT(concat('MULTILINESTRING ($a )')), '$shapel[$i]') ");
$i++;
echo "<br />";
echo $i;
}