更新:我能够使用 Baba 的代码并对其进行修改以完成我希望完成的任务,但是,现在我想将内容写入 CSV 文件。每次创建文件时它都是空的。如何将数据导入 CSV 文件?
我正在尝试创建一个允许我计算位置之间距离的 php 脚本。例如 (A 到 B, A 到 C, A 到 D),(B 到 C, B 到 D),(C 到 D) 其中 A,B,C,D 是纬度和经度对。
Lat 和 Long 是从 CSV 文件中读取的,我希望最终使用 php 创建一个包含所有位置和相互距离的 CSV 文件。截至目前,我能够回显每一列,但无法通过距离函数传递它。任何帮助将不胜感激。
距离.php
<?php
function distance($lat1, $lon1, $lat2, $lon2, $unit) {
$theta = $lon1 - $lon2;
$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) *cos(deg2rad($lat2)) * cos(deg2rad($theta));
$dist = acos($dist);
$dist = rad2deg($dist);
$miles = $dist * 60 * 1.1515;
$unit = strtoupper($unit);
if ($unit == "K") {
return ($miles * 1.609344);
} else if ($unit == "N") {
return ($miles * 0.8684);
} else {
return $miles;
}
}
$file = file("geocode2.csv");
$outfile = fopen('geodis.csv','w');
do {list($lat1, $lon1) = explode(",", array_shift($file));
foreach ( $file as $data ) {
list($lat2, $lon2) = explode(",", $data);
$line = printf("%f,%f to %f,%f = %f Miles <br>",$lat1,$lon1,$lat2,$lon2,distance($lat1, $lon1, $lat2, $lon2, "M"));
fputcsv($outfile, $line);
}
}
while(!feof($file));
fclose($outfile);
?>
地理编码.csv
bg_lat,bg_long
40.8394936,-73.3203704
40.8297023,-73.0942956
40.8853812,-73.1019428
40.858722,-73.20665
40.7503593,-73.1310993