GISソフト「SIS」活用講座

GISソフト「SIS」8.0ならできる便利機能|Part2 Pythonの利用例紹介

今回はPythonを使用した簡単なカスタマイズ例をご紹介します。

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

インフォマティクスでは、国内で約36,000のお客様に利用されているGIS(地理情報システム)製品SIS(エスアイエス)をご用意しております。
SISの最新カタログをダウンロードする >>

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 Desktopシリーズ 製品情報
https://www.informatix.co.jp/sis/

GISソフトをお探しなら

GISソフトをお探しの方、現在お使いのGISに課題を感じている方は、ぜひGIS(地理情報システム)製品SISをご利用ください。無償版もご用意しています。
SISの資料をダウンロードする >>

無償版SISを試してみる >>

GISやAI機械学習を使った業務システムの構築に関するご相談を承っています。お気軽にお問い合わせください。

相談する(無料)

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

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

  • この記事を書いた人
  • 最新記事
アバター画像

空間情報クラブ編集部

空間情報クラブはインフォマティクスが運営するWebメディアです。GISソフト「SIS」の便利機能を紹介するSIS活用講座や用語解説をはじめ、地図、AI機械学習、XR、数学をテーマにしたコラムを多数掲載。楽しみながらより深く学んでいただけるお役立ち情報を発信しています。

あわせて読みたい

-GISソフト「SIS」活用講座
-, ,