c++ - 有没有办法使用 Linux 命令行或 C++ 从 zone.tab 读取坐标信息

标签 c++ linux geolocation timezone

我需要根据嵌入式 Linux 设备的时区来估算其地理位置坐标。这是一个未连接到 inetrnet 的独立设备,因此只能使用存储在本地文件系统上的数据。

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

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

显然我可以编写自己的接口(interface)来读取文件和转换数据,但我更愿意实现更标准化的解决方案。

最佳答案

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

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

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

但说真的 - 根据设备用户为时区选择的内容获取设备的纬度/经度只会自找麻烦。请记住,时区的地理区域可以从其引用点跨越数百或数千英里。此外,还有许多没有固定位置引用的行政区域(例如 Etc/GMT+2)。并非每个有效时区都在 zone.tab 中。

关于c++ - 有没有办法使用 Linux 命令行或 C++ 从 zone.tab 读取坐标信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44274266/

相关文章:

c++ - C++ 中图像序列的全局运动估计

python - python3中使用单引号和双引号时出错

linux - Tomcat6 -> 如何将项目放入根文件夹?

linux - 管理超出所有可用 RAM 的数据结构

php - 如何使用 laravel/php 根据经度/纬度接近度对对象进行分组

c++ - 从 vector C++ 中删除最后一个元素时出现段错误

c++ - 实现线程安全的ctime函数

c++ - 更快的文件操作 C++

Firebase - 按自定义功能排序(距离)

iphone - iPhone 和 Android 上的 GPS...有什么方法可以获取手机的确切位置(不是大概位置)?