国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

樹莓派通過天線+gps獲取經(jīng)緯度并調(diào)用高德地圖api在地圖上標(biāo)點

這篇具有很好參考價值的文章主要介紹了樹莓派通過天線+gps獲取經(jīng)緯度并調(diào)用高德地圖api在地圖上標(biāo)點。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

完整項目為《基于機器視覺的行人和路面缺陷檢測及其邊緣設(shè)備部署

完整功能視頻演示地址:本科最后的課設(shè):“車載系統(tǒng)的輔助系統(tǒng)——基于機器視覺的行人和路面缺陷檢測”完結(jié)撒花*罒▽罒*_嗶哩嗶哩_bilibili

該博客介紹的功能為:

1:樹莓派通過gps+天線讀取經(jīng)緯度坐標(biāo)(檢測出路面缺陷的位置)

2:將經(jīng)緯度坐標(biāo)上傳至服務(wù)器

3:調(diào)用高德地圖api,讀取服務(wù)器的經(jīng)緯度,并在地圖上標(biāo)點。

該博客參考了以下博客和資料:

[1]?(74條消息) 樹莓派(四):GPS連接并讀取_樹莓派gps_哦吼吼231的博客-CSDN博客?

[2]?(74條消息) NMEA經(jīng)緯度換算_nmea坐標(biāo)_牧童宇希的博客-CSDN博客

[3]?(71條消息) 【高德地圖API】Web地圖開發(fā)系列(一)_生命是有光的的博客-CSDN博客

[4]?(74條消息) 十三、JavaScript ajax請求_js ajax請求_HJHO的博客-CSDN博客

[5]?(74條消息) HTML讀取json文件(傳遞給變量)_璇焱如柳的博客-CSDN博客

[6]?JS API 安全密鑰使用-基礎(chǔ)-進階教程-地圖 JS API 2.0 | 高德地圖API

一、?樹莓派通過gps+天線讀取經(jīng)緯度坐標(biāo)

? ? 我們將GPS 模塊的串口輸出用USB-TTL 進行了轉(zhuǎn)換,因此我們直接在USB 口上讀取GPS 模塊傳入的數(shù)據(jù)即可。

??? 還需要注意的是GPS 模塊讀取到的值并非經(jīng)緯度,而是包含了經(jīng)緯度信息的字符串。我們的GPS 讀入的信息GNRMC_line 的格式為

????????["b'$GNRMC" , '當(dāng)天UTC 時間','A表示數(shù)據(jù)有效','緯度','N- 北','精度',??'E- 東', '對地速度,單位為節(jié)', '對地真航向,單位為度', '日期(dd ?為日,mm 為月,yy 為年)', '', '', "A*75\\r\\n'" ]

比如:

????????[“b'$GNRMC”,'132558.000','A','3412.93903','N','11708.08969','E','0.00',?'0.00', '081221', '', '', "A*75\\r\\n'" ]

??? 所以我們需要在數(shù)據(jù)流中找到以”b\’$GNRMC” 開頭的數(shù)據(jù),并且在該字符串?dāng)?shù)組的第五個元素和第七個元素。緯度前2 字符表示度,后面的字符表示分,需要轉(zhuǎn)化為小數(shù)形式;經(jīng)度前3 字符表示度,后面的字符表示分,需要轉(zhuǎn)化為小數(shù)形式。

????????具體代碼如下:(完整功能可以復(fù)制的代碼會附在整個模塊講解結(jié)束的地方,這里只是一部分)

樹莓派通過天線+gps獲取經(jīng)緯度并調(diào)用高德地圖api在地圖上標(biāo)點,各種大作業(yè),python,單片機,html,java,物聯(lián)網(wǎng)

????????其中,我們打開串口,存放到ser 中,/dev/ttyUSB0 是端口名,9600 是波特率。while ?True 表示一直不斷檢測,readline 為讀取整行。我們讀取以GNRMC 開頭的字符串?dāng)?shù)組,然后以“,” 逗號作為分隔符把不同的數(shù)據(jù)分隔開,最后通過計算得到xxxx 分正確格式的經(jīng)緯度,最后打印出來。

????????如圖為測試圖片

樹莓派通過天線+gps獲取經(jīng)緯度并調(diào)用高德地圖api在地圖上標(biāo)點,各種大作業(yè),python,單片機,html,java,物聯(lián)網(wǎng)

圖:GPS模塊經(jīng)緯度讀取測試

二、?將經(jīng)緯度坐標(biāo)上傳至服務(wù)器

????????我們在自己的服務(wù)器上開了上傳、讀取和刪除的接口。該部分用到上傳接口。我們向接口發(fā)送了POST 請求,并將經(jīng)緯度作為JSON 格式的數(shù)據(jù)發(fā)送到了該URL 。

??? 其中POST 請求是HTTP 中向服務(wù)器提交數(shù)據(jù)的請求方式。與GET 請求不同,POST 請求將數(shù)據(jù)作為請求體request body)發(fā) 送到服務(wù)器,而不是放在URL 的查詢參數(shù)中。因此,POST 請求通常用于提交一些敏感數(shù)據(jù)或者比較大的數(shù)據(jù),例如表單數(shù)據(jù)、文件上傳等。

??? 具體代碼如下:(requrl='http://124.221.239.172:8080/location'請更換為你自己開的服務(wù)器端口,該端口已經(jīng)關(guān)閉不可使用)

樹莓派通過天線+gps獲取經(jīng)緯度并調(diào)用高德地圖api在地圖上標(biāo)點,各種大作業(yè),python,單片機,html,java,物聯(lián)網(wǎng)

????????我們創(chuàng)建一個名為`rqs_headers` 的字典,這個字典將被用作請求的頭部headers) 參數(shù),告訴服務(wù)器發(fā)送的數(shù)據(jù)是JSON 格式的。Requrl 為服務(wù)器接口的URL地址。最后我們把經(jīng)緯度通過json.dumps 命令轉(zhuǎn)化為json 格式通過POST 指令發(fā)到服務(wù)器。如果服務(wù)器收到了,會返回響應(yīng)結(jié)果,完成本次通信協(xié)議。

? ? ? ? 第一第二節(jié)完整代碼如下:

import serial
import time
import json
import requests
ser = serial.Serial("/dev/ttyUSB0",9600) #9600是GPS的波特率
while True:
    line = str(str(ser.readline()))
    # #打印所有串口數(shù)據(jù)
    # print(line)
    GNRMC_line = line
    # GNGLL_line = line
    # GNGLL_line = line
    if GNRMC_line.startswith("b\'$GNRMC"):
        print(GNRMC_line)
        GNRMC_line = str(GNRMC_line).split(',')  # 將line以“,”為分隔符
        #GNRMC_line格式為:["b'$GNRMC", '132558.000',    'A',    '3412.93903',  'N',  '11708.08969',  'E',      '0.00',            '0.00',             '081221',                '', '', "A*75\\r\\n'"]
        #GNRMC_line格式為:["b'$GNRMC", '當(dāng)天UTC時間', 'A表示數(shù)據(jù)有效', '緯度',    'N-北', '精度',        'E-東', '對地速度,單位為節(jié)', '對地真航向,單位為度', '日期(dd 為日,mm為月,yy為年)', '', '', "A*75\\r\\n'"]
        print(GNRMC_line)  #查看數(shù)據(jù)類型
        # 時間轉(zhuǎn)化省略(需要把UTC轉(zhuǎn)化為北京時間)
        # Lat ddmm.mmmm 緯度,前2字符表示度,后面的字符表示分,需要轉(zhuǎn)化為小數(shù)形式
        latitude = float(GNRMC_line[3][:2]) + float(GNRMC_line[3][2:])/60
        # Lon dddmm.mmmm 經(jīng)度,前3字符表示度,后面的字符表示分,需要轉(zhuǎn)化為小數(shù)形式
        longitude = float(GNRMC_line[5][:3]) + float(GNRMC_line[5][3:])/60
        print("緯度:  " + GNRMC_line[4] + " " + str(latitude))
        print("經(jīng)度:  " + GNRMC_line[6] + " " + str(longitude))
        # time.sleep(1)
        
        rqs_headers={'content-Type':'application/json'}
        requrl='請更換為你自己的服務(wù)器地址'
        new_data={"longitude":longitude,"latitude":latitude}
        test_data = json.dumps(new_data)
        response = requests.post(url=requrl,headers=rqs_headers,data=test_data)
  

?三、調(diào)用高德地圖api,讀取服務(wù)器的經(jīng)緯度,并在地圖上標(biāo)點

? ? ? ? 上面兩節(jié)是要在樹莓派自帶的python編譯器中運行的python代碼。下面是用VScode寫的html代碼。

????????代碼如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script type="text/javascript" src="請改成你自己的高德api密鑰"></script>
    <style type="text/css">
        html {
            height: 100%
        }
        body {
            height: 100%;
            margin: 0px;
            padding: 0px
        }
        
        #container {
            height: 100%
        }
        .amap-icon img,
        .amap-marker-content img{
            width: 25px;
            height: 34px;
        }
        .marker {
            position: absolute;
            top: -20px;
            right: -118px;
            color: #fff;
            padding: 4px 10px;
            box-shadow: 1px 1px 1px rgba(10, 10, 10, .2);
            white-space: nowrap;
            font-size: 12px;
            font-family: "";
            background-color: #25A5F7;
            border-radius: 3px;
        }
    </style>
</head>

<body>
    <div id="container"></div>
    <script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>   <!--  導(dǎo)入jQuery包-->
    <script type="text/javascript">
	
	var map = new AMap.Map('container', {
		zoom: 11, //級別
		center: [116.397428, 39.90923], //中心點坐標(biāo)
		viewMode: '3D' //使用3D視圖
	});
     $.ajax({
		url: "請換為你的服務(wù)器端口",//json文件位置,文件名
		type: "GET",//請求方式為get
		dataType: "json", //返回數(shù)據(jù)格式為json
		async: false,
		success: function(data) {
            position_list=$.parseJSON(JSON.stringify(data));  // 將string轉(zhuǎn)換成可操作的object
			console.log(position_list[0])
			for (var i=0;i<position_list.length;i++){
				marker = new AMap.Marker({
					icon: "\poi-marker-default.png",
					position: [position_list[i].longitude,position_list[i].latitude],
					offset: new AMap.Pixel(-13, -30)
				});
				marker.setMap(map);
			}
        
        }
	});	
//請求成功完成后要執(zhí)行的方法  
    </script>
</body>
</html>

? ? ? ? 以上的代碼可以把服務(wù)器的里的經(jīng)緯度數(shù)據(jù)遍歷一遍并且顯示在地圖畫布上。效果如下:

樹莓派通過天線+gps獲取經(jīng)緯度并調(diào)用高德地圖api在地圖上標(biāo)點,各種大作業(yè),python,單片機,html,java,物聯(lián)網(wǎng)

????????我們還給每個Marker 對象添加一個事件監(jiān)聽器,以便監(jiān)聽點擊操作。在使用者點擊marker 后能夠用infowindow 對象的open 方法將信息窗口顯示在地圖上,并將其鏈接到marker 的位置上。?

樹莓派通過天線+gps獲取經(jīng)緯度并調(diào)用高德地圖api在地圖上標(biāo)點,各種大作業(yè),python,單片機,html,java,物聯(lián)網(wǎng)

? ? ? ? ?效果如下圖:

樹莓派通過天線+gps獲取經(jīng)緯度并調(diào)用高德地圖api在地圖上標(biāo)點,各種大作業(yè),python,單片機,html,java,物聯(lián)網(wǎng)

?文章來源地址http://www.zghlxwxcb.cn/news/detail-621396.html

到了這里,關(guān)于樹莓派通過天線+gps獲取經(jīng)緯度并調(diào)用高德地圖api在地圖上標(biāo)點的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包