我使用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;
答案 0 :(得分:0)
我在Experts-Exchange上发布了同样的问题并在那里得到了答案。这是针对任何有类似问题的人:
&#34;您对getOSRefFromSixFigureReference()的调用将返回OSRef类的实例。这个类有2个属性 - easting和northing,所以要获得这两个值,你可以访问属性:
$os6x->easting;
$os6x->northing;
在您的问题中,您看起来像是在尝试访问这两个属性,因此您可以创建一个新的OSRef对象。这不是必需的,因为$ os6x已经是OSRef类的一个实例,所以你已经可以调用它上面的各种方法了:
echo $os6x->toLatLng();