SlideShare a Scribd company logo
1 of 37
Download to read offline
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

SSHの便利な使い方〜マイナーな小技編〜
SSHの便利な使い方〜マイナーな小技編〜SSHの便利な使い方〜マイナーな小技編〜
SSHの便利な使い方〜マイナーな小技編〜ktateish
 
[DL輪読会]Transframer: Arbitrary Frame Prediction with Generative Models
[DL輪読会]Transframer: Arbitrary Frame Prediction with Generative Models[DL輪読会]Transframer: Arbitrary Frame Prediction with Generative Models
[DL輪読会]Transframer: Arbitrary Frame Prediction with Generative ModelsDeep Learning JP
 
[DL輪読会]Pyramid Stereo Matching Network
[DL輪読会]Pyramid Stereo Matching Network[DL輪読会]Pyramid Stereo Matching Network
[DL輪読会]Pyramid Stereo Matching NetworkDeep Learning JP
 
機械学習とコンピュータビジョン入門
機械学習とコンピュータビジョン入門機械学習とコンピュータビジョン入門
機械学習とコンピュータビジョン入門Kinki University
 
QGISプログラミング入門 2016Osaka編
QGISプログラミング入門 2016Osaka編QGISプログラミング入門 2016Osaka編
QGISプログラミング入門 2016Osaka編Kosuke Asahi
 
科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要Toshihiro Kamishima
 
REST API、gRPC、GraphQL 触ってみた【2023年12月開催勉強会資料】
REST API、gRPC、GraphQL 触ってみた【2023年12月開催勉強会資料】REST API、gRPC、GraphQL 触ってみた【2023年12月開催勉強会資料】
REST API、gRPC、GraphQL 触ってみた【2023年12月開催勉強会資料】洵貴 佐川
 
[DL輪読会]SOM-VAE: Interpretable Discrete Representation Learning on Time Series
[DL輪読会]SOM-VAE: Interpretable Discrete Representation Learning on Time Series[DL輪読会]SOM-VAE: Interpretable Discrete Representation Learning on Time Series
[DL輪読会]SOM-VAE: Interpretable Discrete Representation Learning on Time SeriesDeep Learning JP
 
ICML 2020 最適輸送まとめ
ICML 2020 最適輸送まとめICML 2020 最適輸送まとめ
ICML 2020 最適輸送まとめohken
 
【DL輪読会】WIRE: Wavelet Implicit Neural Representations
【DL輪読会】WIRE: Wavelet Implicit Neural Representations【DL輪読会】WIRE: Wavelet Implicit Neural Representations
【DL輪読会】WIRE: Wavelet Implicit Neural RepresentationsDeep Learning JP
 
[DL輪読会]Neural Radiance Flow for 4D View Synthesis and Video Processing (NeRF...
[DL輪読会]Neural Radiance Flow for 4D View Synthesis and Video  Processing (NeRF...[DL輪読会]Neural Radiance Flow for 4D View Synthesis and Video  Processing (NeRF...
[DL輪読会]Neural Radiance Flow for 4D View Synthesis and Video Processing (NeRF...Deep Learning JP
 
トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?hoxo_m
 
【DL輪読会】 "Learning to render novel views from wide-baseline stereo pairs." CVP...
【DL輪読会】 "Learning to render novel views from wide-baseline stereo pairs." CVP...【DL輪読会】 "Learning to render novel views from wide-baseline stereo pairs." CVP...
【DL輪読会】 "Learning to render novel views from wide-baseline stereo pairs." CVP...Deep Learning JP
 
Intel RealSense for ROSConJP20221121.pdf
Intel RealSense for ROSConJP20221121.pdfIntel RealSense for ROSConJP20221121.pdf
Intel RealSense for ROSConJP20221121.pdfTakumi14
 
QGIS講習会【印刷編】
QGIS講習会【印刷編】QGIS講習会【印刷編】
QGIS講習会【印刷編】Kosuke Asahi
 
QGISセミナー初級 ~QGISの使い方・基礎編~ Ver. 2.4版
QGISセミナー初級 ~QGISの使い方・基礎編~ Ver. 2.4版QGISセミナー初級 ~QGISの使い方・基礎編~ Ver. 2.4版
QGISセミナー初級 ~QGISの使い方・基礎編~ Ver. 2.4版FOSS4G_MEXT
 
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門Fixstars Corporation
 
[DL輪読会]画像を使ったSim2Realの現況
[DL輪読会]画像を使ったSim2Realの現況[DL輪読会]画像を使ったSim2Realの現況
[DL輪読会]画像を使ったSim2Realの現況Deep Learning JP
 
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#Yoshifumi Kawai
 

What's hot (20)

SSHの便利な使い方〜マイナーな小技編〜
SSHの便利な使い方〜マイナーな小技編〜SSHの便利な使い方〜マイナーな小技編〜
SSHの便利な使い方〜マイナーな小技編〜
 
[DL輪読会]Transframer: Arbitrary Frame Prediction with Generative Models
[DL輪読会]Transframer: Arbitrary Frame Prediction with Generative Models[DL輪読会]Transframer: Arbitrary Frame Prediction with Generative Models
[DL輪読会]Transframer: Arbitrary Frame Prediction with Generative Models
 
[DL輪読会]Pyramid Stereo Matching Network
[DL輪読会]Pyramid Stereo Matching Network[DL輪読会]Pyramid Stereo Matching Network
[DL輪読会]Pyramid Stereo Matching Network
 
機械学習とコンピュータビジョン入門
機械学習とコンピュータビジョン入門機械学習とコンピュータビジョン入門
機械学習とコンピュータビジョン入門
 
QGISプログラミング入門 2016Osaka編
QGISプログラミング入門 2016Osaka編QGISプログラミング入門 2016Osaka編
QGISプログラミング入門 2016Osaka編
 
科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要
 
REST API、gRPC、GraphQL 触ってみた【2023年12月開催勉強会資料】
REST API、gRPC、GraphQL 触ってみた【2023年12月開催勉強会資料】REST API、gRPC、GraphQL 触ってみた【2023年12月開催勉強会資料】
REST API、gRPC、GraphQL 触ってみた【2023年12月開催勉強会資料】
 
[DL輪読会]SOM-VAE: Interpretable Discrete Representation Learning on Time Series
[DL輪読会]SOM-VAE: Interpretable Discrete Representation Learning on Time Series[DL輪読会]SOM-VAE: Interpretable Discrete Representation Learning on Time Series
[DL輪読会]SOM-VAE: Interpretable Discrete Representation Learning on Time Series
 
ICML 2020 最適輸送まとめ
ICML 2020 最適輸送まとめICML 2020 最適輸送まとめ
ICML 2020 最適輸送まとめ
 
【DL輪読会】WIRE: Wavelet Implicit Neural Representations
【DL輪読会】WIRE: Wavelet Implicit Neural Representations【DL輪読会】WIRE: Wavelet Implicit Neural Representations
【DL輪読会】WIRE: Wavelet Implicit Neural Representations
 
[DL輪読会]Neural Radiance Flow for 4D View Synthesis and Video Processing (NeRF...
[DL輪読会]Neural Radiance Flow for 4D View Synthesis and Video  Processing (NeRF...[DL輪読会]Neural Radiance Flow for 4D View Synthesis and Video  Processing (NeRF...
[DL輪読会]Neural Radiance Flow for 4D View Synthesis and Video Processing (NeRF...
 
トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?
 
【DL輪読会】 "Learning to render novel views from wide-baseline stereo pairs." CVP...
【DL輪読会】 "Learning to render novel views from wide-baseline stereo pairs." CVP...【DL輪読会】 "Learning to render novel views from wide-baseline stereo pairs." CVP...
【DL輪読会】 "Learning to render novel views from wide-baseline stereo pairs." CVP...
 
Intel RealSense for ROSConJP20221121.pdf
Intel RealSense for ROSConJP20221121.pdfIntel RealSense for ROSConJP20221121.pdf
Intel RealSense for ROSConJP20221121.pdf
 
QGIS講習会【印刷編】
QGIS講習会【印刷編】QGIS講習会【印刷編】
QGIS講習会【印刷編】
 
QGISセミナー初級 ~QGISの使い方・基礎編~ Ver. 2.4版
QGISセミナー初級 ~QGISの使い方・基礎編~ Ver. 2.4版QGISセミナー初級 ~QGISの使い方・基礎編~ Ver. 2.4版
QGISセミナー初級 ~QGISの使い方・基礎編~ Ver. 2.4版
 
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門
 
QGIS初級編
QGIS初級編QGIS初級編
QGIS初級編
 
[DL輪読会]画像を使ったSim2Realの現況
[DL輪読会]画像を使ったSim2Realの現況[DL輪読会]画像を使ったSim2Realの現況
[DL輪読会]画像を使ったSim2Realの現況
 
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#
 

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
 
QGISセミナー中級編(V2.4)
QGISセミナー中級編(V2.4)QGISセミナー中級編(V2.4)
QGISセミナー中級編(V2.4)IWASAKI NOBUSUKE
 
[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
 

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版
 
QGISセミナー中級編(V2.4)
QGISセミナー中級編(V2.4)QGISセミナー中級編(V2.4)
QGISセミナー中級編(V2.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 - - -
 

More from Kosuke Asahi

地理空間情報 x ビジネス x オープンソースGIS 勉強会!
地理空間情報 x ビジネス x オープンソースGIS 勉強会!地理空間情報 x ビジネス x オープンソースGIS 勉強会!
地理空間情報 x ビジネス x オープンソースGIS 勉強会!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 (9)

地理空間情報 x ビジネス x オープンソースGIS 勉強会!
地理空間情報 x ビジネス x オープンソースGIS 勉強会!地理空間情報 x ビジネス x オープンソースGIS 勉強会!
地理空間情報 x ビジネス x オープンソースGIS 勉強会!
 
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