GPS模块软件处理的坑:分度秒转成分度
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GPS模块软件处理的坑:分度秒转成分度相关的知识,希望对你有一定的参考价值。
参考技术A GPS模块输出的数据是NMEA格式,其中GPGGA字段包含我们需要的经纬度信息。例:$GPGGA,092204.999,4250.5589,S,14718.5084,E,1,04,24.4,12.2,M,19.7,M,,0000*1F
其中 4250.5589,S,14718.5084,E 就是经度和纬度数据,其格式是
纬度:ddmm.mmmmm(度分)
经度:dddmm.mmmmm(度分)
google Earth Pro是免费、强大的地图工具,它支持导入包含经纬度的csv文件,用来描点,使我们更直观的看gps的定位信息。(算了吧,国内基本无法连接的,看接下来用高德)
但是google Earth Pro中需要dd.ddddd格式的经纬度,所以我们要将ddmm.mmmm转换成dd.ddddd。
转换公式 dd.ddddd = dd + mm.mmmm/60
网上很多其它文章的公式都是错误的。
由于一些特殊原因,地图经纬度在国内还要转一下:
可以要第三方地图,例如高德或百度,还需要再转一次坐标。以高德为例,需要调用http接口转换,转换可以是多组,特别适合服务器一次请求多个的情况:
https://lbs.amap.com/api/webservice/guide/api/convert
转换完之后快速找地图验证一下,查看位置。
高德验证地址在这里:(根据经纬度反查)
https://lbs.amap.com/console/show/picker
116.487585177952,39.991754014757
使用python获得N个区分度较高的RGB颜色值
获得任意N个区分度最高的RGB颜色值是一个经典的问题,之前在做一些可视化的东西时需要解决这个问题。首先去网上找了一些方法,未果,于是想自己来搞,心里的想法是,先给出一个距离函数用来度量两个RGB颜色值的区分度,然后再通过随机和贪心的方式依次获得N个颜色值。如果要这样搞的话,距离函数的定义就非常关键了,这就避免不了要去看一些学术论文,想着就有点畏惧,又要查文献、读文献,感觉要花好几天时间。于是就先放下了,用随机生成颜色的方法来解决,但是效果很不好。今天又认真的查了一些资料,发现10年前,已经有人在Stack Overflow上问过了,其中第二个回答很全面,获赞最多,既给出了一些文献研究,又在N比较小的情况下给出了一些简单的解决方案。第一个回答的获赞也不少,而且非常简单,在这里,我就选了第一个回答用python实现了一下,其思路是先通过随机的方式获得N个区分度比较高的HLS颜色值,然后再将其转换为RGB颜色,代码如下所示(GitHub地址)。
import colorsys
import random
def get_n_hls_colors(num):
hls_colors = []
i = 0
step = 360.0 / num
while i < 360:
h = i
s = 90 + random.random() * 10
l = 50 + random.random() * 10
_hlsc = [h / 360.0, l / 100.0, s / 100.0]
hls_colors.append(_hlsc)
i += step
return hls_colors
def ncolors(num):
rgb_colors = []
if num < 1:
return rgb_colors
hls_colors = get_n_hls_colors(num)
for hlsc in hls_colors:
_r, _g, _b = colorsys.hls_to_rgb(hlsc[0], hlsc[1], hlsc[2])
r, g, b = [int(x * 255.0) for x in (_r, _g, _b)]
rgb_colors.append([r, g, b])
return rgb_colors
---------------------
以上是关于GPS模块软件处理的坑:分度秒转成分度的主要内容,如果未能解决你的问题,请参考以下文章