使用Python实时将gps返回的经纬度转化为图片

作者&投稿:漳邰 (若有异议请与网页底部的电邮联系)
python写的实时获取gps数据,并保存成txt文档~

import seriallogf = open('your_log_file.txt', 'a')ser = serial.Serial('/dev/ttyUSB0', baudrate=9600)try: while 1: line = ser.readline() logf.write(line.strip()) logf.flush()finally: logf.close()

1.实现将一组GPS模块获取的经纬度数据在百度地图上绘制轨迹
2.标准的GPS经纬度坐标直接在地图上绘制会有偏移,这是测绘局和地图商设置的加密,要转换成百度地图坐标,代码如下

*
* @return 百度地图坐标
*/
publicGeoPoint gpsToBaidu(String data) {//data格式 nmea标准数据 ddmm.mmmmm,ddmm.mmmm 如3030.90909,11449.1234
String[] p = data.split(",");
intlat = (int) (((int) (Float.valueOf(p[0]) /100) + (100* (Float//将ddmm.mmmm格式转成dd.ddddd
.valueOf(p[0]) /100.0- (int) (Float.valueOf(p[0]) /100)) /60.0)) * 1E6);
intlon = (int) (((int) (Float.valueOf(p[1]) /100) + (100* (Float
.valueOf(p[1]) /100.0- (int) (Float.valueOf(p[1]) /100)) /60.0)) * 1E6);
GeoPoint pt =newGeoPoint(lat, lon);
returnCoordinateConvert.fromWgs84ToBaidu(pt);//转成百度坐标
}

主要就是做了两件事情:
1.生成一张有文本信息的JPG图片 
2.写入EXIF信息

生成照片需要PIL和libjpeg

import Imageimport ImageDrawimport ImageFontdef create_pic(path, text=[], type='jpeg'):
img = Image.new("RGB", (2448, 3264), '#37b6ce')#颜色和大小
draw = ImageDraw.Draw(img)
font = ImageFont.truetype('ziti.ttf', 120)#ttf是字体,120是字号
for h in range(0, len(text)):#多行文本
draw.text((256, 256 + 120 * h), text[h], font=font)
img.save(path, type)#保存
# img.show()

读写EXIF信息需要pyexiv2,获取google的经纬度需要geopy
顺便说下经纬度的表示:
一般exif里看到的都是这样的57°55'56.6",是度,分,秒这么展示的,google上获取来的是十进制的57.9323888888888
所以需要转换一下再写进去
公式:57°55'56.6" =57+55/60+56.6/3600=57.9323888888888

import fractionsimport datetimeimport osimport geopyimport pyexiv2import timetemplate = pyexiv2.ImageMetadata('IMG_4408.JPG')template.read()#exif信息很多,所以找个真正手机拍摄的照片当模版googlev3=geopy.GoogleV3()place,gps=googlev3.geocode(location)#获取gps信息,location写地名,比如‘北京王府井’,偶尔会被墙,最好挂个代理def set_exif(path, date_time=None, gps=()):
    """
    datetime=2014:10:04 12:41:38
    geo=(lat=39.12315,lng=115.12231)
    """
    metadata = pyexiv2.ImageMetadata(path)
    metadata.read()
    for k in template.exif_keys:
        metadata[k] = pyexiv2.ExifTag(k, template[k].value)
    if not date_time:
        date_str=pyexiv2.utils.exif(date_time)
        metadata['Exif.Photo.DateTimeOriginal'] = date_str
        metadata['Exif.Photo.DateTimeDigitized'] = date_str
        metadata['Exif.Image.DateTime'] = date_str
    if len(geo)>0:
        c_lat = decimal2coordinate(geo[0], ['S', 'N'])
        c_lng = decimal2coordinate(geo[1], ['W', 'E'])
        metadata["Exif.GPSInfo.GPSLatitude"] = coordinate2rational(c_lat[0], c_lat[1], c_lat[2])
        metadata["Exif.GPSInfo.GPSLatitudeRef"] = c_lat[3]
        metadata["Exif.GPSInfo.GPSLongitude"] = coordinate2rational(c_lng[0], c_lng[1], c_lng[2])
        metadata["Exif.GPSInfo.GPSLongitudeRef"] = c_lng[3]
    else:
        metadata._delete_exif_tag("Exif.GPSInfo.GPSLatitude")
        metadata._delete_exif_tag("Exif.GPSInfo.GPSLatitudeRef")
        metadata._delete_exif_tag("Exif.GPSInfo.GPSLongitude")
        metadata._delete_exif_tag("Exif.GPSInfo.GPSLongitudeRef")
    metadata.write()def decimal2coordinate(value, loc):
    """
    loc=lat => ["S", "N"],lng => ["W", "E"]
    retrun D,M,S,locate
    """
    if value < 0:
        loc_value = loc[0]
    elif value > 0:
        loc_value = loc[1]
    else:
        loc_value = ""
    abs_value = abs(value)
    deg = int(abs_value)
    t1 = (abs_value - deg) * 60
    min = int(t1)
    sec = round((t1 - min) * 60, 5)
    return (deg, min, sec, loc_value)def coordinate2rational(D, M, S):
    return (fractions.Fraction(D, 1), fractions.Fraction(int((M + S / 60) * 100), 100), fractions.Fraction(0, 1))



python中的Tkinter的Label实时更新问题!
mainloop()之后,没有事件的话,窗口是不会刷新的。试试这样:from Tkinter import root = Tk()for i in range(1, 101):val = str(i)Label(root, textvariable = val).pack()root.update_idletasks()

如何用python,每隔5分钟对实时日志做统计处理
不清楚你是不是用apache 举apache log+python !\/usr\/bin\/env python from threading import Timerimport time timer_interval=3000def readlogs() log = "\/var\/log\/httpd\/access" reader = open(log, 'r') contents = [] for line in reader.xreadlines() : p = re.compil...

py交易是什么意思?
二、Py交易在加密货币领域的应用 在加密货币市场中,交易策略尤为重要。许多交易者利用Python编写交易脚本,实现自动化交易。这些脚本可以实时监控市场行情,根据预设的策略自动执行买卖操作,大大提高了交易效率和准确性。此外,Python还可以用于数据分析,帮助交易者更好地理解市场动态和制定交易策略。三、Py...

为什么不建议学python
三、性能要求高的场景不适用 在某些对运行速度要求极高的应用场景,如实时系统或高性能计算,Python可能不是最佳选择。Python虽然易于编写和阅读,但其解释性本质可能导致运行效率不如编译型语言。四、与其他技术栈的兼容性问题 在某些企业或团队中,可能已经广泛使用其他编程语言和技术栈。如果你不熟悉这些...

Python Qt5中textBrowser控件实现实时刷新,并不是函数执行完成后一次...
QTimer timer;timer.setInterval(1000);timer.start();connect(&timer,SIGNAL(timeOut()),this,SLOT(myTimerout()));void thisObject::myTimerOut(){ ui->textBrowser->append(QString("hello ===>> %1").arg(i));}

py交易是什么意思
3. 支持性强:Python有丰富的社区支持和文档资源,遇到问题时可以迅速找到解决方案。4. 性能优异:对于交易这种对实时性要求较高的领域,Python的执行效率也能满足需求。四、实际应用场景 很多交易者和金融机构都在使用Python来开发交易策略、进行数据分析和可视化、构建交易模型等。随着技术的发展,Py交易将...

Python适合编写对运算速度有较高要求的实时程序
Python适合用于编写对运算速度有较高要求的实时程序。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。由于Python编程语言简单、灵活、易上手,运算速度快,很受现在开发者的喜爱,现在多个国家的程序员使用Python编程语言也越来越多,呈直线上升趋势。

急!!怎么用python程序代码打开vlc播放器,接收服务器发送过来的视频数据...
去vlc的wiki上看看,应该是使用命令行参数,python这里只是起到一个配置命令行的作用。当然,vlc也支持作为activex组件使用,具体的看vlc wiki上的例子,那样就可以把视频显示到你指定的窗口上了。不知道你的详细需求是什么?

Python 的实时绘图库选哪个好
PyQtGraph 使用Python编写,支持PyQt4和PyQt5,最新发布版本为0.10.0停留在2016年。PythonQwt 使用Python编写,支持PyQt4和PyQt5,PythonQwt的GitHub主页 对此介绍为:The PythonQwt package is a 2D-data plotting library using Qt graphical user interfaces for the Python programming language. It is ...

python如何实现远程控制电脑(结合微信)
当时我就遇到的问题。回去后想了想,既然可以用手机邮箱控制,那么大家都用的是智能机咯,而且大家都比较喜欢玩微信,那么微信里面有个邮箱助手,实时提醒你新邮件,这样可以更方便的控制你自己的机子咯!!! #!\/etc\/bin\/env python#-*-encoding=utf-8-*-#auth@:...

仲巴县19599593972: 关于python Tk中实时的输出. -
邴赖节宗: 思路是对的,只不过你没调用更新函数,见下面标注. # -*- coding: gb2312 -*- import time from Tkinter import * def run():while True: txt.insert(END,'...') txt.update()#我指的是加这句代码. #下面两句,回复显示后对不齐,请注意,与...

仲巴县19599593972: 如何实时获取经纬度坐标 -
邴赖节宗: 建议你手机安装一个软件,GPS TEST,这个软件可实时提供手机所在位置的经纬度坐标,还可以提供前进速度,海拔高度等参数,速度很准确的,海拔高度有时候不大准.

仲巴县19599593972: 手机怎么设置省流量 - 手机怎么设置省流量不卡省电
邴赖节宗: 1. 手机怎么设置省流量不卡省电不会的,打开飞行模式,手机与外界的一切信号被关... 同时在锁屏幕时尽量使用WiFi休眠功能,同时蓝牙也要禁用掉,GPS定位由于需要实...

仲巴县19599593972: Python的程序,输入longitude和latitude后,自动生成了一个文件,点击后进入GOOGLE MAP -
邴赖节宗: 也只是把坐标放在一个标准的GPS轨迹文件格式里,应该是做一个格式转换.这个轨迹文件有标准的你查一下.是个文本格式.我以前也做过.有这个文件后面都简单了.google earth可以导入GPS的轨迹.

仲巴县19599593972: 右图示意某手机导航地图能实时提供前方道路拥堵情况,优化... - 上学吧
邴赖节宗: element_email = driver.find_element_by_xpath('//input[@name="email"]') element_pass = driver.find_element_by_xpath('//input[@name="password"]')上面这两句话是通过用xpath的方式定位元素 应该可以直接找到这两个输入框

仲巴县19599593972: 如何用Python实现实时的网络连接检测 -
邴赖节宗: 如果你用的socket包里的那些阻塞接口,当然写个线程循环监测时间也没啥,只不过记得在循环内加上个sleep,哪怕是1ms甚至1us的sleep都可以避免CPU被消耗干净.如果你所说的接收是死循环式里跑socket.recv,它会在recv里阻塞,按你的说法3分钟一个心跳包,时间检测就成了3分钟一次,不太合适.更好的办法自然是通过epoll/poll之类的方式或者asyncio/twisted/tornado之类的异步回调/协程加时间事件甚至是各种GUI框架的事件循环来启动你的发送和接收.考虑到以后可能有多设备,显然利用这些成型的玩意更合理.

仲巴县19599593972: GPS行动轨迹记录,返回按轨迹记录原路返回! -
邴赖节宗: 只要手机上有GPS功能,这一要求就可以很容易实现,可供选择的软件也有多款,常用的有谷歌的My Tracks(我的足迹),国内的有六只脚、行者骑行等,都可以详细记录下走过的每一段路程、到过的每一个地点,记录精度可以是米级的,也可以是10米、百米级的,可以自行设置.另外介绍一下,GPS轨迹记录跟现地有没有道路无关.不管是荒山野岭还是大漠深处,只要你到过的地方,都会忠实的记录下来,完全可以用于原路返回时的导航.

仲巴县19599593972: python怎么在excel中定位数据 -
邴赖节宗: 定位具体某个值的位置,可以使用查找功能. 以Excel2010为例(其他版本类同),按下Ctrl+F,输入要查找的内容,然后查找即可.

仲巴县19599593972: 移动网页开发如何实时获取GPS位置? -
邴赖节宗: 可以用phonegap等开源框架,支持HTML5 js调用Android和IOS的摄像头、相册、GPS等等.具体你可以百度一下phonegap移动开发. 也可以使用phonegap插件,JS调用JAVA本地方法来定位,然后回调显示.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网