0

我需要为每条道路形成一个表格,其中包含 shape_leng 和每条道路的坐标(多线串)列 一条道路可以有任意数量的线,我需要将它们保存在一行中

xml文件是这样的格式:有几条路是多行字符串,有几条只有一行:

我试图解析它

(注意shape_leng对于道路来说是单一的,但对于道路来说坐标线可以是单一的或多条的。)

因此,我无法以特定顺序添加它们,例如shape_leng坐标

4

1 回答 1

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;    
}
于 2012-06-02T21:53:00.127 回答