wang123

          GPS經緯度可以用來Java解析

          現在正開發(fā)的定位模塊用到的定位設置是塞格車圣導航設備,發(fā)送指令返回的經緯度需要轉換成十進制,再到GIS系統獲取地理信息描述。以后需要要經常用到這方面的知識,隨筆寫下。

           

          將經緯度轉換成十進制

           公式:
              Decimal Degrees = Degrees + minutes/60 + seconds/3600
            例:57°55'56.6" =57+55/60+56.6/3600=57.9323888888888
           
          如把經緯度  (longitude,latitude) (205.395583333332,57.9323888888888)轉換據成坐標(Degrees,minutes,seconds)(205°23'44.1",57°55'56.6")。
          步驟如下:

          1、 直接讀取"度":205

          2、(205.395583333332-205)*60=23.734999999920 得到"分":23

          3、(23.734999999920-23)*60=44.099999995200 得到"秒":44.1

           

          發(fā)送定位指令,終端返回的經緯度信息如下:

          (ONE072457A3641.2220N11706.2569E000.000240309C0000400)

          按照協議解析

           

          獲得信息體的經緯度是主要,其它不要管,直接用String類的substring()方法截掉,獲取的經緯度

          3641.2220N11706.2569E http://www.bt285.cn

          Java代碼 復制代碼
          1. package com.tdt.test;   
          2.   
          3. import com.tdt.api.gis.LocationInfo;   
          4.   
          5. /**  
          6.  * <p>Title:坐標轉換 </p>  
          7.  *   
          8.  * <p>Description:</p>  
          9.  *   
          10.  * <p>Copyright: Copyright (c) 2009</p>  
          11.  *   
          12.  * <p>Company:</p>  
          13.  *   
          14.  * @author sunnylocus  
          15.  * @version 1.0 [2009-03-24]  
          16.  *   
          17.  */  
          18. public class LonlatConversion {   
          19.   
          20.     /**  
          21.      *   
          22.      * @param dms 坐標  
          23.      * @param type 坐標類型  
          24.      * @return String 解析后的經緯度  
          25.      */  
          26.     public static String xypase(String dms, String type) {   
          27.         if (dms == null || dms.equals("")) {   
          28.             return "0.0";   
          29.         }   
          30.         double result = 0.0D;   
          31.         String temp = "";   
          32.            
          33.         if (type.equals("E")) {//經度   
          34.             String e1 = dms.substring(03);//截取3位數字,經度共3位,最多180度   
          35.                                             //經度是一倫敦為點作南北兩極的線為0度,所有往西和往東各180度    
          36.             String e2 = dms.substring(3, dms.length());//需要運算的小數   
          37.   
          38.             result = Double.parseDouble(e1);   
          39.             result += (Double.parseDouble(e2) / 60.0D);   
          40.             temp = String.valueOf(result);   
          41.             if (temp.length() > 9) {   
          42.                 temp = e1 + temp.substring(temp.indexOf("."), 9);   
          43.             }   
          44.         } else if (type.equals("N")) {      //緯度,緯度是以赤道為基準,相當于把地球分兩半,兩個半球面上的點和平面夾角0~90度   
          45.             String n1 = dms.substring(02);//截取2位,緯度共2位,最多90度   
          46.             String n2 = dms.substring(2, dms.length());   
          47.   
          48.             result = Double.parseDouble(n1);   
          49.             result += Double.parseDouble(n2) / 60.0D;   
          50.             temp = String.valueOf(result);   
          51.             if (temp.length() > 8) {   
          52.                 temp = n1 + temp.substring(temp.indexOf("."), 8);   
          53.             }   
          54.         }   
          55.         return temp;   
          56.     }   
          57.     public static void main(String[] args) {   
          58.         String info="(ONE072457A3641.2220N11706.2569E000.000240309C0000400)";           
          59.         info=info.substring(11,info.length()-13);   
          60.         //緯度   
          61.         String N = info.substring(0, info.indexOf("N"));   
          62.         //經度   
          63.         String E = info.substring(info.indexOf("N")+1,info.indexOf("E"));   
          64.         //請求gis,獲取地理信息描述   
          65.         double x = Double.parseDouble(CoordConversion.xypase(E,"E"));   
          66.         double y = Double.parseDouble(CoordConversion.xypase(N,"N"));   
          67.         String result =LocationInfo.getLocationInfo("test", x, y); //System.out.println("徑度:"+x+","+"緯度:"+y);   
          68.         System.out.println(result);   
          69.     }   
          70. }  

          運行結果

          在濟南市,位于輕騎路和八澗堡路附近;在環(huán)保科技園國際商務中心和濟南市區(qū)賢文莊附近。

          posted on 2009-03-26 17:08 閱讀(2178) 評論(0)  編輯  收藏

          <2009年3月>
          22232425262728
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          導航

          統計

          常用鏈接

          留言簿(3)

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 通江县| 额敏县| 珠海市| 江北区| 梧州市| 龙胜| 凤庆县| 四平市| 来宾市| 鄯善县| 朝阳区| 樟树市| 安徽省| 利津县| 光山县| 闽侯县| 东至县| 长垣县| 临颍县| 清远市| 屯昌县| 海阳市| 黄骅市| 安新县| 南郑县| 枣阳市| 大同县| 安顺市| 南京市| 榆中县| 山东省| 江川县| 余姚市| 大新县| 同心县| 勃利县| 吉安县| 获嘉县| 浠水县| 桂阳县| 从化市|