我想知道是否有人可以帮助我。
我目前使用下面的代码(源自nearby.org.uk)允许用户将OS Grid Refernce转换为Lat& amp; Lng通过HTML表格进行协调。
function converttolatlng() {
var gr = document.getElementById('osgridref').value;
var osgb = new GT_OSGB();
if (osgb.parseGridRef(gr)) {
var wgs84 = osgb.getWGS84();
document.getElementById('osgb36lat').value = wgs84.latitude;
document.getElementById('osgb36lon').value = wgs84.longitude;
}
else {
document.getElementById('osgb36lat').value = "n/a";
document.getElementById('osgb36lon').value = "n/a";
}
}
但是,每月我需要转换大约22,000个OS Grid References的xml列表。由于涉及的数据量很大,使用HTML表单显然不实际,所以我一直在努力实现自动化。该列表源自XML格式,因此我将下面的代码放在一起,将XML数据提取到PHP中。
<?
$objDOM = new DOMDocument();
$objDOM->load("xmlfile.xml");
$note = $objDOM->getElementsByTagName("Details");
foreach( $note as $value )
{
$NGR = $value->getElementsByTagName("NGR");
$ngr = $NGR->item(0)->nodeValue;
echo "$ngr <br>";
}
我现在已经到了一点,我不确定接下来该做什么。我知道我需要通过Javascript函数转换网格引用,另外创建Lat&amp; Lng字段通常会出现在我的HTML表单中。然后我需要能够将这些数据上传到mySQL数据库中的表。
有人可能请看看这个,并告诉我需要转换网格参考以及如何将它们上传到我的数据库。
非常感谢
更新
这是xml文件的摘录:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <Details>
<LISTENTRY>1003886</LISTENTRY>
<NGR>SS 00000 11111</NGR>
</Details>
请找到'geotools'文件here的链接。
答案 0 :(得分:1)
以您描述的方式传递网络服务应该是您的最后选择,this php code the Geograph project可能就是您要找的。如果不是,我建议你将js代码翻译成php。
编辑:
如何整合?我首先阅读OSB36上的一点,以了解<NGR>
中的3个元素究竟是什么以及如何解释它们。最难的部分是将网格数字转换为偏移量(需要与osgb36_to_gridref
相反)。执行此操作的一种方法可以从parseGridRef
geotools2.js
派生