web-dev-qa-db-ja.com

プログラマー以外の構成可能なスクリプトを設計する方法

テーブルをバッチ編集するときにpythonスクリプトを使用して、ユーザーが アドレスを解析 できるようにします。

スクリプトを使用すると、番地または番地をフィールドに返すかどうかをユーザーが選択できます(コメントアウトして該当なしReturnType行)。

残念ながら、従来のユーザーインターフェイスは、使用する Field Calculator tool では使用できません。ユーザーがスクリプトを構成できることを知っている唯一の方法は、コードを手動で調整することです。

_def addressParser(inString):

    ###Note to users: 
    ###Comment-out the ReturnType option that does not apply. 
    returnType = "House Number"
    #returnType = "Street Name"

    splitString = inString.split(' ',1)
    houseNumber = splitString[0]
    streetName = splitString[1]

    if returnType == "House Number":
        if houseNumber.isdigit():
            return houseNumber
        else:
            return
    if returnType == "Street Name":
        return streetName
    else:
        return
__esri_field_calculator_splitter__
addressParser(!ADDRESS!)
_

初心者プログラマーにとって、スクリプトは十分に単純に思えます。

ただし、スクリプトのリリースノートを作成すると、非常に単純なものに対しては、非常に複雑に聞こえます。

ステップ3は、私が最も心配しているステップです。

リリースノート:

住所フィールドの解析に使用できるフィールド計算ツール(python)を作成しました。このツールは、Excelで Text to Columnsツール を使用して住所を解析する方法と同様に機能します。

たとえば、123 Main St Eは、家番号または通りの名前を返すように解析できます。

  • 123
  • Main St E

ツールは、スペースの最初のインスタンス( ‘‘)でテキストを分割することによって機能します。

手順:

  1. [ロード]ボタンをクリックして、フィールド計算機にツールをロードします。
  2. フィールド計算モードをVB ScriptからPythonに切り替えます。
  3. 適切な行の前にある番号記号(#)を削除または追加して、ツールがフィールドに返す住所(家の番号または通りの名前)の部分を指定します。

    • ヒント:シャープ記号(#)は、Pythonでは「コメントアウト/キャンセル」記号です。
    • 例:家の番号を返すには、コードをそのままにします。

      _returnType = "House Number"
      #returnType = "Street Name"
      _

      または、通りの名前を返すには、番号記号(#)を通りの名前の行から家の番号の行に切り替えます。

      _#returnType = "House Number" 
      returnType = "Street Name"
      _
  4. 解析されていないアドレスの送信元のフィールドを指定してください:

    • 例:変更addressParser( !YourUnparsedAddressFieldHere!)
    • addressParser( !ADDRESS!)
  5. [OK]をクリックしてツールを実行します。

この構成可能なスクリプトを、プログラマー以外のユーザーにとってより使いやすいものにするにはどうすればよいですか?

  • 構成が簡単になるようにスクリプトを変更しますか?
  • 指示を変更しますか?
1
Wilson

(Gis.seでお答えしたいと思いますが、ここではお答えしますが、拡張する必要のあるエンドユーザー側に関して不合理ではありません)

Arcgisを作成するPython Toolboxes、またはQGISを使用している場合は-を参照することをお勧めします python scriptsとして新しい処理アルゴリズムを記述します。スクリプトのパラメーターは、コード内から生成できるGUIインターフェイスから発行することもできます。これにより、値のリストやチェックボックスなどを使用できるようになりますが、これらのチェックボックスを使用すると、コードに変数を配置するのではなく、スクリプトに変数を渡すことができます。

スクリプトの作成方法に問題がある場合は、この関連ドキュメントを読んで、このリードに従って件名を掘り下げて、ソフトウェアで試してから、もう一度投稿してください(具体的にはGIS.SEがArcpy関連であるため)。件名。

このSE領域に適合するより一般的な答えについては、重要なことは、外部ツールまたは組み込みツールを使用してGUI(グラフィカルユーザーインターフェイス)を作成する方法を見つける必要があることです、ユーザーが選択した内容に応じて、コード内のパラメーターを渡します。

スクリプトには、たとえば次のような複数のパラメータがあります。

def addressParser(inString,  returnType):

その後、 "if .... then:"タイプの条件チェックを使用して、コードを実行する前にユーザーがどの値を選択したかを確認できます。

1
gisnside