Archive for the Tag '抽出'

条件を指定して点を抽出

ArgGISでは、様々な条件を指定してデータを抽出することが可能です。

例えば、距離というフィールドに起点からの距離が入っているとして、属性検索を以下のようにする。

mod (”距離”,500) = 0

距離を500で割った余りが0の物を選択するといった意味で、500mごとの点が抽出されます。

属性検索は、単純な値を抽出するだけではなく特殊な検索もできますので、式さえ組めればデータの抽出・整理が非常に楽になります。

AutoCADで作った横断図等の座標一覧表をつくる

AutoCADの持っているカスタマイズ機能を駆使して、LISPやVBAなどによるマクロを作ってもよいのですが、AutoCADのLT版でできる、手軽で手っ取り早い方法を紹介します。 
手順を書くと長いですが、操作自体はクリックしまくるだけなので簡単です。

■AutoCADでの操作

1.各断面をポリラインにして、繋げる

2.要に応じて、DLを分かりやすい高さに移動させる
  (やらなくても可。やった方がデータを見やすくなる)

3.河道の中心線に目安となるxlineを引く
  (やらなくても可。やった方がデータを見やすくなる)

4.logfilemodeを1にする
  (LOGFILEPATHに、全ての操作を記録したファイルが作成されます)

5.●SPほにゃららと打ち込む
  (ログファイルを見やすくするため)

6.UCS原点をDLとxlineが交差する点にセットする
  (UCSツールバーを表示させて、原点ボタンをクリックするだけ)

7.横断線を選んでlistを表示

8.(5~7)を断面の数だけ繰り返す
  その際、毎度毎度●SPほにゃららを打ち込むのは面倒なので、
   十時キーの上を2回押す>BSキーを押す>新しい数字を入力
  とすると、楽です。

9.全ての断面のlist取得が終わったら、logfilemodeを0に戻す

■出来上がったテキストファイルの操作

1.秀丸などの「正規表現」が使えるソフトでlogファイルを開く

2.置換で、以下の文字列を消す
  (^\n|^(?!コマンド: ●.*)(?!.*点の位置.*).*$)

3.置換で、以下の文字列を消す
  (コマンド: |X=|Y=|  Z=.*|          点の位置  |^ *|)

4.置換で、以下の文字列を,に置換する
  ( +)

接しているメッシュの属性値を取得する

『接続対象となるメッシュ』に接するメッシュを作成する手順

  1. 『接続対象となるメッシュ』のバッファーを作成
    50mメッシュだとすれば50mの角丸バッファを作る
  2. 空間検索で、作成したバッファに含まれるメッシュを選択対象に追加する
    (「重なる」ではなく「含まれる」にするのは、角が接しているだけのメッシュを排除するため)
  3. 空間検索で、『接続対象となるメッシュ』と重なるメッシュを選択対象から除外する
  4. データをエクスポートする

上記1~4でファイルを作成したら、テーブルを空間結合して、最小値を取得する
最小値を取得するのは、複数のメッシュに接している場合、1つの値だけが欲しいから。

最も近いポイントの属性値を取得する

空間的位置関係に基づくテーブル結合をおこない、『各ポリゴンに、そのポリゴン境界内に位置するラインの全ての属性を与え、距離フィールドにその距離を格納します』を選べばよいだけ。

応用として、以下のような使い方があるかと思います。

  • 調査ポイントから河川センターまでの距離を一覧表示
  • 鳥類の確認地点から、最寄りの樹木までの距離(および樹種)を整理
  • 現場から最も近い駅の検索

直角座標系で作ったメッシュの端点の緯度経度を求める

ちょっと無理矢理ですが、以下の方法で調べることができます。 

  1. excelで、XYを記載したcsvファイルをつくる
  2. csvファイルを読み込んでメッシュの端点を作る
  3. UTM座標系(JGD2000)に変換
    ArcToolbox>Data Management Tools>プロジェクトとトランスフォーム>フィーチャ>投影変換
  4. XとYの座標値をフィールド演算をおこない、テーブルに入力する。
    (下記参照。ヘルプに載っています)
    手軽にXY座標が欲しい場合は
    ArcToolbox>Data Management Tools>フィーチャ>XY座標の追加
  5. 出来上がったpointのシェイプファイルをちょっとずらし、メッシュポリゴン内に右下と右上のpointデータが含まれるようにする。
  6. テーブル結合(空間結合)で、メッシュにXY座標を追加する。

■ポイントのX座標
Dim dblX As Double
Dim pPoint As IPoint
Set pPoint = [Shape]
dblX = pPoint.X

→ dblX

■ポイントのY座標
Dim dblY As Double
Dim pPoint As IPoint
Set pPoint = [Shape]
dblY = pPoint.Y

→ dblY