2020年05月04日

地図ギャラリー用ブログ公開のお知らせ

作成した地図を公開するためのブログを新たに作成しました。

View data with maps
https://vdwm.sblo.jp/

しばらくは新型コロナウイルス関連の地図を作っていきます。作る全部の地図でなくてもかまわないので、何か発見のある地図を、あるいは何か希望の持てる地図を作れたらなと思っています。

あと、作った地図はTwitterにもUPしています。
てくてくGISラボTwitter
https://twitter.com/tekugislab/

Twitterは文字数が限られていて、地図についての細かい注意点を書き込めていません。これらを確認したい場合は、View data with mapsのサイトをご覧ください。

地図の作り方で何か特筆すべきことがあったら、またこちらのてくてくダイアリーも更新しますね。今のところ、Excelでデータを作って地図に結合してばっかりです。少しは自動化したいな。
posted by たかはし at 20:36| Comment(0) | 日記

2017年07月05日

ラベルに桁区切りを表示

この時期になると、サンディエゴでESRIのユーザ会が開かれる。サンディエゴはメキシコとの国境に近く、市の中心部から路面電車で国境付近まで行って、そこから歩いてメキシコに行くことができる。

ユーザ会のついでに一度だけ、メキシコまで足を延ばしたことがある。

メキシコとアメリカとの境は、それはもうはっきりとわかる。アメリカ側は建物が閑散と建っているのに対して、メキシコ側はぎっしりと建っているからだ。人が決めた境界がこんなにも住む人の生活の境界になってしまうんだ、国境が陸上にあるとその境目はこんなにもはっきりとしてしまうんだと、とても印象深かった。

さてさて、本題。こっちはやっと時系列アニメーションから離れようと思う。でも地価のデータは使う。

何回か前の記事で、凡例を桁区切りで表示する方法を説明したけど、今回はラベルに桁区切りを表示する方法を確認しておく。

ラベルの制御なので、地価のレイヤーからレイヤプロパティを開いて、「ラベル」タブを開く。で、ウインドウ真ん中へんにある、ラベルフィールドの部分で、地価の入ったフィールド名を指定する。以下の例では「LandPriceNum」というフィールドの値をラベリングする設定になっている。

i17060501.png
(図をクリックすると拡大します)

で、その横にある「条件式」というボタンをクリックする。そうすると「ラベル条件式」というウインドウが開く。ここで、形式から「Python」を選んで、「高度な設定」をクリックする。

i17060502.png

「高度な設定」をオンにすると、条件式のあたりが以下のようにちょっと変化する。

i17060503.png

そうしたら、条件式を入力するところに以下のように入力する。

def FindLabel ([LandPriceNum]):
return "{:,}".format(long([LandPriceNum]))

1行目は、「高度な設定」をオンにした直後と同じ文なのでそのまま流用して、2行目だけ書き換えてもよい。

で、念のため、「確認」ボタンをクリックしてみよう。以下のように、サンプルテキストが3桁で区切られて表示されたらOKだ。

i17060504.png

条件式の確認ウィンドウで「OK」ボタンを、さらに、ラベル条件式ウィンドウで「OK」ボタンを、そしてレイヤプロパティウィンドウでも「OK」をクリックする。

そうすると、ラベルが桁区切りとともに、以下のように表示される。

i17060505.png

(上の図では、ラベルのフォントを游ゴシック、11ptで表示している。)

こちらも数字がずらーっと並ぶよりは、まだ数値がわかりやすいと思う。
まま、今回はこれにてー。

(記事内の地価の地図は、国土交通省国土政策局「国土数値情報(地価公示データ)」をもとに、てくてくGISラボ たかはしが編集・加工)
posted by たかはし at 11:00| Comment(0) | ArcGIS

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