【发布时间】:2018-02-05 17:48:48
【问题描述】:
我正在尝试将 csv 文件转换为 GeoJSON,然后在 Google 地图上显示结果。
特征集合中的最后一个特征后面不应该有逗号,所以我需要检测哪一行是 fgetcsv 中的最后一行并去掉逗号,我正在努力解决这个问题。
这是我目前的代码:
<?php
$file = fopen("Incident_List.csv","r");
echo "{<br>";
echo "\"type\": \"FeatureCollection\",<br>";
echo "\"features\": [<br>";
$csvflag = true;
while(! feof($file))
{
while (($data = fgetcsv($file)) !== FALSE) {
if($csvflag) { $csvflag = false; continue; }
echo "{<br>";
echo "\"geometry\": {<br>";
echo "\"type\": \"Point\",<br>";
echo "\"coordinates\": [<br>";
echo $data[2] . "," . $data[1] . "<br>";
echo "]<br>";
echo "},<br>";
echo "\"type\": \"Feature\",<br>";
echo "\"properties\": {<br>";
echo "\"Category\":\"" . $data[4] . "\",<br>";
echo "\"Grid Reference\":\"" . $data[0] . "\",<br>";
echo "\"Day\":\"" . $data[3] . "\",<br>";
echo "\"Date\":\"" . $data[4] . "\",<br>";
echo "\"Type Of Incident\":\"" . $data[5] . "\",<br>";
echo "\"Area\":\"" . $data[7] . "\",<br>";
echo "\"Sex\":\"" . $data[8] . "\",<br>";
echo "\"Age\":\"" . $data[9] . "\",<br>";
echo "\"Members\":\"" . $data[10] . "\",<br>";
echo "\"Hours\":\"" . $data[11] . "\",<br>";
echo "\"Notes\":\"" . $data[12] . "\",<br>";
echo "}<br>";
echo "},<br>";
}
}
fclose($file);
?>
这是我试图实现的输出示例:
{
"type": "FeatureCollection",
"features": [
{
"geometry": {
"type": "Point",
"coordinates": [
-3.224752,
55.891831
]
},
"type": "Feature",
"properties": {
"category": "misper",
"hours": "10am - 6pm",
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam aliquam erat non tellus pellentesque, non euismod quam lacinia. Sed ac ex non eros aliquam sagittis. Etiam iaculis turpis sit amet arcu viverra, ac cursus sem feugiat. Sed fermentum dolor non mauris semper, eu pulvinar dolor feugiat.",
"name": "Missing Person",
"phone": "+44 20 1234 5678"
}
},
{
"geometry": {
"type": "Point",
"coordinates": [
-2.631056,
55.243980
]
},
"type": "Feature",
"properties": {
"category": "walker",
"hours": "10am - 6pm",
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam aliquam erat non tellus pellentesque, non euismod quam lacinia. Sed ac ex non eros aliquam sagittis. Etiam iaculis turpis sit amet arcu viverra, ac cursus sem feugiat. Sed fermentum dolor non mauris semper, eu pulvinar dolor feugiat.",
"name": "Injured Walker",
"phone": "+44 20 1234 5678"
}
}
]
}
感谢您的帮助。
【问题讨论】:
-
如果 $csvflag = false 则将
,放在开头 -
老兄,建立一个数组然后
json_encode它! -
所有那些
<br>都会扼杀接收到这个的东西。 -
感谢您的 cmets。根据我对下面不要恐慌的评论。我之前尝试过使用 json_encode,但它会将坐标用引号括起来,如果我这样做,GeoJSON 就会失败。注意:
只是在浏览器中输出,不会进入 json 文件。