SlideShare a Scribd company logo
ArcGISの便利な印刷周りの機能に、
QGIS APIを駆使して挑んでみたお話


     北海道地図株式会社
       朝日 孝輔
       長船 翔太
disってるわけではありません




       2
QGISのAPIとかいじってます

●   趣味です
●   会社黙認
    シーッ! d( ゚ε゚;)




                    3
QGISに詳しいの?

●   編集ツールとして使ってます
●   GRASS?何それおいしいの?
●   幾何演算とかするなら他のツール使っちゃってるかも

●   APIいじってるけど、仕事でAPI使ったことは実は無いの




                 4
そうは言っても業務で使ってるよ

●   紙地図をスキャンしてのジオリファレンス




                5
そうは言っても業務で使ってるよ

●   ベクトルデータの編集
●   小規模なものから大規模まで

●   例えば
    ● 数百万ポリゴン



        PostgreSQL/PostGISで管理   各種地図
                                データ
    ●   複数人で編集


                          6
会社では他のGISも使われてます




       7
会社では他のGISも使われてます




       8
ある日


 ArcGIS10 チョー便利
 帳票印刷簡単に
 作れますよ
 QGISで
 出来ないでしょうw




 9
ある日


お、disってんのか??

よろしいならば戦争
検証だ




               10
お題




11
お題


 広域図
         学校校区エリアを
         包含する地図
    学校校区エリア分
     自動で作るべし

 属性表示             凡例

              スケール・ページ数・作成者
タイトルなど
         12
お題 使用するデータ

●背景地図(弊社GISMAPシリーズ)


●国土数値情報ダウンロードサービス
 ・小学校区データ
 ・公共施設データ


●数値地図5mメッシュ DEM



             13
ArcGIS10 便利なレイアウト機能

●   ArcGIS10より標準搭載された「データドリブン」機能を活かす




                               ArcGISブログ~図郭ごとにマップを出力する方法
                  http://blog.esrij.com/arcgisblog/2011/03/post-5653.html

                        14
ArcGIS 作業の流れ1

●   マップデータの構築                  2hぐらい
    →データレイヤの追加、色スタイル設定、ラベル発生、フィルタ処
     理…etc
      データ読込初期状態        作り込み後のマップイメージ




                  15
ArcGIS 作業の流れ2

                               2hぐらい
●   帳票のレイアウトの構築
    →タイトル、凡例、広域図、属性情報、方位、ページ数…etc

      既存のテンプレート          作り込みテンプレート




                   16
ArcGIS 作業の流れ3

●   校区ポリゴン毎にドリブン化設定             0.5hぐらい


       校区1          校区2         校区3




                    17
ArcGIS 作業の流れ4
                                                GUI操作上で0.5hぐらい
●   PDF連続出力        
      GUIでも出力可能だけど、ArcPy(Python)でスクリプト化
    #mxdファイルの指定
    mxd = arcpy.mapping.MapDocument(mxdFilePath)

    #ドリブンの更新
    mxd.dataDrivenPages.refresh

    #ドリブンで構成したページのPDFを作成(複数PDF)1
    for pageNum in range(1, mxd.dataDrivenPages.pageCount + 1):
      mxd.dataDrivenPages.currentPageID = pageNum
      print "Exp_pageNum: " + str(pageNum)
     arcpy.mapping.ExportToPDF(mxd, cd + "pdfMap"+ str(pageNum) + ".pdf")



                                        18
ArcGIS 作業完了

●   作業時間トータル6h
●   マップデータの表示設定と帳票レイアウトの作り込みには多少のコ
    ツがいるが、基本的にはプログラム不要の”えいやー”感覚で作れる。




                   19
QGIS

●   プリントコンポーザーという機能がある
●   各種部品をGUIで配置出来る
●   特定箇所を特定
    レイアウトで出せる
●   連続で出力するような
    機能はない




                20
QGIS

●   PythonコンソールからQGIS APIを使えるよ




●   QGIS API(Python)使用方法
    ● Pythonコンソールから



    ●   Pythonでプラグインを作っちゃう
    ●   カスタムアプリケーションにQGIS APIを埋め込む

                       21
QGIS

●   選択されているベクトルレイヤーの図形の属性(0)を表示

     l = qgis.utils.iface.activeLayer()
     provider = l.dataProvider()

     feat = QgsFeature()

     allAttrs = provider.attributeIndexes()

     provider.select(allAttrs)

     while provider.nextFeature(feat):
      att = feat.attributeMap()
      print att[0].toString()




                                              22
QGIS

●   メニューバーを全部消してしまう

     iface = qgis.utils.iface
     childrenList = iface.mainWindow().children()

     for item in childrenList:
       if isinstance(item, PyQt4.QtGui.QToolBar):
         item.hide()




                                       23
QGIS

●   今回使ったのは ”Script Runner” プラグイン
●   マクロのイメージ
●   “Add Script”
    → “Run Script”
●   プラグインを作るより
    少しだけ気がラク




                     24
QGIS

作1
っ日
てで
み出
ま来
しる
たと
 こ
 ま
 で

      25
QGIS

●   データ取り込み、表現設定は先に行っておく
●   200行くらいのスクリプトです
    ●   選択されているレイヤーの図形でループ
        –   図形の外接矩形を取得
            ●   周辺図用画面キャプチャ
            ●   縮尺を変えて、広域図用画面キャプチャ
        –   図形の属性取得して描画
        –   その他整飾を描画
        –   PDF書き出し
                          26
QGIS
                                                                                抜粋です
●   外接矩形に合わせて画面を移動
     self.canvas.setExtent(bound)
     self.canvas.zoomScale(self._adjustScale(self.canvas.scale()))
     self.canvas.refresh()


●   枠を描画
    pen = QPen(Qt.black)
    pen.setWidth(10)
    paint.setPen(pen)
    paint.drawRect(self._mm2dotX(11.0), self._mm2dotY(11.0), self._mm2dotX(270.0),
    self._mm2dotY(190.0))
          paint.drawLine(self._mm2dotX(11.0), self._mm2dotY(188.0),
    self._mm2dotX(281.0), self._mm2dotY(188.0))
          paint.drawLine(self._mm2dotX(230.0), self._mm2dotY(194.0),
    self._mm2dotX(281.0), self._mm2dotY(194.0))
          paint.drawLine(self._mm2dotX(230.0), self._mm2dotY(188.0),
    self._mm2dotX(230.0), self._mm2dotY(201.0))

                                             27
QGIS
                                                                              抜粋です
●   文字描画
     pen = QPen(Qt.black)
     pen.setWidth(8)
     paint.setPen(pen)
     paint.setFont(QFont("Arial", 20))
     paint.drawText(self._mm2dotX(55.0), self._mm2dotY(198.0), ur'千葉県東金市・九十
     九里町 小学校別防災MAP')

●   画像を描画
    imgArrow = QImage(ur'C:OSGeo4Wappsqgisimagesnorth_arrowsdefault.png')
    paint.drawImage(self._mm2dotX(95.0), self._mm2dotY(80.0),
    imgArrow.scaled(self._mm2dotX(5.0), self._mm2dotY(5.0)))




                                         28
QGIS vs ArcGIS

●   注記、記号 orz




                 29
QGIS vs ArcGIS

●   広域図 orz




                    30
QGIS vs ArcGIS

●   スケール orz

●   ラスタ凡例 orz




                     31
ここまでの結論

●   商用GISは気が効いてるよね
●   でも、少し手間かければ似たようなことが出来るよ
    #ということにしておこう

●   もう1レベル上のクラスをきちんと使えれば・・・
●   情報が少ないので、誰かが公開しててくれれば・・・




                32
そこのあなた

●   私もFOSS4G 2010 Tokyoで始めて触りました
●   PyQGISの世界へようこそ
    まだまだやってる人少ないです
●   便利なプラグインを作ろう
●   情報を公開しよう

●   今年もFOSS4G 2012 Tokyoではハンズオンあるかな?



                    33
さらに

●   QGISはC++で書かれています
●   開発しちゃいなよ
●   特に日本語周りはみなさん苦労してるので、
    解決しちゃって
    #でもgdal/ogrの問題かな




                34
QGISの名前は

        Developer
        Meetingの場所




   35
こんなのだってありえる




     36
ご
清
聴
あ
り
が
と
う
ご
ざ
い
ま
し
た   37

More Related Content

What's hot

QGISプログラミング入門 FOSS4G 2013 Hokkaido
QGISプログラミング入門 FOSS4G 2013 HokkaidoQGISプログラミング入門 FOSS4G 2013 Hokkaido
QGISプログラミング入門 FOSS4G 2013 HokkaidoKosuke Asahi
 
GRASSセミナー基礎編
GRASSセミナー基礎編GRASSセミナー基礎編
GRASSセミナー基礎編Kanetaka Heshiki
 
09遺跡分布を分析する〜カーネル密度推定〜
09遺跡分布を分析する〜カーネル密度推定〜09遺跡分布を分析する〜カーネル密度推定〜
09遺跡分布を分析する〜カーネル密度推定〜Junpei Ishii
 
Pythonではじめるロケーションデータ解析
Pythonではじめるロケーションデータ解析Pythonではじめるロケーションデータ解析
Pythonではじめるロケーションデータ解析Hiroaki Sengoku
 
Qgis raster 3.16
Qgis raster 3.16Qgis raster 3.16
Qgis raster 3.16Jyun Tanaka
 
AIを使ったキュウリの自動選別
AIを使ったキュウリの自動選別AIを使ったキュウリの自動選別
AIを使ったキュウリの自動選別Makoto Koike
 
地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2
地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2
地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2Taro Matsuzawa
 
GTFSオープンデータで公共交通をアップデート
GTFSオープンデータで公共交通をアップデートGTFSオープンデータで公共交通をアップデート
GTFSオープンデータで公共交通をアップデートMasaki Ito
 
地理学卒論・修論生のためのQGIS講座_実習編
地理学卒論・修論生のためのQGIS講座_実習編地理学卒論・修論生のためのQGIS講座_実習編
地理学卒論・修論生のためのQGIS講座_実習編Inoshachu, NPO
 
JavaScript GIS ライブラリ turf.js 入門
JavaScript GIS ライブラリ turf.js 入門JavaScript GIS ライブラリ turf.js 入門
JavaScript GIS ライブラリ turf.js 入門Takahiro Kamada
 
大規模タイル画像を生成した話((独)農研機構 寺元郁博様)
大規模タイル画像を生成した話((独)農研機構 寺元郁博様)大規模タイル画像を生成した話((独)農研機構 寺元郁博様)
大規模タイル画像を生成した話((独)農研機構 寺元郁博様)OSgeo Japan
 
WebGIS初級編 - OpenLayersで簡単作成
WebGIS初級編 - OpenLayersで簡単作成WebGIS初級編 - OpenLayersで簡単作成
WebGIS初級編 - OpenLayersで簡単作成Hideo Harada
 
Geopaparazziの説明資料(Geopaparazziハンズオン)
Geopaparazziの説明資料(Geopaparazziハンズオン)Geopaparazziの説明資料(Geopaparazziハンズオン)
Geopaparazziの説明資料(Geopaparazziハンズオン)Kouichi Kita
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」Ken'ichi Matsui
 
Cesiumマニアックス― Revenge ―
Cesiumマニアックス― Revenge ―Cesiumマニアックス― Revenge ―
Cesiumマニアックス― Revenge ―Ryousuke Wayama
 
ユースケースからテスト駆動開発へ
ユースケースからテスト駆動開発へユースケースからテスト駆動開発へ
ユースケースからテスト駆動開発へShuji Watanabe
 
QgisとRで野生動物の追跡結果を解析してみよう
QgisとRで野生動物の追跡結果を解析してみようQgisとRで野生動物の追跡結果を解析してみよう
QgisとRで野生動物の追跡結果を解析してみようNozomiIriomote
 
地図タイルを作成・公開してみて わかった108個のこと(foss4g tokyo 2013発表資料)
地図タイルを作成・公開してみて わかった108個のこと(foss4g tokyo 2013発表資料)地図タイルを作成・公開してみて わかった108個のこと(foss4g tokyo 2013発表資料)
地図タイルを作成・公開してみて わかった108個のこと(foss4g tokyo 2013発表資料)Mizutani Takayuki
 

What's hot (20)

QGISプログラミング入門 FOSS4G 2013 Hokkaido
QGISプログラミング入門 FOSS4G 2013 HokkaidoQGISプログラミング入門 FOSS4G 2013 Hokkaido
QGISプログラミング入門 FOSS4G 2013 Hokkaido
 
GRASSセミナー基礎編
GRASSセミナー基礎編GRASSセミナー基礎編
GRASSセミナー基礎編
 
09遺跡分布を分析する〜カーネル密度推定〜
09遺跡分布を分析する〜カーネル密度推定〜09遺跡分布を分析する〜カーネル密度推定〜
09遺跡分布を分析する〜カーネル密度推定〜
 
Pythonではじめるロケーションデータ解析
Pythonではじめるロケーションデータ解析Pythonではじめるロケーションデータ解析
Pythonではじめるロケーションデータ解析
 
Qgis raster 3.16
Qgis raster 3.16Qgis raster 3.16
Qgis raster 3.16
 
AIを使ったキュウリの自動選別
AIを使ったキュウリの自動選別AIを使ったキュウリの自動選別
AIを使ったキュウリの自動選別
 
地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2
地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2
地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2
 
GTFSオープンデータで公共交通をアップデート
GTFSオープンデータで公共交通をアップデートGTFSオープンデータで公共交通をアップデート
GTFSオープンデータで公共交通をアップデート
 
地理学卒論・修論生のためのQGIS講座_実習編
地理学卒論・修論生のためのQGIS講座_実習編地理学卒論・修論生のためのQGIS講座_実習編
地理学卒論・修論生のためのQGIS講座_実習編
 
JavaScript GIS ライブラリ turf.js 入門
JavaScript GIS ライブラリ turf.js 入門JavaScript GIS ライブラリ turf.js 入門
JavaScript GIS ライブラリ turf.js 入門
 
大規模タイル画像を生成した話((独)農研機構 寺元郁博様)
大規模タイル画像を生成した話((独)農研機構 寺元郁博様)大規模タイル画像を生成した話((独)農研機構 寺元郁博様)
大規模タイル画像を生成した話((独)農研機構 寺元郁博様)
 
Photonのサービス選択の勘どころ
Photonのサービス選択の勘どころPhotonのサービス選択の勘どころ
Photonのサービス選択の勘どころ
 
WebGIS初級編 - OpenLayersで簡単作成
WebGIS初級編 - OpenLayersで簡単作成WebGIS初級編 - OpenLayersで簡単作成
WebGIS初級編 - OpenLayersで簡単作成
 
Geopaparazziの説明資料(Geopaparazziハンズオン)
Geopaparazziの説明資料(Geopaparazziハンズオン)Geopaparazziの説明資料(Geopaparazziハンズオン)
Geopaparazziの説明資料(Geopaparazziハンズオン)
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
 
Cesiumマニアックス― Revenge ―
Cesiumマニアックス― Revenge ―Cesiumマニアックス― Revenge ―
Cesiumマニアックス― Revenge ―
 
ユースケースからテスト駆動開発へ
ユースケースからテスト駆動開発へユースケースからテスト駆動開発へ
ユースケースからテスト駆動開発へ
 
QGIS入門(1)
QGIS入門(1)QGIS入門(1)
QGIS入門(1)
 
QgisとRで野生動物の追跡結果を解析してみよう
QgisとRで野生動物の追跡結果を解析してみようQgisとRで野生動物の追跡結果を解析してみよう
QgisとRで野生動物の追跡結果を解析してみよう
 
地図タイルを作成・公開してみて わかった108個のこと(foss4g tokyo 2013発表資料)
地図タイルを作成・公開してみて わかった108個のこと(foss4g tokyo 2013発表資料)地図タイルを作成・公開してみて わかった108個のこと(foss4g tokyo 2013発表資料)
地図タイルを作成・公開してみて わかった108個のこと(foss4g tokyo 2013発表資料)
 

Similar to ArcGISの便利な印刷周りの機能に、QGIS APIを駆使して挑んでみたお話

150828 rihn gis_workshop_handson_presentation
150828 rihn gis_workshop_handson_presentation150828 rihn gis_workshop_handson_presentation
150828 rihn gis_workshop_handson_presentationTakayuki Nuimura
 
QGISセミナー初級・実践編(V2.4)
QGISセミナー初級・実践編(V2.4)QGISセミナー初級・実践編(V2.4)
QGISセミナー初級・実践編(V2.4)IWASAKI NOBUSUKE
 
QGISセミナー初級編 ~QGISの使い方・実践編~ Ver. 2.4版
QGISセミナー初級編 ~QGISの使い方・実践編~ Ver. 2.4版QGISセミナー初級編 ~QGISの使い方・実践編~ Ver. 2.4版
QGISセミナー初級編 ~QGISの使い方・実践編~ Ver. 2.4版FOSS4G_MEXT
 
Media Art II 2013 第5回:openFrameworks Addonを使用する
Media Art II 2013 第5回:openFrameworks Addonを使用するMedia Art II 2013 第5回:openFrameworks Addonを使用する
Media Art II 2013 第5回:openFrameworks Addonを使用するAtsushi Tadokoro
 
QGISセミナー・中級編 Ver. 2.4版
QGISセミナー・中級編 Ver. 2.4版QGISセミナー・中級編 Ver. 2.4版
QGISセミナー・中級編 Ver. 2.4版FOSS4G_MEXT
 
[20170922 Sapporo Tech Bar] 地図用データを高速処理!オープンソースGPUデータベースMapDってどんなもの?? by 株式会社...
[20170922 Sapporo Tech Bar] 地図用データを高速処理!オープンソースGPUデータベースMapDってどんなもの?? by 株式会社...[20170922 Sapporo Tech Bar] 地図用データを高速処理!オープンソースGPUデータベースMapDってどんなもの?? by 株式会社...
[20170922 Sapporo Tech Bar] 地図用データを高速処理!オープンソースGPUデータベースMapDってどんなもの?? by 株式会社...Insight Technology, Inc.
 
FOSS4Gで地理空間情報もかんたん
FOSS4Gで地理空間情報もかんたんFOSS4Gで地理空間情報もかんたん
FOSS4Gで地理空間情報もかんたんKosuke Asahi
 
[db tech showcase Tokyo 2017] B35: 地図用データを高速処理!オープンソースGPUデータベースMapDの魅力に迫る!!by...
[db tech showcase Tokyo 2017] B35: 地図用データを高速処理!オープンソースGPUデータベースMapDの魅力に迫る!!by...[db tech showcase Tokyo 2017] B35: 地図用データを高速処理!オープンソースGPUデータベースMapDの魅力に迫る!!by...
[db tech showcase Tokyo 2017] B35: 地図用データを高速処理!オープンソースGPUデータベースMapDの魅力に迫る!!by...Insight Technology, Inc.
 
Python Data-Visualization Package Status
Python Data-Visualization Package StatusPython Data-Visualization Package Status
Python Data-Visualization Package StatusYukio Okuda
 
20100930 sig startups
20100930 sig startups20100930 sig startups
20100930 sig startupsIchiro Fukuda
 
Qtiles plugin for QGIS
Qtiles plugin for QGISQtiles plugin for QGIS
Qtiles plugin for QGISHideo Harada
 
GDALとmod_python、mod_rewriteでタイルマップサービスを作ってみた
GDALとmod_python、mod_rewriteでタイルマップサービスを作ってみたGDALとmod_python、mod_rewriteでタイルマップサービスを作ってみた
GDALとmod_python、mod_rewriteでタイルマップサービスを作ってみたKeisuke Nakao
 
blockdiagの最新動向 2011.11 #odstudy
blockdiagの最新動向 2011.11 #odstudyblockdiagの最新動向 2011.11 #odstudy
blockdiagの最新動向 2011.11 #odstudyTakeshi Komiya
 
Hello, DirectCompute
Hello, DirectComputeHello, DirectCompute
Hello, DirectComputedasyprocta
 
Core Graphicsでつくる自作UIコンポーネント入門
Core Graphicsでつくる自作UIコンポーネント入門Core Graphicsでつくる自作UIコンポーネント入門
Core Graphicsでつくる自作UIコンポーネント入門cocopon
 
vImageのススメ(改訂版)
vImageのススメ(改訂版)vImageのススメ(改訂版)
vImageのススメ(改訂版)Shuichi Tsutsumi
 
条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化Takuya Ueda
 
Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Fixstars Corporation
 
自然言語処理に適した ニューラルネットのフレームワーク - - - DyNet - - -
自然言語処理に適した ニューラルネットのフレームワーク - - - DyNet - - -自然言語処理に適した ニューラルネットのフレームワーク - - - DyNet - - -
自然言語処理に適した ニューラルネットのフレームワーク - - - DyNet - - -Ogushi Masaya
 
FOSS4G 2016 Tokyo Qgis初級編テキスト
FOSS4G 2016 Tokyo Qgis初級編テキストFOSS4G 2016 Tokyo Qgis初級編テキスト
FOSS4G 2016 Tokyo Qgis初級編テキストshingo-ootomo
 

Similar to ArcGISの便利な印刷周りの機能に、QGIS APIを駆使して挑んでみたお話 (20)

150828 rihn gis_workshop_handson_presentation
150828 rihn gis_workshop_handson_presentation150828 rihn gis_workshop_handson_presentation
150828 rihn gis_workshop_handson_presentation
 
QGISセミナー初級・実践編(V2.4)
QGISセミナー初級・実践編(V2.4)QGISセミナー初級・実践編(V2.4)
QGISセミナー初級・実践編(V2.4)
 
QGISセミナー初級編 ~QGISの使い方・実践編~ Ver. 2.4版
QGISセミナー初級編 ~QGISの使い方・実践編~ Ver. 2.4版QGISセミナー初級編 ~QGISの使い方・実践編~ Ver. 2.4版
QGISセミナー初級編 ~QGISの使い方・実践編~ Ver. 2.4版
 
Media Art II 2013 第5回:openFrameworks Addonを使用する
Media Art II 2013 第5回:openFrameworks Addonを使用するMedia Art II 2013 第5回:openFrameworks Addonを使用する
Media Art II 2013 第5回:openFrameworks Addonを使用する
 
QGISセミナー・中級編 Ver. 2.4版
QGISセミナー・中級編 Ver. 2.4版QGISセミナー・中級編 Ver. 2.4版
QGISセミナー・中級編 Ver. 2.4版
 
[20170922 Sapporo Tech Bar] 地図用データを高速処理!オープンソースGPUデータベースMapDってどんなもの?? by 株式会社...
[20170922 Sapporo Tech Bar] 地図用データを高速処理!オープンソースGPUデータベースMapDってどんなもの?? by 株式会社...[20170922 Sapporo Tech Bar] 地図用データを高速処理!オープンソースGPUデータベースMapDってどんなもの?? by 株式会社...
[20170922 Sapporo Tech Bar] 地図用データを高速処理!オープンソースGPUデータベースMapDってどんなもの?? by 株式会社...
 
FOSS4Gで地理空間情報もかんたん
FOSS4Gで地理空間情報もかんたんFOSS4Gで地理空間情報もかんたん
FOSS4Gで地理空間情報もかんたん
 
[db tech showcase Tokyo 2017] B35: 地図用データを高速処理!オープンソースGPUデータベースMapDの魅力に迫る!!by...
[db tech showcase Tokyo 2017] B35: 地図用データを高速処理!オープンソースGPUデータベースMapDの魅力に迫る!!by...[db tech showcase Tokyo 2017] B35: 地図用データを高速処理!オープンソースGPUデータベースMapDの魅力に迫る!!by...
[db tech showcase Tokyo 2017] B35: 地図用データを高速処理!オープンソースGPUデータベースMapDの魅力に迫る!!by...
 
Python Data-Visualization Package Status
Python Data-Visualization Package StatusPython Data-Visualization Package Status
Python Data-Visualization Package Status
 
20100930 sig startups
20100930 sig startups20100930 sig startups
20100930 sig startups
 
Qtiles plugin for QGIS
Qtiles plugin for QGISQtiles plugin for QGIS
Qtiles plugin for QGIS
 
GDALとmod_python、mod_rewriteでタイルマップサービスを作ってみた
GDALとmod_python、mod_rewriteでタイルマップサービスを作ってみたGDALとmod_python、mod_rewriteでタイルマップサービスを作ってみた
GDALとmod_python、mod_rewriteでタイルマップサービスを作ってみた
 
blockdiagの最新動向 2011.11 #odstudy
blockdiagの最新動向 2011.11 #odstudyblockdiagの最新動向 2011.11 #odstudy
blockdiagの最新動向 2011.11 #odstudy
 
Hello, DirectCompute
Hello, DirectComputeHello, DirectCompute
Hello, DirectCompute
 
Core Graphicsでつくる自作UIコンポーネント入門
Core Graphicsでつくる自作UIコンポーネント入門Core Graphicsでつくる自作UIコンポーネント入門
Core Graphicsでつくる自作UIコンポーネント入門
 
vImageのススメ(改訂版)
vImageのススメ(改訂版)vImageのススメ(改訂版)
vImageのススメ(改訂版)
 
条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化
 
Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門
 
自然言語処理に適した ニューラルネットのフレームワーク - - - DyNet - - -
自然言語処理に適した ニューラルネットのフレームワーク - - - DyNet - - -自然言語処理に適した ニューラルネットのフレームワーク - - - DyNet - - -
自然言語処理に適した ニューラルネットのフレームワーク - - - DyNet - - -
 
FOSS4G 2016 Tokyo Qgis初級編テキスト
FOSS4G 2016 Tokyo Qgis初級編テキストFOSS4G 2016 Tokyo Qgis初級編テキスト
FOSS4G 2016 Tokyo Qgis初級編テキスト
 

More from Kosuke Asahi

地理空間情報 x ビジネス x オープンソースGIS 勉強会!
地理空間情報 x ビジネス x オープンソースGIS 勉強会!地理空間情報 x ビジネス x オープンソースGIS 勉強会!
地理空間情報 x ビジネス x オープンソースGIS 勉強会!Kosuke Asahi
 
QGISプログラミング入門 2016Osaka編
QGISプログラミング入門 2016Osaka編QGISプログラミング入門 2016Osaka編
QGISプログラミング入門 2016Osaka編Kosuke Asahi
 
FOSS4G 2014 Tokyo懇親会 突然振られるプレゼン課題スライド
FOSS4G 2014 Tokyo懇親会 突然振られるプレゼン課題スライドFOSS4G 2014 Tokyo懇親会 突然振られるプレゼン課題スライド
FOSS4G 2014 Tokyo懇親会 突然振られるプレゼン課題スライドKosuke Asahi
 
FOSS4G 2014 Hokkaido懇親会 突然振られるプレゼン課題スライド
FOSS4G 2014 Hokkaido懇親会 突然振られるプレゼン課題スライドFOSS4G 2014 Hokkaido懇親会 突然振られるプレゼン課題スライド
FOSS4G 2014 Hokkaido懇親会 突然振られるプレゼン課題スライドKosuke Asahi
 
FOSS4Gでオープンデータもかんたん
FOSS4GでオープンデータもかんたんFOSS4Gでオープンデータもかんたん
FOSS4GでオープンデータもかんたんKosuke Asahi
 
FOSS4G 2013 Osaka karaoke LT 課題スライド
FOSS4G 2013 Osaka karaoke LT 課題スライドFOSS4G 2013 Osaka karaoke LT 課題スライド
FOSS4G 2013 Osaka karaoke LT 課題スライドKosuke Asahi
 
QGISプログラミング入門 FOSS4G 2013 Tokyo
QGISプログラミング入門 FOSS4G 2013 TokyoQGISプログラミング入門 FOSS4G 2013 Tokyo
QGISプログラミング入門 FOSS4G 2013 TokyoKosuke Asahi
 
FOSS4Gを利用したWebでの地理空間情報公開入門
FOSS4Gを利用したWebでの地理空間情報公開入門FOSS4Gを利用したWebでの地理空間情報公開入門
FOSS4Gを利用したWebでの地理空間情報公開入門Kosuke Asahi
 
FOSS4G KOREA 2012参加報告
FOSS4G KOREA 2012参加報告FOSS4G KOREA 2012参加報告
FOSS4G KOREA 2012参加報告Kosuke Asahi
 

More from Kosuke Asahi (10)

地理空間情報 x ビジネス x オープンソースGIS 勉強会!
地理空間情報 x ビジネス x オープンソースGIS 勉強会!地理空間情報 x ビジネス x オープンソースGIS 勉強会!
地理空間情報 x ビジネス x オープンソースGIS 勉強会!
 
QGISプログラミング入門 2016Osaka編
QGISプログラミング入門 2016Osaka編QGISプログラミング入門 2016Osaka編
QGISプログラミング入門 2016Osaka編
 
FOSS4G 2014 Tokyo懇親会 突然振られるプレゼン課題スライド
FOSS4G 2014 Tokyo懇親会 突然振られるプレゼン課題スライドFOSS4G 2014 Tokyo懇親会 突然振られるプレゼン課題スライド
FOSS4G 2014 Tokyo懇親会 突然振られるプレゼン課題スライド
 
FOSS4G 2014 Hokkaido懇親会 突然振られるプレゼン課題スライド
FOSS4G 2014 Hokkaido懇親会 突然振られるプレゼン課題スライドFOSS4G 2014 Hokkaido懇親会 突然振られるプレゼン課題スライド
FOSS4G 2014 Hokkaido懇親会 突然振られるプレゼン課題スライド
 
FOSS4Gでオープンデータもかんたん
FOSS4GでオープンデータもかんたんFOSS4Gでオープンデータもかんたん
FOSS4Gでオープンデータもかんたん
 
FOSS4G 2013 Osaka karaoke LT 課題スライド
FOSS4G 2013 Osaka karaoke LT 課題スライドFOSS4G 2013 Osaka karaoke LT 課題スライド
FOSS4G 2013 Osaka karaoke LT 課題スライド
 
QGISプログラミング入門 FOSS4G 2013 Tokyo
QGISプログラミング入門 FOSS4G 2013 TokyoQGISプログラミング入門 FOSS4G 2013 Tokyo
QGISプログラミング入門 FOSS4G 2013 Tokyo
 
FOSS4Gを利用したWebでの地理空間情報公開入門
FOSS4Gを利用したWebでの地理空間情報公開入門FOSS4Gを利用したWebでの地理空間情報公開入門
FOSS4Gを利用したWebでの地理空間情報公開入門
 
FOSS4G KOREA 2012参加報告
FOSS4G KOREA 2012参加報告FOSS4G KOREA 2012参加報告
FOSS4G KOREA 2012参加報告
 
Foss4gkorea2012
Foss4gkorea2012Foss4gkorea2012
Foss4gkorea2012
 

ArcGISの便利な印刷周りの機能に、QGIS APIを駆使して挑んでみたお話

  • 1. ArcGISの便利な印刷周りの機能に、 QGIS APIを駆使して挑んでみたお話 北海道地図株式会社 朝日 孝輔 長船 翔太
  • 3. QGISのAPIとかいじってます ● 趣味です ● 会社黙認 シーッ! d( ゚ε゚;) 3
  • 4. QGISに詳しいの? ● 編集ツールとして使ってます ● GRASS?何それおいしいの? ● 幾何演算とかするなら他のツール使っちゃってるかも ● APIいじってるけど、仕事でAPI使ったことは実は無いの 4
  • 5. そうは言っても業務で使ってるよ ● 紙地図をスキャンしてのジオリファレンス 5
  • 6. そうは言っても業務で使ってるよ ● ベクトルデータの編集 ● 小規模なものから大規模まで ● 例えば ● 数百万ポリゴン PostgreSQL/PostGISで管理 各種地図 データ ● 複数人で編集 6
  • 9. ある日 ArcGIS10 チョー便利 帳票印刷簡単に 作れますよ QGISで 出来ないでしょうw 9
  • 12. お題 広域図 学校校区エリアを 包含する地図 学校校区エリア分 自動で作るべし 属性表示 凡例 スケール・ページ数・作成者 タイトルなど 12
  • 14. ArcGIS10 便利なレイアウト機能 ● ArcGIS10より標準搭載された「データドリブン」機能を活かす ArcGISブログ~図郭ごとにマップを出力する方法 http://blog.esrij.com/arcgisblog/2011/03/post-5653.html 14
  • 15. ArcGIS 作業の流れ1 ● マップデータの構築 2hぐらい →データレイヤの追加、色スタイル設定、ラベル発生、フィルタ処  理…etc データ読込初期状態 作り込み後のマップイメージ 15
  • 16. ArcGIS 作業の流れ2 2hぐらい ● 帳票のレイアウトの構築 →タイトル、凡例、広域図、属性情報、方位、ページ数…etc 既存のテンプレート 作り込みテンプレート 16
  • 17. ArcGIS 作業の流れ3 ● 校区ポリゴン毎にドリブン化設定 0.5hぐらい    校区1        校区2       校区3 17
  • 18. ArcGIS 作業の流れ4 GUI操作上で0.5hぐらい ● PDF連続出力           GUIでも出力可能だけど、ArcPy(Python)でスクリプト化 #mxdファイルの指定 mxd = arcpy.mapping.MapDocument(mxdFilePath) #ドリブンの更新 mxd.dataDrivenPages.refresh #ドリブンで構成したページのPDFを作成(複数PDF)1 for pageNum in range(1, mxd.dataDrivenPages.pageCount + 1): mxd.dataDrivenPages.currentPageID = pageNum print "Exp_pageNum: " + str(pageNum)  arcpy.mapping.ExportToPDF(mxd, cd + "pdfMap"+ str(pageNum) + ".pdf") 18
  • 19. ArcGIS 作業完了 ● 作業時間トータル6h ● マップデータの表示設定と帳票レイアウトの作り込みには多少のコ ツがいるが、基本的にはプログラム不要の”えいやー”感覚で作れる。 19
  • 20. QGIS ● プリントコンポーザーという機能がある ● 各種部品をGUIで配置出来る ● 特定箇所を特定 レイアウトで出せる ● 連続で出力するような 機能はない 20
  • 21. QGIS ● PythonコンソールからQGIS APIを使えるよ ● QGIS API(Python)使用方法 ● Pythonコンソールから ● Pythonでプラグインを作っちゃう ● カスタムアプリケーションにQGIS APIを埋め込む 21
  • 22. QGIS ● 選択されているベクトルレイヤーの図形の属性(0)を表示 l = qgis.utils.iface.activeLayer() provider = l.dataProvider() feat = QgsFeature() allAttrs = provider.attributeIndexes() provider.select(allAttrs) while provider.nextFeature(feat): att = feat.attributeMap() print att[0].toString() 22
  • 23. QGIS ● メニューバーを全部消してしまう iface = qgis.utils.iface childrenList = iface.mainWindow().children() for item in childrenList: if isinstance(item, PyQt4.QtGui.QToolBar): item.hide() 23
  • 24. QGIS ● 今回使ったのは ”Script Runner” プラグイン ● マクロのイメージ ● “Add Script” → “Run Script” ● プラグインを作るより 少しだけ気がラク 24
  • 26. QGIS ● データ取り込み、表現設定は先に行っておく ● 200行くらいのスクリプトです ● 選択されているレイヤーの図形でループ – 図形の外接矩形を取得 ● 周辺図用画面キャプチャ ● 縮尺を変えて、広域図用画面キャプチャ – 図形の属性取得して描画 – その他整飾を描画 – PDF書き出し 26
  • 27. QGIS 抜粋です ● 外接矩形に合わせて画面を移動 self.canvas.setExtent(bound) self.canvas.zoomScale(self._adjustScale(self.canvas.scale())) self.canvas.refresh() ● 枠を描画 pen = QPen(Qt.black) pen.setWidth(10) paint.setPen(pen) paint.drawRect(self._mm2dotX(11.0), self._mm2dotY(11.0), self._mm2dotX(270.0), self._mm2dotY(190.0)) paint.drawLine(self._mm2dotX(11.0), self._mm2dotY(188.0), self._mm2dotX(281.0), self._mm2dotY(188.0)) paint.drawLine(self._mm2dotX(230.0), self._mm2dotY(194.0), self._mm2dotX(281.0), self._mm2dotY(194.0)) paint.drawLine(self._mm2dotX(230.0), self._mm2dotY(188.0), self._mm2dotX(230.0), self._mm2dotY(201.0)) 27
  • 28. QGIS 抜粋です ● 文字描画 pen = QPen(Qt.black) pen.setWidth(8) paint.setPen(pen) paint.setFont(QFont("Arial", 20)) paint.drawText(self._mm2dotX(55.0), self._mm2dotY(198.0), ur'千葉県東金市・九十 九里町 小学校別防災MAP') ● 画像を描画 imgArrow = QImage(ur'C:OSGeo4Wappsqgisimagesnorth_arrowsdefault.png') paint.drawImage(self._mm2dotX(95.0), self._mm2dotY(80.0), imgArrow.scaled(self._mm2dotX(5.0), self._mm2dotY(5.0))) 28
  • 29. QGIS vs ArcGIS ● 注記、記号 orz 29
  • 30. QGIS vs ArcGIS ● 広域図 orz 30
  • 31. QGIS vs ArcGIS ● スケール orz ● ラスタ凡例 orz 31
  • 32. ここまでの結論 ● 商用GISは気が効いてるよね ● でも、少し手間かければ似たようなことが出来るよ #ということにしておこう ● もう1レベル上のクラスをきちんと使えれば・・・ ● 情報が少ないので、誰かが公開しててくれれば・・・ 32
  • 33. そこのあなた ● 私もFOSS4G 2010 Tokyoで始めて触りました ● PyQGISの世界へようこそ まだまだやってる人少ないです ● 便利なプラグインを作ろう ● 情報を公開しよう ● 今年もFOSS4G 2012 Tokyoではハンズオンあるかな? 33
  • 34. さらに ● QGISはC++で書かれています ● 開発しちゃいなよ ● 特に日本語周りはみなさん苦労してるので、 解決しちゃって #でもgdal/ogrの問題かな 34
  • 35. QGISの名前は Developer Meetingの場所 35