我需要为每条道路形成一个表格,其中包含 shape_leng 和每条道路的坐标(多线串)列 一条道路可以有任意数量的线,我需要将它们保存在一行中
xml文件是这样的格式:有几条路是多行字符串,有几条只有一行:
我试图解析它
(注意shape_leng对于道路来说是单一的,但对于道路来说坐标线可以是单一的或多条的。)
因此,我无法以特定顺序添加它们,例如shape_leng和坐标。
如果您想将所有坐标插入到单个数据库行中,我认为您必须构造 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;
}