PHP转换6图网格参考Lat / Long

时间:2018-02-09 15:23:37

标签: php latitude-longitude

我使用PHPcoord package尝试将英国6位数网格参考转换为Lat&长。

根据上面链接中给出的示例。这是一个两部分的过程。

第1部分)将6图网格参考转换为OSGB网格参考。

即:将TG514131转换为(651400,313100)。

给出的例子是:

select *
from Database1.dbo.system
union all
select *
from Database2.dbo.system

第2部分)将OSGB参考转换为Lat&长期:

$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

我遇到的问题是我无法获得第1阶段的输出:

$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();

进入第2阶段的输入:

$os6x->toString()

我尝试将$ os6x-&gt; toString()转换为变量,然后使用:

$os1 = new OSRef(651409.903, 313177.270);

$myvariable = $os6x->toString();

$os1 = new OSRef($myvariable);

$os1 = new OSRef$myvariable;

并且毫不奇怪,没有工作。

您可以告诉我,我并不擅长此事,并且很难在Google上找到任何帮助。

我的下一步是模式匹配$ myvariable然后将其拆分为两个变量并插入它们:

$os1 = new OSRef . $myvariable;

但我确定这不是实现这一目标的正确方法,而且我错过了一些非常简单的事情。

感谢您的帮助。

修改

我在Experts-Exchange上发布了相同的问题并得到了答案。这是针对任何有类似问题的人:

&#34;您对getOSRefFromSixFigureReference()的调用将返回OSRef类的实例。这个类有2个属性 - easting和northing,所以要获得这两个值,你可以访问属性:

$os1 = new OSRef($number1, $number2);

在您的问题中,您看起来像是在尝试访问这两个属性,因此您可以创建一个新的OSRef对象。这不是必需的,因为$ os6x已经是OSRef类的一个实例,所以你已经可以调用它上面的各种方法了:

$os6x->easting;
$os6x->northing;

1 个答案:

答案 0 :(得分:0)

我在Experts-Exchange上发布了同样的问题并在那里得到了答案。这是针对任何有类似问题的人:

&#34;您对getOSRefFromSixFigureReference()的调用将返回OSRef类的实例。这个类有2个属性 - easting和northing,所以要获得这两个值,你可以访问属性:

$os6x->easting;
$os6x->northing;

在您的问题中,您看起来像是在尝试访问这两个属性,因此您可以创建一个新的OSRef对象。这不是必需的,因为$ os6x已经是OSRef类的一个实例,所以你已经可以调用它上面的各种方法了:

echo $os6x->toLatLng();