【发布时间】:2018-02-09 15:23:36
【问题描述】:
我正在使用PHPcoord package 尝试将英国 6 位数网格参考转换为经纬度。
根据上面链接中给出的示例。这是一个两部分的过程。
第 1 部分)将 6 图网格参考转换为 OSGB 网格参考。
即:将 TG514131 转换为 (651400, 313100)。
给出的例子是:
$os6 = "TG514131";
echo "Six figure string: " . $os6 . "<br />";
$os6x = getOSRefFromSixFigureReference($os6);
echo "Converted to OS Grid Ref: " . $os6x->toString() . " - " . $os6x->toSixFigureString();
Six figure string: TG514131
Converted to OS Grid Ref: (651400, 313100) - TG514131
第 2 部分)通过以下方式将 OSGB 引用转换为经纬度:
$os1 = new OSRef(651409.903, 313177.270);
echo "OS Grid Reference: " . $os1->toString() . " - " . $os1->toSixFigureString() . "<br />";
$ll1 = $os1->toLatLng();
echo "Converted to Lat/Long: " . $ll1->toString();
我遇到的问题是我无法获得第一阶段的输出:
$os6x->toString()
进入第二阶段的输入:
$os1 = new OSRef(651409.903, 313177.270);
我尝试将 $os6x->toString() 转换为变量,然后使用:
$myvariable = $os6x->toString();
$os1 = new OSRef($myvariable);
或
$os1 = new OSRef$myvariable;
或
$os1 = new OSRef . $myvariable;
不出所料,没有任何工作。
如您所知,我在这方面不是很擅长,并且正在努力在 Google 上寻求任何帮助。
我的下一步是对 $myvariable 进行模式匹配,然后将其拆分为两个变量并像这样插入它们:
$os1 = new OSRef($number1, $number2);
但我确信这不是实现这一目标的正确方法,而且我遗漏了一些非常简单的东西。
感谢您的帮助。
编辑
我在Experts-Exchange 上发布了同样的问题并得到了答案。这是给有类似问题的人的:
“您对 getOSRefFromSixFigureReference() 的调用会返回 OSRef 类的一个实例。该类有 2 个属性 - 东向和北向,因此要获得这两个值,您可以访问这些属性:
$os6x->easting;
$os6x->northing;
在您的问题中,您似乎正在尝试访问这两个属性,以便您可以创建一个新的 OSRef 对象。这不是必需的,因为 $os6x 已经是 OSRef 类的一个实例,所以你已经可以调用它的各种方法了:
echo $os6x->toLatLng();
【问题讨论】:
-
这是在 Experts-Exchange 上为我解答的。我已将答案添加到我原来的问题中,以防其他人遇到此问题。