c - 在 C 中从 DMS 转换为 Lat Long
问题描述
我有一个坐标对的输入文件(比如说 10 行),每行看起来像这样:
(1653408W, 503223N) (1651614W, 502806N)
这些是以 DMS 格式给出的经纬度值。我想将它们转换为更人性化的格式,例如:1931259W --> 193d 12m 59s W
我找到了一种使用 fscanf 遍历文件中每一行的方法,但我不确定如何转换表单。
解决方案
因此,您的坐标似乎以格式给出DDDMMSS
,其中DDD
是(最多)三位数的度数,MM
是两位数的分钟数和SS
两位数的秒数,它们之间没有分隔符。
从技术上讲,解析这样的格式的“正确”方法是将字符串拆分为多个片段,然后将每个片段分别转换为整数。但是由于您已经设法将整个坐标值读入一个整数,就好像它是一个十进制数一样,我们可以使用它并使用简单的数学提取度、分和秒:
int dddmmss = 1631259; /* hardcoded input value for testing */
int degrees = dddmmss / 10000; /* drop the lowest 4 digits */
int minutes = (dddmmss / 100) % 100; /* drop the lowest 2 digits, then keep the next 2 */
int seconds = dddmmss % 100; /* just keep the lowest 2 digits */
printf("%03d° %02d' %02d''", degrees, minutes, seconds);
推荐阅读
- git - git config 的 color.status.added 和 color.status.updated 有什么不同?
- windows - 如何在 UWP 上的 Xamarin.Forms WebView 中启用 WebGL?
- facebook-graph-api - Facebook Graph API:如何向群组的所有成员发送聊天消息
- java - 通过电子邮件地址区分用户
- arrays - 试图访问 json 数组元素,但它返回 undefined
- python - 在 Python 中从 .png 获取 RGBA 值
- android-studio - 如何在 Android Studio 中获取 Flutter 代码中的函数调用跟踪?
- javascript - 使用本机反应更改相机类型后立即拍照
- ionic-framework - 我们可以在 NativeScript Web 实现中使用 ionic 4 Web 组件吗?
- julia - Julia Pkg.clone()ERROR: Unsatisfiable requirements detected for package Stats [072d6d2a]: