-2

有这个csv 文件,我希望将它导入到我的 MySQL 数据库中,只需输入邮政编码即可绘制我想要的所有多边形。在这个文件中我有

  • 邮政编码
  • 坐标列表(我的想法是使用所有坐标来绘制准确的多边形
  • 一个名为“区域”的字段(我不知道如何使用此信息)

我的第一个问题是如何解析这个文件以将我的数据库中的数据保存为 3 列

|邮政编码|纬度|经度

你能帮忙解决这个问题吗?或者如果你知道的话建议我一个更好的方法。

谢谢。

编辑:我尝试使用此 php 代码编辑每次字符串

$fname = "uk.csv";
$fhandle = fopen($fname,"r");
$content = fread($fhandle,filesize($fname));

$content = str_replace('"<MultiGeometry><Polygon><outerBoundaryIs><LinearRing><coordinates>', '', $content);

$fhandle = fopen($fname,"w");
fwrite($fhandle,$content);
fclose($fhandle);

但这个文件是同质的,因为并非所有行都以相同的字符串开头

<MultiGeometry><Polygon><outerBoundaryIs><LinearRing><coordinates>

但也只有

<Polygon><outerBoundaryIs><LinearRing><coordinates>
4

1 回答 1

1

这不仅是一个字符串,还是一个有效的 XML。

使用 DOM 方法解析字符串。

简单的例子:

  //create DOMDocument
$doc=new DOMDocument();
  //load the source from string
$doc->loadXML('<MultiGeometry><Polygon><outerBoundaryIs><LinearRing><coordinates>0.167014,51.79976,0.0 0.167634,51.79976,0.0 0.177091,51.796733,0.0 0.181105,51.793738,0.0</coordinates></LinearRing></outerBoundaryIs></Polygon></MultiGeometry>');
  //fetch the coordinates-nodes
$coords=$doc->getElementsByTagName('coordinates');
  //get the content of the first <coordinates/>
echo $coords->item(0)->nodeValue;
  //returns:
  //0.167014,51.79976,0.0 0.167634,51.79976,0.0 0.177091,51.796733,0.0 0.181105,51.793738,0.0
于 2013-11-03T00:08:54.040 回答