找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 1547|回复: 2

[PalmOS软件] 通过GoogleMap制作标签地图

[复制链接]
发表于 2008-5-6 00:49 | 显示全部楼层 |阅读模式
首先申明,以下步骤是为了制作标签地图,也就是传统的地图,而不是卫星地图。如何通过GoogleMap制作卫星地图,已经有很多文章介绍,或者通过软件实现了,例如:GoogleMapsRipper或G_capturer等。我制作该地图的原因是我想要获得阿布扎比的电子地图(Gif格式),以便在我的Palm或笔记本电脑上使用,但我在网上找来找去,都找不中东地区的地图,于是想尝试一下通过GoogleMap下载并制作电子地图。以下的大概步骤:5 J6 J: w( b# e$ q, W) H
: n2 u& ], N1 r. e0 ?
1. 通过抓包发现GoogleMap的下载地址,类似如下 :! d" J, Q# _; T

* Y$ c. I, W% r: `" b: Phttp://mt0.google.com//mt?n=404& ... zoom=0&s=Galile( e& O4 j- n; t( z' |

! \, Y5 [1 J% l" b3 y" w1 E  Q其中,变化的部分主要是x,y,zoom9 i) d. O" t6 T. }3 O$ @

5 G0 U  U9 q! y+ i& X2 P" A2.根据以上规则,写一个简单的脚本,例如命名为gm.sh,注:需在cygwin或linux下运行9 t( }- X6 B" ^' [

6 ?  |+ X4 S1 i( [3 Z5 Q. |( @#!/bin/bash
; D( _1 ~5 i) Y, |! H2 Lfor ((i=$1;i<=$3;i++))( F$ x3 ]9 _' @( A) t) f# ~; S# M
do
* n) `# Z; E& c* ]8 ]( {" K6 ?for ((j=$2;j<=$4;j++))+ c0 c4 ?  I$ f; J
do
$ A+ J5 k& o( f- q# _1 ?  [wget -c “http://mt0.google.com/mt?n=404&v=w2.69&hl=zh-CN&x=$i&y=$j&zoom=$5&s=Gal” -O “$j”x”$i”.png
2 \- d% ], v! |/ c. z- Cdone
4 A  O$ s- ~* _) N% {8 L( G, udone* e, q8 J: g8 M. h1 A, Z
! l+ q, \: |  s: O8 z

, d& S! f  U% c6 _% X
9 q+ J; E% Y6 ^% U5 v) \! [3 A3.通过抓包获知阿布扎比的左上角座标和右下角座标,即(85305,56331)( 85372, 56372)
( i" h: C7 w* u& Y. q& p+ R. S
  m3 c+ G" ^2 s$ i因此,执行以下命令:
/ U- e0 R) T8 E2 K; y0 S
; n, Z  T* j$ @# N; T0 Ugm.sh 85305 56331 85372 56372 0
; u/ D% `8 j6 n+ Z% ]
2 [  I" |2 P; c4.等上约半小时,所有的小片地图全部下载下来的,剩下的问题就是如何拼接它们成一个大图片
2 k7 ^2 B" @$ ]7 `
" d& r0 M0 ~9 ^9 ]: {4 A5. 由于找不到合适的拼接软件,我写了以下程序(Java),其中有一部分硬编码,如果读者使用需自行修改
6 V% r3 ]/ ^2 S: ?& W) {: C2 B% E6 @1 f, B6 C4 S- |; A2 j$ ~- n
import java.awt.Graphics2D;
- j7 L9 v8 O, M0 p6 t% e2 @import java.awt.image.BufferedImage;6 A- a' x0 r2 l7 L
import java.io.File;
9 ^, E. E( g& X  D) Z! }: i+ }import java.io.IOException;5 o% E2 ^- R/ ?; P; m8 q/ X: U$ O. q- p
# m9 j" g: C; r3 p6 A* o; a6 n3 c
import javax.imageio.ImageIO;
0 Z- ?- V9 o6 t6 r7 U: c- n# [0 s" G& s7 s# t
public class PngMerge {
* ]0 e( O; H  x% rpublic static void main(String[] args). p$ b% j0 z* l# }5 s5 B; Z  k6 ?
{
* f8 {, s5 M* }8 Mtry {
  j2 u2 ?- u. A. J- I1 s) X# l' N7 Z- x8 H
//original, maybe too big!
. e$ l% {6 T4 }) R//merge(85305,56331,85372,56372);: c$ \4 N2 f' x
//smaller( ^. u# I/ x; S  I4 y
merge(85314,56331,85342,56353);2 m/ A3 R! I# Y4 ]9 a- T
# W6 s+ Q; `) W/ y# f
} catch (IOException e) {  y: W$ O& I( I- O4 C0 p2 A# G
// TODO Auto-generated catch block. K5 m  b& F9 q+ {
e.printStackTrace();  i# x% A# K0 e! T& X' p. ]5 f* b
}
5 \, y+ U' b8 {6 n/ A( b}
5 z( _1 }5 x& N% ?, A( rpublic static void merge(int x1, int y1, int x2, int y2) throws IOException: {$ ]7 I3 H1 v" \/ K
{0 z# A8 c) q* Q9 V& M/ Y$ q
BufferedImage canvas = new BufferedImage((x2-x1+1) * 256, (y2-y1+1)*256, BufferedImage.TYPE_INT_ARGB);1 G5 }* Z/ a+ R* n
Graphics2D g = canvas.createGraphics();
- p# f- y  V# Yfor (int i =x1; i <= x2; i ++)
8 X7 z4 K, ~5 ]  h) c/ u! X{
- K  M! R, I  x/ pfor (int j = y1; j <= y2; j ++)
4 I  E# P  H2 f1 b; o{& Q, j! [4 G6 [7 p/ r) x

1 m& j1 w$ ~, q" C$ pString x = Integer.toString(i);. b$ `+ ]2 h; _
String y = Integer.toString(j);9 P+ S0 ~2 [% x! o. _
6 @0 s2 P) h9 {" h' g& F* v+ C0 q1 V2 a
File input = new File(”eee\\” + y + “x” + x + “.png”);2 }1 p/ C* o% L1 W. K3 N4 E5 R1 m
BufferedImage im = ImageIO.read(input);% n, s& T& ~7 W* @; z
g.drawImage(im, null, 256*(i-x1), 256*(j-y1));5 t2 R- e; f: M9 I) s- t0 ^
//im.flush();
& [9 A/ l1 z. T0 Y. K2 @& k% z- D- U9 ]7 T}1 v5 j+ y9 c1 R  @$ C9 s/ ]4 [
}
5 l  c0 D( l$ K) L* q2 F8 M
& ~" G8 Z: R# |2 WFile output = new File(”out.png”);1 c9 x2 e9 ?% ^7 E
ImageIO.write(canvas,”png”,output);! t& M( [* ~  s: P9 F
}. y) u' c& o: B9 ~
}7 K- h! c+ Y  q1 d* I' l/ n9 f: R9 y* O

0 o1 q( @# r9 o+ X6. 运行上述Java程序,得到一个完整的大的地图图片,格式是png
7 x' Q! ]8 k4 V! \# T! f6 W/ x. _4 ^! r3 A% l
7.由于我希望在Palm的Tracker上运行,而它只支持GIF,因此用Windows自带的“图片与传真查看器”另存一下,即转成了GIF格式
# s% E1 ?% `( A  @4 X0 X$ a8 u, h+ P; ], I
注:以上文章来转自我的博客http://linn.8800.org/blog
发表于 2008-5-8 14:04 | 显示全部楼层
好文章
, X' d0 K7 X2 s2 A4 _4 ~& ?' B% P9 C2 \+ v" S
造福各位弟兄了
发表于 2008-5-8 15:34 | 显示全部楼层
厲害!支持!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

QQ|Archiver|手机版|小黑屋|吹友吧 ( 京ICP备05078561号 )

GMT+8, 2025-4-21 04:18 , Processed in 0.623323 second(s), 16 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表