SIS活用講座 第16回 SIS 8.0ならできる便利機能 Part2 Pythonの利用例紹介

標準

2018年1月25日


はじめに

今回は、Pythonを使用した簡単なカスタマイズ例をご紹介します。以前の講座(第3回)でもPythonを使用したカスタマイズ例を簡単にご紹介しましたが、今回はもう少し掘り下げてご紹介します。

Pythonとは?

Pythonはプログラミング言語で、テキストエディタでもプログラムを作成することができ、他のプログラミング言語と比較して、文法がシンプルでわかりやすいと言われています。プログラミング言語と聞くと、それだけで難しそうだと感じる方も多いと思いますが、SIS Mapシリーズの基本機能でできないことを、少しコードを記述するだけで実行できる場合があり便利な機能です。

Pythonカスタマイズプログラムの実行方法

今回は、「Python in SIS」という、SIS内部に組み込まれたPythonの機能を使用するカスタマイズ手法をご紹介します。以下の2通りの方法があります。

1. プログラムコントロールバーに直接コードを入力する *1
2.「*.py」形式のスクリプトファイルを読み込み、定義された関数を実行する *1

いずれの場合も、「表示」タブの「表示/プログラム」をチェックして(図1)、プログラムコントロールバーを表示します。(図2)そして、プログラムコントロールバーにコードを記述します。(図2の赤い四角部分) *2
20180125_1

図1:「表示」タブの設定

20180125_2

図2:「プログラム」コントロールバー

*1 SIS 8.0 プログラミングマニュアル P.36参照
*2 SIS 8.0 プログラミングマニュアル P.35参照

では、Pythonを使用したサンプルで、実際の動作を見てみましょう。

選択アイテムの頂点座標を取得する

「1.」の方法で、選択した1つのアイテムの頂点座標を取得して、プログラムコントロールバーに表示します。

サンプル
コード
20180125_3
説明 OpenSelで最初の選択アイテムをカレントにします。
GetNumGeomで取得したジオメトリコンポーネントの数分ループして、GetGeomNumPtで取得した頂点数分GetGeomPtで頂点座標を取得します。
コードを「;」で区切ることで、1行で記述することができます。
実行方法 アイテムを1つ選択します。
プログラムコントロールバーにコードを入力し、「Enter」キーを押して実行します。
実行結果 20180125_4

すべてのオーバーレイのブラシの透過度を「0」にする

デフォルトのブラシには透過度が設定されています。その設定を1つ1つコマンドで透過度「0」( 不透過)に変更するのは面倒です。「2.」の方法で、SISサポートページで公開されているプログラム「OverlayBrushAlpha.py」を使用すれば、すべてのオーバーレイのブラシの透過度を簡単に「0」に変更することができます。

サンプル
コード
20180125_5
説明 オーバーレイのブラシ「_brush$」プロパティの値を取得します。
RGBAのAの値を「0」(不透過)に変更して、オーバーレイのブラシプロパティに設定します。
実行方法
  1. 「OverlayBrushAlpha.py」のあるフォルダを「PYTHONPATH* フォルダ」に設定して、SISを再起動します。*3
  2. プログラムコントロールバーのコマンドラインツールに以下を入力し、「Enter」キーを押します。
    import OverlayBrushAlpha
  3. 次に以下を入力し、「Enter」キーを押します。
    OverlayBrushAlpha.Alpha0()
実行結果 20180125_6

ラインアイテムを複数のポリゴンアイテムで切断する

行政界と重なる道路中心線のラインアイテムを行政界のポリゴンアイテムで切断して抽出する作業には、「外側削除」コマンドを使用しますが、抽出するアイテムを選択しながら何度も操作しなければなりません。ここでも「2.」の方法で、SISサポートページで公開されているプログラム「SplitLinebyPolygon.py」を使用すれば、ラインアイテムとポリゴンアイテムのあるオーバーレイを指定して、一括で抽出することができます。

サンプル
コード
20180125_7
説明 ポリゴンアイテムにジオメトリが交差するラインアイテムを抽出して、「編集」タブの「ジオメトリ/ 外側削除」コマンドと同等の処理を、ポリゴンアイテム数分繰り返します。
実行方法 例えば、以下のように「Line」オーバーレイにラインアイテムが、「Polygon」オーバーレイにポリゴンアイテムがあるとします。20180125_8この場合、SplitLine(polygon_overlay_pos,line_overlay_pos)で指定する「polygon_overlay_pos」は「1」、「line_overlay_pos」は「0」になります。

  1. 「SplitLinebyPolygon.py」のあるフォルダを「PYTHONPATH* フォルダ」に設定して、SISを再起動します。*3
  2. プログラムコントロールバーのコマンドラインツールに以下を入力し、「Enter」キーを押します。
    import SplitLinebyPolygon
  3. 次に以下を入力し、「Enter」キーを押します。
    SplitLinebyPolygon.SplitLine(1,0)
実行結果 20180125_9

*3 SIS 8.0 プログラミングマニュアル P.37 参照

おわりに

いかがでしたでしょうか?今回ご紹介したサンプルも含め、Pythonのサンプルプログラム集を、SISサポートページのFAQ で公開しています。SISサポートページにログインしていただき、FAQ のID「1075」をご覧ください。

FAQで公開しているサンプルプログラムは、今後も追加していく予定です。ぜひ、業務にご活用ください。

関連記事
SIS活用講座 第17回 SIS 8.0ならできる便利機能(3)ツール・サンプルプログラム
SIS活用講座 第15回 SIS 8.0ならできる便利機能(1)プロセス機能で解決できる事例紹介
SIS活用講座 第14回 フリービューアMap ExpressからはじめるSIS(6)台風を分析してみよう!
SIS活用講座 第13回 フリービューアMap ExpressからはじめるSIS(5)GPSデータとフリーデータで分析
SIS活用講座 第12回 フリービューアMap ExpressからはじめるSIS(4)Exifを利用
SIS活用講座 第11回 フリービューアMap ExpressからはじめるSIS(3)分析機能
SIS活用講座 第10回 フリービューアMap ExpressからはじめるSIS(2)主題図
SIS活用講座 第9回 フリービューアMap ExpressからはじめるSIS(1)データ閲覧・印刷機能のご紹介
SIS活用講座 第8回 SIS8.0ご紹介(6)データ管理に役立つ新機能
SIS活用講座 第7回 SIS8.0ご紹介(5)3D機能
SIS活用講座 第6回 SIS8.0ご紹介(4)プロセス主題図、テキスト機能ほか
SIS活用講座 第5回 SIS8.0ご紹介(3)分類主題図、主題図のフィルタ機能ほか
SIS活用講座 第4回 SIS8.0ご紹介(2)プロセス、空間関数ほか
SIS活用講座 第3回 SIS8.0ご紹介(1)インターフェース、主題図、Pythonほか
SIS活用講座 第2回 SIS 7.1の新機能(2)主題図
SIS活用講座 第1回 SIS 7.1の新機能(1)インターフェース


※この記事は、GIS NEXT第62号に掲載された記事を編集したものです。

地図データ出典:
国土地理院 基盤地図情報