首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 手機整合空間制圖服務 (WMS) 應用實作

     編輯:Java 相關知識

引言:人類 80% 以上行為與空間位置相關。隨移動通信發展,LBS(位置基礎服務)結合無線定位與 GIS,提供導航查詢增值服務。Java 手機 (J2ME/MIDP) 開放開發平台普及,為行動 LBS 提供條件。作者開發「個人導航系統」,曾獲全國無線 Java 應用大賽優秀獎。

J2ME 手機圖像獲取與顯示

  • MIDP 1.0 僅支援 PNG 格式(靜態/動態)
  • 靜態圖像建立兩方式:
    1. JAR 內資源 Image.createImage(String) — 受限手機儲存空間,難滿足 GIS 大量資料
    2. 二進位 PNG 資料 Image.createImage(byte[], offset, length) — 靈活,資料可來自網路,便於動態更新

WMS 空間地圖服務動態生成圖像

OGC 空間 Web 服務標準:WMS、WFS、WCS 等。WMS 提供三操作:GetCapabilities、GetMap、GetFeatureInfo。GetMap 依客戶端參數動態生成地圖(PNG/GIF/JPEG/SVG/WebCGM)。

範例請求:https://localhost:8080/wmsserver111/servlet/wms?VERSION=1.1.1&SRS=epsg:4267&REQUEST=GetMap&LAYERS=Layers/World/Countries&STYLES=&BBOX=-180,-180,180,180&WIDTH=800&HEIGHT=600&FORMAT=image/gif

J2ME 網路存取 WMS 導航圖像

MIDP 使用 HTTP 協定 (javax.microedition.io.HttpConnection)。核心程式碼:建立連線、取得輸入流、讀入位元組陣列、Image.createImage(byte[], 0, length) 建立圖像、Canvas.paint() 中 g.drawImage() 繪製。

HttpConnection conn = (HttpConnection) Connector.open(wmsUrl);
DataInputStream in = new DataInputStream(conn.openInputStream());
byte[] data = new byte[(int)conn.getLength()];
in.readFully(data);
Image img = Image.createImage(data, 0, data.length);
g.drawImage(img, 0, 0, Graphics.LEFT | Graphics.TOP);

RMS 本地儲存導航圖像資源

MIDP RecordStore (RMS) 提供永久儲存。將網路獲取的圖像位元組陣列 addRecord() 寫入 RMS,下次相同請求直接讀取本地 getRecord() 重建圖像,減少 GPRS 重複請求與流量。

結語

行動裝置與 Web 服務無縫整合,讓手機充分利用網路計算資源,發揮 WMS 計算能力與手機移動性優勢。本文拋磚引玉,敬請指正。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved