2017年06月28日

時系列アニメーションをPDFに

前回は地価の時系列データを使って描いた地図を、動画ファイルに出力する方法を確認した。

でも、地価の値に興味がある人なら、ある時点でアニメーションを止めたくなると思う。ArcGISを持っていればもちろんタイムスライダーバーをその時点で止めればいいわけだけど、プレゼンのように、みんなの前で何か見せる時は、あらかじめ作っておいた地図を見せる方がトラブルも少なく安心だ。

そういうわけで、今回は各年の地図をPDFに出力する方法を確認する。

まず手作業でやるなら、タイムスライダーを1年ずらして、ファイル>エクスポートでPDFにエクスポートして、これを30年分…という方法だろうか。作業に入る前から、遠い目になってしまいそうだ。第一、PDFを作ってから、ちょっと地価のポイントの色を変えたいんだよねーとなると、また一からエクスポートのし直しだ。まぁ30年ぐらいならやらないこともないけどね…。(この妥協が悲劇を生むことが多い)。

もし頑張ればPythonを実行できる、という人なら、スクリプト作るといいと思う。

私はすんごく頑張らないとPythonのコードを書くことができない。ということで、以下のArcGISのマニュアルに出ているコードを参照してみた。

DataFrameTime ― Help | ArcGIS for Desktop
http://desktop.arcgis.com/ja/arcmap/10.3/analyze/arcpy-mapping/dataframetime-class.htm#C_GUID-31BD4516-B656-43D6-800F-C4FADE9D4062

コードのサンプルのところのexample 1のところに出ているコードを使った。以下にこのコードをベースに、ほんとにちょっとだけ書き換えたものをコメント付きで載せておく。

(コメントでは日本語を使っていて、コードに日本語を使うための処理をしていないので、削除しないと動かないと思う。#で始まる行は削除してくださいな。あるいは、# coding: cp932をコードの先頭にいれてくださいな。(SJISでコードを保存する場合))

import arcpy
import os

### mxd名をフルパスで指定 パスの区切りは円マーク2つ ###
mxd = arcpy.mapping.MapDocument("C:\\home\\gisdata\\d01_tokchika_anime.mxd")

# df にMapLayersというデータフレームを代入
# 上記.mxdの地価データを読みこんだデータフレーム名もMapLayersに変更して
# .mxdを保存しておくこと
df = arcpy.mapping.ListDataFrames(mxd, "MapLayers")[0]

# df.time.currentTimeにMapLayersデータフレームの開始時間を代入
# 開始時間はタイムスライダーのオプション内で設定した時間だと思う
df.time.currentTime = df.time.startTime

# df.time.currentTimeが終了時間以下の時、while文内を実行
while df.time.currentTime <= df.time.endTime:
# 時間文字列は例えば2008-12-29 02:19:59となる。
# これをハイフンで区切り、最初の文字列(つまり2008)に
# yearと.pdfをつけてファイル名とする
fileName = "year" + str(df.time.currentTime).split("-")[0] + ".pdf"

print df.time.currentTime

# fileNameに出力先のフルパスを追加する
fileName = os.path.join("C:\\home\\gisdata\\pdfs\\", fileName)

# mxdからfileNameにPDFを出力する
arcpy.mapping.ExportToPDF(mxd, fileName)

# df.time.currentTimeに時間間隔分をプラス
# 時間間隔もタイムスライダーのオプション内で指定されている数値だと思う
df.time.currentTime = df.time.currentTime + df.time.timeStepInterval
del mxd

これを実行すると、C:\home\gisdata\pdfs\の中に、year1983.pdfといったファイルが出力される。それらを1つのPDFにまとめたのが、以下のPDFだ。
若干容量が大きいので、ダウンロードにはご注意を。(15.3MB)

国土数値情報 地価公示データから作った東京23区の地価の地図
tokchika1983-2015.pdf


この方法だと.aviに出力したものよりはきれいじゃないかなー。AcrobatでPDFを表示している場合は、ページレベルにズームで表示(「表示>ズーム>ページレベルにズーム」を選択)すると、1ページ全体がぴったりとAcrobatの中に表示される。ここで、マウスのホイールをくるくる回すとアニメーション的表示ができる。

ところで、PDFを1つにまとめる際、私がよく使っているのは、CubePDFPageというフリーソフトだ。
PDFページ結合・分割フリーソフト
http://www.cube-soft.jp/cubepdfpage/

全部の年じゃなくて、5年おきの地図だけ必要ならそれだけをCubePDFPageにドラッグしてあげて、PDFを作成するなんてこともできる。うーん便利。

ちなみに、mxdをPDFに出力するarcpy.mapping.ExportToPDFでは、「PDF」の部分をPNGやらJPGに変えるとそれらのファイルに出力することもできる(詳細はマニュアルを見てくださいな)。動画にしたいならこれらの画像からArcGISの外で何かツールを使ってアニメーションにすると、きれいにできると思う。

今回は頑張ってPythonを実行してみた。
ではでは〜。
posted by たかはし at 11:00| Comment(0) | ArcGIS
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: