2009-08-06 30 views
3

私はちょうどGoogle Map Buddyを使ってGoogleマップから衛星画像を取得しようとしました。このアプリケーションは、まずGoogleマップから小さな画像をダウンロードしてから、それらを一緒に新しい画像に貼り付けます。私はコンピュータに画像をダウンロードするのに約2時間待たなければならなかった。そしてそれはそれがすべての画像(22,194画像)をダウンロードしたように見えたが、アプリはそれを一緒に固執できないと私に言った。私は再びアプリを起動したとき、私はこのアプリは私のコンプに画像を再利用しますが、再びダウンロードを開始します。だから私はそのプロセスをやめて、どうやってそのパズルを一緒に置くことができるか知っていれば頼んでくれました。それらの画像の画像を貼り付ける

命名パターンは、このように書きます:

x=92651y=48130zoom=17.png 
x=92652y=48130zoom=17.png 
x=92653y=48130zoom=17.png 
x=92654y=48130zoom=17.png 
x=92655y=48130zoom=17.png 
... 
... 
x=92664y=48131zoom=17.png 
x=92665y=48131zoom=17.png 
x=92666y=48131zoom=17.png 
x=92667y=48131zoom=17.png 
... 
... 
x=92689y=48132zoom=17.png 
x=92690y=48132zoom=17.png 
x=92691y=48132zoom=17.png 
x=92692y=48132zoom=17.png 
x=92693y=48132zoom=17.png 

は、私はいくつかの簡単なスクリプト言語を使用してプログラムそれらを一緒に固執する何ができますか?私はMacとWindowsシステムにアクセスでき、簡単なスクリプト言語をインストールできます。

おかげ

+1

Googleマップ利用規約では許可されていませんか? –

答えて

2

PythonPython Imaging Library (PIL)を使用できます。

まず、ファイル名とその座標のリストを作成します。正規表現を含むファイル名から整数座標を抽出し、辞書のリストに保存:

>>> filename = 'x=92664y=48131zoom=17.png' 
>>> imagePattern = re.compile(r'^x=(\d{5})y=(\d{5})zoom=17.png$') 
>>> x,y = map(int, imagePattern.search(filename).groups()) 
>>> {'x':x, 'y':y, 'filename':filename} 
{'y': 48131, 'x': 92664, 'filename': 'x=92664y=48131zoom=17.png'} 

辞書のリストを持つことは、どちらかの寸法に応じてそれらを並べ替えることができます。また、

tileListSortedByX = sorted(tileList, key = lambda i: i["x"]) 

とそれらをフィルタリング:

あなたが簡単に についてループを想像することができ、これらの二つの操作で
fileListWhereX48131 = [tile for tile in tileList if tile["x"]==48131] 

タイルを1行ずつ繰り返し処理します。

最後に、小さなタイル画像を貼り付ける大きな空の画像(PIL付き)を作成する必要があります。そのサイズはタイルサイズの倍数になります。大きなものに小さな画像を貼り付ける

>>> from PIL import Image 
>>> bigImage = Image.new('RGB',(300,300),(255,255,255)) 
    #creates a white 300x300 image 

は次のようになります。

>>> smallImage = Image.open(tile["filename"]) 
>>> bigImage.paste(smallImage,(0,0)) 

は、あなたのアイデアを得る願っています。

1

は「一緒に画像を貼り付ける」のプロセスは、通常、「ステッチ」や「モザイク」と呼ばれています。

私はウィキペディアの記事 "Comparison of Photo Stitching Applications"でこれを行う多くのアプリケーションのリストを見つけました。

編集済み:単一のアプリケーションへのリンクが削除されました。私は見つけて、ソフトウェアのウィキペディアのリストに置き換えました。

+1

このようなプログラムでは、必要な領域の大きさに応じて、潜在的に何百ものタイルを手で配置する必要があることに注意してください。 –

+0

Macでコマンドラインやオートメーターを使ってプログラマティックにすることは可能ですか? – Maksim

+0

「マッチングモード」の「自動」の値は比較のためのものと思われます。 – Nate

関連する問題