有没有办法使用Linux命令行或C ++

时间:2017-05-31 01:32:04

标签: c++ linux geolocation timezone

我需要在其时区上近似嵌入式linux设备的地理定位坐标。这是一个独立的设备,它没有连接到inetrnet,因此只能使用存储在本地文件系统上的数据。

zone.tab数据库存储每个时区中主要城市的坐标信息(纬度和经度),但是我还没有找到一个使用c ++读取这些信息的简单界面。

PHP提供了一个接口DateTimeZone::getLocation来访问此信息。是否有C ++或Linux系统接口来做同样的事情?

很明显,我可以编写自己的界面来读取文件并转换数据,但我更愿意实现更标准化的解决方案。

1 个答案:

答案 0 :(得分:0)

在Linux系统上,zone.tab文件部署到/usr/share/zoneinfotzselect等程序直接使用它。它不是通过通用的OS级API公开的。

PHP不使用此信息。它有自己的tzdata编译器,并在timezonedb包中包含区域信息(包括zone.tab) - 它嵌入在每个PHP版本中,或can be downloaded separately from PECL。除非您已经在系统中发布PHP,否则您可能不希望从此处获取它。

最终,如果您的计算机上没有/usr/share/zoneinfo/zone.tab,并且您需要访问它,那么您应该直接从the tzdata distribution获取它。

但严重的是 - 根据设备用户在某个时区选择的内容来获取设备的lat / lon将只是在寻找麻烦。请记住,时区的地理区域可以从其参考点跨越数百或数千英里。此外,还有许多管理区域没有固定的位置参考(例如Etc/GMT+2)。并非每个有效时区都在zone.tab。