




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
度分轉換:
將度分單位數據轉換為度單位數據
度=度+分/60
例如:
經度=116°20.12’
緯度=39°12.34’
經度=116+20.12/60=116.33533°
緯度=39+12.34/60=39.20567°
NTU經度=116.33533*100000=11633533(NTU)
NTU緯度=39.20567*100000=3920567(NTU)度分秒轉換:
將度分秒單位數據轉換為度單位數據
度=度+分/60+秒/60/60
例如:
經度=116°20’43”
緯度=39°12’37”
經度=116+20/60+43/60/60=116.34528°
緯度=39+12/60+37/60/60=39.21028°
NTU經度=116.34528*100000=11634528(NTU)
NTU緯度=39.21028*100000=3921028(NTU)
其格式的經緯值先轉換度,再采用上面的運算。與經緯度有關的基礎知識:
NTU相當于十萬分之一度。如何計算經度方向距離比如:點A的緯度為3995400,點B的緯度為3995300,則這兩個點在沿著緯線的方向相差100米。
點A的經度為11695400,點B的經度為11695300,則這兩個點在沿著經線的方向相差大約為77米,
該值的計算方法可以用近似公式:
經度方向距離=經度差*cos(緯度值)=100*cos(39)=77米。
如何計算兩點間距離比如:點A的經度為11695400,緯度為3995400。點B的經度為11695300,緯度為3995300。
公式:兩點間距離=[(A點經度-B點經度)^2+(A點緯度-B點緯度)^2]^(1/2)=[(11695400-11695300)^2
+(3995400-3995300)^2]^(1/2)=(10000+10000)^(1/2)=141米公式說明:加法+,減法-,乘法*,除法/,冪運算^(1/2)表示平方根^2表示平方。適用范圍:未加密經緯度/加密經緯度返回頂部
使用的比例級別總共有0-12級共13個級別,他們和實際的比例尺的對應關系分別是:0級——————–1:5000
1級——————–1:10000
2級——————–1:20000
3級——————–1:40000
4級——————–1:80000
5級——————–1:160000
6級——————–1:320000
7級——————–1:640000
8級——————–1:1280000
9級——————–1:2560000
10級——————-1:5120000
11級——————-1:10240000
12級——————-1:20480000
13級——————-1:40960000
14級——————-1:81920000簡單的說,0級地圖最詳細,12級地圖最簡單。2計算偏移角。
完整的列子如下:
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html
xmlns="/1999/xhtml"><head
runat="server"><title>無標題頁</title><script
type="text/javascript">functiondistanceByLnglat(lng1,lat1,lng2,lat2){varradLat1=Rad(lat1);varradLat2=Rad(lat2);vara=radLat1-radLat2;varb=Rad(lng1)-Rad(lng2);vars=2*Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2)+Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)));s=s*6378137.0;//取WGS84標準參考橢球中的地球長半徑(單位:m)s=Math.round(s*10000)/10000;alert(s);////下面為兩點間空間距離(非球面體)//varvalue=Math.pow(Math.pow(lng1-lng2,2)+Math.pow(lat1-lat2,2),1/2);//alert(value);}functionRad(d){returnd*Math.PI/180.0;}</script></head><body><form
id="form1"runat="server"><div
onclick="distanceByLnglat(116.95400,39.95400,116.95300,39.95300);">testme</div></form></body></html>根據地球上任意兩點的經緯度計算兩點間的距離地球是一個近乎標準的橢球體,它的赤道半徑為6378.140千米,極半徑為6356.755千米,平均半徑6371.004千米。如果我們假設地球是一個完美的球體,那么它的半徑就是地球的平均半徑,記為R。如果以0度經線為基準,那么根據地球表面任意兩點的經緯度就可以計算出這兩點間的地表距離(這里忽略地球表面地形對計算帶來的誤差,僅僅是理論上的估算值)。設第一點A的經緯度為(LonA,LatA),第二點B的經緯度為(LonB,LatB),按照0度經線的基準,東經取經度的正值(Longitude),西經取經度負值(-Longitude),北緯取90-緯度值(90-Latitude),南緯取90+緯度值(90+Latitude),則經過上述處理過后的兩點被計為(MLonA,MLatA)和(MLonB,MLatB)。那么根據三角推導,可以得到計算兩點距離的如下公式:C=sin(MLatA)*sin(MLatB)*cos(MLonA-MLonB)+cos(MLatA)*cos(MLatB)Distance=R*Arccos(C)*Pi/180這里,R和Distance單位是相同,如果是采用6371.004千米作為半徑,那么Distance就是千米為單位,如果要使用其他單位,比如mile,還需要做單位換算,1千米=0.621371192mile
如果僅對經度作正負的處理,而不對緯度作90-Latitude(假設都是北半球,南半球只有澳洲具有應用意義)的處理,那么公式將是:C=sin(LatA)*sin(LatB)+cos(LatA)*cos(LatB)*cos(MLonA-MLonB)Distance=R*Arccos(C)*Pi/180以上通過簡單的三角變換就可以推出。
如果三角函數的輸入和輸出都采用弧度值,那么公式還可以寫作:C=sin(LatA*Pi/180)*sin(LatB*Pi/180)+cos(LatA*Pi/180)*cos(LatB*Pi/180)*cos((MLonA-MLonB)*Pi/180)Distance=R*Arccos(C)*Pi/180也就是:C=sin(LatA/57.2958)*sin(LatB/57.2958)+cos(LatA/57.2958)*cos(LatB/57.2958)*cos((MLonA-MLonB)/57.2958)Distance=R*Arccos(C)=6371.004*Arccos(C)kilometer=0.621371192*6371.004*Arccos(C)mile=3958.758349716768*Arccos(C)mile在實際應用當中,一般是通過一個個體的郵政編碼來查找該郵政編碼對應的地區(qū)中心的經緯度,然后再根據這些經緯度來計算彼此的距離,從而估算出某些群體之間的大致距離范圍(比如酒店旅客的分布范圍-各個旅客的郵政編碼對應的經緯度和酒店的經緯度所計算的距離范圍-等等),所以,通過郵政編碼查詢經緯度這樣一個數據庫是一個很有用的資源。根據經緯度計算該位置點與附近某一經緯度位置點的位置偏移角如何計算?設某一城市有一個城市地標,可以視為城市的中心點,其經緯度已知。分散在城市中心分別
(1)由多層環(huán)形交通公路(環(huán)線),環(huán)城市地標為基準,在不同層的環(huán)線上分布著重要的設施。
(2)分布著多個衛(wèi)星城、主要居民區(qū)和學校、基礎設施?,F控制無人機分別自城市地標出發(fā),依次探訪和航拍環(huán)城公路上的重要設施。無人機配置有GPS導航和電子羅盤。自城市中心地標處控制無人機起飛。1計算任意經緯度點間的距離用GPS測出兩個點的經緯度后,如何計算這兩個點之間的距離呢。用的是便攜式GPS,只有經緯度顯示,無坐標顯示和輸出。設兩點A、B的經、緯度分別為(jA,wA)(jB,wB),則半徑為R的球面上兩點間的最短距離(大圓弧)為:
弧AB=R*arccos[sin(wA)sin(wB)+cos(wA)cos(wB)*cos(jA-jB)]googlemaps的腳本里代碼。privateconstdoubleEARTH_RADIUS=6378.137;
privatestaticdoublerad(doubled)
{
returnd*Math.PI/180.0;
}publicstaticdoubleGetDistance(doublelat1,doublelng1,doublelat2,doublelng2)
{
doubleradLat1=rad(lat1);
doubleradLat2=rad(lat2);
doublea=radLat1-radLat2;
doubleb=rad(lng1)-rad(lng2);
doubles=2*Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a/2),2)+
Math.Cos(radLat1)*Math.Cos(radLat2)*Math.Pow(Math.Sin(b/2),2)));
s=s*EARTH_RADIUS;
s=Math.Round(s*10000)/10000;
returns;
}
;該函數用IDL語言編寫,利用GIS中根據兩點經緯度計算距離公式;計算經緯度兩點間的距離
FunctionLength2LatLon,pts0,pts1
radius=6378.14d;地球平均半徑,單位公里
;
print,pts0,pts1;
length=radius*acos(sin(pts0[1]*!PI/180.0)*sin(pts1[1]*!PI/180.0)+cos(pts0[1]*!PI/180.0)*cos(pts1[1]*!PI/180.0)*cos(pts0[0]*!PI/180.0-pts1[0]*!PI/180.0))
length=radius*acos(sin(pts0[1]*!DTOR)*sin(pts1[1]*!DTOR)+cos(pts0[1]*!DTOR)*cos(pts1[1]*!DTOR)*cos(pts0[0]*!DTOR-pts1[0]*!DTOR))
return,length
end
protest
pts0=[117.548802d,38.625238d]
pts1=[117.548625d,38.625139d]
print,length2latlon(pts0,pts1)
end
另外在IDL中提供了計算兩點距離的方法map_2points可以方便的計算不同單位(Miles,Meters)的距離,還可以通過設置不同的參數來得到不同的距離、角度值,Syntax:
Result=MAP_2POINTS(lon0,lat0,lon1,lat1[,DPATH=value|,/METERS|,/MILES|,NPATH=integer{2orgreater}|,/PARAMETERS|,RADIANS=value][,/RADIUS][,/RHUMB])具體可以參考IDL的Help里面講解如果要算的距離是橢球面的距離,就難些。因為大地線的方程是一個微分方程,所以大地線長度是對一個微分方程的開方的積分,無法寫成簡單的公式.通常是直接用差分代替微分,用求和代替積分算出,這是很嚴格的.下面是近似地由大地經緯度求橢球面距離的逼近方法:如兩點在同一緯線上,距離為N*cos(phi)*(lambda2-lambda1)。如兩點在同一經線上,距離為M*dphi從phi1到phi2的積分。其中N=a/sqrt(d),d=1-e*e*sin(phi)*sin(phi),
M=a*(1-e*e)/[d*sqrt(d)],其中長短軸a,b與扁率偏心率的關系是:a/b=1-f=sqrt(1-e*e).把積分區(qū)域分成等分n小段,積分可以寫成求和,既可算出。這也是嚴格的。如兩點不在同一經緯線上,且兩點距離很近,則小區(qū)域的橢球面可以視為平面,于是兩點的距離近似地是上面算出的距離的平方和的開方。如兩點距離較遠,把兩點間的經緯差分成等分n小段,每小段的距離的和就是所求的距離。googlemaps的腳本里代碼。privateconstdoubleEARTH_RADIUS=6378.137;
privatestaticdoublerad(doubled)
{
returnd*Math.PI/180.0;
}publicstaticdoubleGetDistance(doublelat1,doublelng1,doublelat2,doublelng2)
{
doubleradLat1=rad(lat1);
doubleradLat2=rad(lat2);
doublea=radLat1-radLat2;
doubleb=rad(lng1)-rad(lng2);
doubles=2*Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a/2),2)+
Math.Cos(radLat1)*Math.Cos(radLat2)*Math.Pow(Math.Sin(b/2),2)));
s=s*EARTH_RADIUS;
s=Math.Round(s*10000)/10000;
returns;
}
;該函數用IDL語言編寫,利用GIS中根據兩點經緯度計算距離公式;計算經緯度兩點間的距離
FunctionLength2LatLon,pts0,pts1
radius=6378.14d;地球平均半徑,單位公里
;
print,pts0,pts1;
length=radius*acos(sin(pts0[1]*!PI/180.0)*sin(pts1[1]*!PI/180.0)+cos(pts0[1]*!PI/180.0)*cos(pts1[1]*!PI/180.0)*cos(pts0[0]*!PI/180.0-pts1[0]*!PI/180.0))
length=radius*acos(sin(pts0[1]*!DTOR)*sin(pts1[1]*!DTOR)+cos(pts0[1]*!DTOR)*cos(pts1[1]*!DTOR)*cos(pts0[0]*!DTOR-pts1[0]*!DTOR))
return,length
end
protest
pts0=[117.548802d,38.625238d]
pts1=[117.548625d,38.62
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中學化學習題研究知到課后答案智慧樹章節(jié)測試答案2025年春牡丹江師范學院
- 三級人力資源管理師-企業(yè)人力資源管理師(三級)《理論知識》考前沖刺卷5
- 普通高等學校高三招生全國統(tǒng)一考試仿真卷(六)理綜
- 射洪縣2018年高三歷史(3月)練題(二)及解析
- 2017-2018學年物理粵教版選修3-5講義專題2
- 市場經濟背景下民商法信用體系完善的重要性研究
- 酒精性脂肪性肝病合并乙型肝炎病毒肝內復制小鼠模型的建立及其對膽固醇代謝的影響研究
- 小學道德與法治實踐性作業(yè)優(yōu)化策略研究
- 英語游戲引入課堂教學的價值與應用
- cro服務合同范例
- normanconquest諾曼征服英國課件
- 新生兒腸扭轉護理查房課件
- 小學數學-水中浸物問題-完整版題型訓練30題-帶答案
- 培養(yǎng)正念提升幸福感
- 追悼會流程方案
- 公司制度制定執(zhí)行等情況匯報范文
- 營銷員壓力管理
- 淺議鄉(xiāng)鎮(zhèn)機構改革的難點與對策
- 二年級下冊口算題1000題大全
- GB 4806.7-2023食品安全國家標準食品接觸用塑料材料及制品
- 中職統(tǒng)編《金屬材料與熱處理》系列課件 第1章 金屬的結構與結晶(動畫) 云天系列課件
評論
0/150
提交評論