Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
ArcGISの便利な印刷周りの機能に、QGIS APIを駆使して挑んでみたお話     北海道地図株式会社       朝日 孝輔       長船 翔太
disってるわけではありません       2
QGISのAPIとかいじってます●   趣味です●   会社黙認    シーッ! d( ゚ε゚;)                    3
QGISに詳しいの?●   編集ツールとして使ってます●   GRASS?何それおいしいの?●   幾何演算とかするなら他のツール使っちゃってるかも●   APIいじってるけど、仕事でAPI使ったことは実は無いの                 4
そうは言っても業務で使ってるよ●   紙地図をスキャンしてのジオリファレンス                5
そうは言っても業務で使ってるよ●   ベクトルデータの編集●   小規模なものから大規模まで●   例えば    ● 数百万ポリゴン        PostgreSQL/PostGISで管理   各種地図                    ...
会社では他のGISも使われてます       7
会社では他のGISも使われてます       8
ある日 ArcGIS10 チョー便利 帳票印刷簡単に 作れますよ QGISで 出来ないでしょうw 9
ある日お、disってんのか??よろしいならば戦争検証だ               10
お題11
お題 広域図         学校校区エリアを         包含する地図    学校校区エリア分     自動で作るべし 属性表示             凡例              スケール・ページ数・作成者タイトルなど       ...
お題 使用するデータ●背景地図(弊社GISMAPシリーズ)●国土数値情報ダウンロードサービス ・小学校区データ ・公共施設データ●数値地図5mメッシュ DEM             13
ArcGIS10 便利なレイアウト機能●   ArcGIS10より標準搭載された「データドリブン」機能を活かす                               ArcGISブログ~図郭ごとにマップを出力する方法           ...
ArcGIS 作業の流れ1●   マップデータの構築                  2hぐらい    →データレイヤの追加、色スタイル設定、ラベル発生、フィルタ処     理…etc      データ読込初期状態        作り込み後の...
ArcGIS 作業の流れ2                               2hぐらい●   帳票のレイアウトの構築    →タイトル、凡例、広域図、属性情報、方位、ページ数…etc      既存のテンプレート          ...
ArcGIS 作業の流れ3●   校区ポリゴン毎にドリブン化設定             0.5hぐらい       校区1          校区2         校区3                    17
ArcGIS 作業の流れ4                                                GUI操作上で0.5hぐらい●   PDF連続出力              GUIでも出力可能だけど、ArcPy(Pyt...
ArcGIS 作業完了●   作業時間トータル6h●   マップデータの表示設定と帳票レイアウトの作り込みには多少のコ    ツがいるが、基本的にはプログラム不要の”えいやー”感覚で作れる。                   19
QGIS●   プリントコンポーザーという機能がある●   各種部品をGUIで配置出来る●   特定箇所を特定    レイアウトで出せる●   連続で出力するような    機能はない                20
QGIS●   PythonコンソールからQGIS APIを使えるよ●   QGIS API(Python)使用方法    ● Pythonコンソールから    ●   Pythonでプラグインを作っちゃう    ●   カスタムアプリケーショ...
QGIS●   選択されているベクトルレイヤーの図形の属性(0)を表示     l = qgis.utils.iface.activeLayer()     provider = l.dataProvider()     feat = QgsF...
QGIS●   メニューバーを全部消してしまう     iface = qgis.utils.iface     childrenList = iface.mainWindow().children()     for item in chil...
QGIS●   今回使ったのは ”Script Runner” プラグイン●   マクロのイメージ●   “Add Script”    → “Run Script”●   プラグインを作るより    少しだけ気がラク             ...
QGIS作1っ日てでみ出ま来しるたと こ ま で      25
QGIS●   データ取り込み、表現設定は先に行っておく●   200行くらいのスクリプトです    ●   選択されているレイヤーの図形でループ        –   図形の外接矩形を取得            ●   周辺図用画面キャプチャ...
QGIS                                                                                抜粋です●   外接矩形に合わせて画面を移動     self.canvas...
QGIS                                                                              抜粋です●   文字描画     pen = QPen(Qt.black)   ...
QGIS vs ArcGIS●   注記、記号 orz                 29
QGIS vs ArcGIS●   広域図 orz                    30
QGIS vs ArcGIS●   スケール orz●   ラスタ凡例 orz                     31
ここまでの結論●   商用GISは気が効いてるよね●   でも、少し手間かければ似たようなことが出来るよ    #ということにしておこう●   もう1レベル上のクラスをきちんと使えれば・・・●   情報が少ないので、誰かが公開しててくれれば・・...
そこのあなた●   私もFOSS4G 2010 Tokyoで始めて触りました●   PyQGISの世界へようこそ    まだまだやってる人少ないです●   便利なプラグインを作ろう●   情報を公開しよう●   今年もFOSS4G 2012 T...
さらに●   QGISはC++で書かれています●   開発しちゃいなよ●   特に日本語周りはみなさん苦労してるので、    解決しちゃって    #でもgdal/ogrの問題かな                34
QGISの名前は        Developer        Meetingの場所   35
こんなのだってありえる     36
ご清聴ありがとうございました   37
Prochain SlideShare
Chargement dans…5
×

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

8 557 vues

Publié le

foss4g 2012 hokkaido
どちらが良いとか悪いとかの話ではなく、あくまでやってみたというお話です。
ラスタ凡例出来るよ、とか勉強不足で突っ込まれたところもありますが、内容的にはそのまま公開します。
公開にあたり1枚だけ外しているスライドがありますが、気にせずに。

  • Soyez le premier à commenter

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

  1. 1. ArcGISの便利な印刷周りの機能に、QGIS APIを駆使して挑んでみたお話 北海道地図株式会社 朝日 孝輔 長船 翔太
  2. 2. disってるわけではありません 2
  3. 3. QGISのAPIとかいじってます● 趣味です● 会社黙認 シーッ! d( ゚ε゚;) 3
  4. 4. QGISに詳しいの?● 編集ツールとして使ってます● GRASS?何それおいしいの?● 幾何演算とかするなら他のツール使っちゃってるかも● APIいじってるけど、仕事でAPI使ったことは実は無いの 4
  5. 5. そうは言っても業務で使ってるよ● 紙地図をスキャンしてのジオリファレンス 5
  6. 6. そうは言っても業務で使ってるよ● ベクトルデータの編集● 小規模なものから大規模まで● 例えば ● 数百万ポリゴン PostgreSQL/PostGISで管理 各種地図 データ ● 複数人で編集 6
  7. 7. 会社では他のGISも使われてます 7
  8. 8. 会社では他のGISも使われてます 8
  9. 9. ある日 ArcGIS10 チョー便利 帳票印刷簡単に 作れますよ QGISで 出来ないでしょうw 9
  10. 10. ある日お、disってんのか??よろしいならば戦争検証だ 10
  11. 11. お題11
  12. 12. お題 広域図 学校校区エリアを 包含する地図 学校校区エリア分 自動で作るべし 属性表示 凡例 スケール・ページ数・作成者タイトルなど 12
  13. 13. お題 使用するデータ●背景地図(弊社GISMAPシリーズ)●国土数値情報ダウンロードサービス ・小学校区データ ・公共施設データ●数値地図5mメッシュ DEM 13
  14. 14. ArcGIS10 便利なレイアウト機能● ArcGIS10より標準搭載された「データドリブン」機能を活かす ArcGISブログ~図郭ごとにマップを出力する方法 http://blog.esrij.com/arcgisblog/2011/03/post-5653.html 14
  15. 15. ArcGIS 作業の流れ1● マップデータの構築 2hぐらい →データレイヤの追加、色スタイル設定、ラベル発生、フィルタ処  理…etc データ読込初期状態 作り込み後のマップイメージ 15
  16. 16. ArcGIS 作業の流れ2 2hぐらい● 帳票のレイアウトの構築 →タイトル、凡例、広域図、属性情報、方位、ページ数…etc 既存のテンプレート 作り込みテンプレート 16
  17. 17. ArcGIS 作業の流れ3● 校区ポリゴン毎にドリブン化設定 0.5hぐらい    校区1        校区2       校区3 17
  18. 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. 19. ArcGIS 作業完了● 作業時間トータル6h● マップデータの表示設定と帳票レイアウトの作り込みには多少のコ ツがいるが、基本的にはプログラム不要の”えいやー”感覚で作れる。 19
  20. 20. QGIS● プリントコンポーザーという機能がある● 各種部品をGUIで配置出来る● 特定箇所を特定 レイアウトで出せる● 連続で出力するような 機能はない 20
  21. 21. QGIS● PythonコンソールからQGIS APIを使えるよ● QGIS API(Python)使用方法 ● Pythonコンソールから ● Pythonでプラグインを作っちゃう ● カスタムアプリケーションにQGIS APIを埋め込む 21
  22. 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. 23. QGIS● メニューバーを全部消してしまう iface = qgis.utils.iface childrenList = iface.mainWindow().children() for item in childrenList: if isinstance(item, PyQt4.QtGui.QToolBar): item.hide() 23
  24. 24. QGIS● 今回使ったのは ”Script Runner” プラグイン● マクロのイメージ● “Add Script” → “Run Script”● プラグインを作るより 少しだけ気がラク 24
  25. 25. QGIS作1っ日てでみ出ま来しるたと こ ま で 25
  26. 26. QGIS● データ取り込み、表現設定は先に行っておく● 200行くらいのスクリプトです ● 選択されているレイヤーの図形でループ – 図形の外接矩形を取得 ● 周辺図用画面キャプチャ ● 縮尺を変えて、広域図用画面キャプチャ – 図形の属性取得して描画 – その他整飾を描画 – PDF書き出し 26
  27. 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. 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(urC: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. 29. QGIS vs ArcGIS● 注記、記号 orz 29
  30. 30. QGIS vs ArcGIS● 広域図 orz 30
  31. 31. QGIS vs ArcGIS● スケール orz● ラスタ凡例 orz 31
  32. 32. ここまでの結論● 商用GISは気が効いてるよね● でも、少し手間かければ似たようなことが出来るよ #ということにしておこう● もう1レベル上のクラスをきちんと使えれば・・・● 情報が少ないので、誰かが公開しててくれれば・・・ 32
  33. 33. そこのあなた● 私もFOSS4G 2010 Tokyoで始めて触りました● PyQGISの世界へようこそ まだまだやってる人少ないです● 便利なプラグインを作ろう● 情報を公開しよう● 今年もFOSS4G 2012 Tokyoではハンズオンあるかな? 33
  34. 34. さらに● QGISはC++で書かれています● 開発しちゃいなよ● 特に日本語周りはみなさん苦労してるので、 解決しちゃって #でもgdal/ogrの問題かな 34
  35. 35. QGISの名前は Developer Meetingの場所 35
  36. 36. こんなのだってありえる 36
  37. 37. ご清聴ありがとうございました 37

×