goo blog サービス終了のお知らせ 

ArcGISのデータ作成サポートページ

ArcGISデータ作成に関する情報共有のページです

NOAA CoastlineデータをEnpre向け海岸線データ変換VBA

2024-01-25 16:41:45 | 日記
入力データは 「lat, lon, lineid」のセット

'==============================
Attribute VB_Name = "Module1"
Sub NOAAshoreline_read() ' NOAA shoreline -> Enpre Shoreline

Dim lat(1000000) As Double
Dim lon(1000000) As Double
Dim lineid(1000000) As Long
Dim lastrow As Long
Dim lineid_old As Long
Dim lineid_end As Long
Dim i As Long
Dim ii As Long
i = 1
lineid_old = 1
ii = 0

lastrow = Cells(Rows.Count, 1).End(xlUp).Row
lineid_end = Cells(lastrow, 3).Value
Cells(1, 8).Value = lineid_end
Rows(2).Insert '項目とデータの間に空行
[a2].Activate

For i = 1 To lastrow + lineid_end - 1
'Do While Not IsEmpty(ActiveCell)
' i = i + 1
ii = ii + 1 '海岸線ポイントデータのカウント
lat(i) = ActiveCell.Offset(i, 0).Value
lon(i) = ActiveCell.Offset(i, 1).Value
lineid(i) = ActiveCell.Offset(i, 2).Value

If (lineid(i) = lineid_old) Then
ActiveCell.Offset(i, 5).Value = i
ActiveCell.Offset(i, 7).Value = lat(i)
ActiveCell.Offset(i, 8).Value = lon(i)
ActiveCell.Offset(i, 9).Value = lineid(i)
Else
Rows(i + 2).Insert
Cells(i + 1, 8).Activate
Selection.End(xlUp).Select
ActiveCell.Offset(-1, 0).Value = ii - 1
Selection.End(xlDown).Select
[a2].Activate
ii = 0
End If

lineid_old = lineid(i)

Next i
'Loop

End Sub

ポイントデータ(頂点)を間引きする Generalize

2024-01-25 16:40:14 | 日記
データの間引きを規定の単位で間引きできる。
詳細データを簡素化する場合に適用可能

ラインデータの頂点をポイントデータに変換

2024-01-25 16:38:12 | 日記
フィーチャーの頂点→ポイント
Feature Vertices To Point

ラインデータをポイントに変換する
CENSIS向け海岸線作成などに活用できる
入力フィーチャの指定された頂点または位置から生成されるポイントを含むフィーチャクラスを作成します。

実験データを網羅した堤防からの影響距離Pythonコード(2020.12.24現在)

2020-12-24 18:09:20 | 日記

Pre-Logic Script Code:    ! if文は半角1文字空け、return文は半角2文字空ける

def Reclass(oflow,wallh):

 if (oflow < 1.5 and oflow >= 0.5 and wallh < 7.5 and wallh >= 0.0):
  return 10.0
 elif (oflow < 2.5 and oflow >= 1.5 and wallh < 7.5 and wallh >= 0.0):
  return 25.0
 elif (oflow < 3.5 and oflow >= 2.5 and wallh < 7.5 and wallh >= 0.0):
  return 30.0
 elif (oflow < 4.5 and oflow >= 3.5 and wallh < 7.5 and wallh >= 0.0):
  return 35.0
 elif (oflow < 5.5 and oflow >= 4.5 and wallh < 7.5 and wallh >= 0.0):
  return 55.0

 elif (oflow < 1.5 and oflow >= 0.5 and wallh < 12.5 and wallh >= 7.5):
  return 88.0
 elif (oflow < 2.5 and oflow >= 1.5 and wallh < 12.5 and wallh >= 7.5):
  return 70.0
 elif (oflow < 3.5 and oflow >= 2.5 and wallh < 12.5 and wallh >= 7.5):
  return 125.0
 elif (oflow < 4.5 and oflow >= 3.5 and wallh < 12.5 and wallh >= 7.5):
  return 240.0
 elif (oflow < 5.5 and oflow >= 4.5 and wallh < 12.5 and wallh >= 7.5):
  return 270.0

 elif (oflow < 1.5 and oflow >= 0.5 and wallh < 17.5 and wallh >= 12.5):
  return 20.0
 elif (oflow < 2.5 and oflow >= 1.5 and wallh < 17.5 and wallh >= 12.5):
  return 55.0
 elif (oflow < 3.5 and oflow >= 2.5 and wallh < 17.5 and wallh >= 12.5):
  return 270.0
 elif (oflow < 4.5 and oflow >= 3.5 and wallh < 17.5 and wallh >= 12.5):
  return 245.0
 elif (oflow < 5.5 and oflow >= 4.5 and wallh < 17.5 and wallh >= 12.5):
  return 270.0

 elif (oflow < 1.5 and oflow >= 0.5 and wallh < 20.0 and wallh >= 17.5):
  return 15.0
 elif (oflow < 2.5 and oflow >= 1.5 and wallh < 20.0 and wallh >= 17.5):
  return 50.0
 elif (oflow < 3.5 and oflow >= 2.5 and wallh < 20.0 and wallh >= 17.5):
  return 270.0
 elif (oflow < 4.5 and oflow >= 3.5 and wallh < 20.0 and wallh >= 17.5):
  return 270.0
 elif (oflow < 5.5 and oflow >= 4.5 and wallh < 20.0 and wallh >= 17.5):
  return 270.0

 else:
  return -99.9


=====破壊率の関数 ex hakairitu = =====
Reclass( !oflow! , !wallh! )


ジオリファレンス~ポリライン作成~等間隔のポイント作成~緯度・経度の追加の手順

2020-12-17 10:34:58 | 日記

1. ジオリファレンス(画像のGIS化)

1.1 ジオリファレンスの準備

  • ジオリファレンスを行う画像ファイルを準備する
  • ArcMap上にジオリファレンスの参考とするGISデータ(ベースマップ)を準備する
  • メニューバー「カスタマイズ(c)」→「ツールバー(T)」→「ジオリファレンス」の順にクリックし、ジオリファレンスのツールバーを表示させる
  • 「データの追加」アイコンを開いてデータの追加ウィンドウを開き、ジオリファレンスを行う画像のあるフォルダを選択する。フォルダが見つからないときは「フォルダーに接続」アイコンをクリックして目的のフォルダを選択し、「OK」をクリックする
  • 選択したフォルダの中からジオリファレンスする画像を選択し「追加」をクリックする
  • 「データの追加」をクリックすると画像が位置情報を持っていない旨のウィンドウが表示されるが、気にせずOKをクリックする
  • ジオリファレンスのツールバーの「表示範囲にフィット(F)」をクリックすると、作業ウィンドウ上にジオリファレンスを行う画像が表示される。画像とGISデータの縮尺がずれている場合は、GISデータの表示範囲を調整しながら「表示範囲にフィット」をクリックすることで縮尺を調整する

 

1.2 ジオリファレンスの作業

  • 画像とGISデータ双方の一致させるべき地点が定まったら、ジオリファレンスツールバーの「コントロールポイントの追加」アイコンをクリックし、画像の方の一致させるべき地点をクリックする。クリックすると十字のマークが表示される
  • 画像をクリックした状態のままGISデータの方の一致させるべき地点をクリックする。このとき、画像の方の十字のマークから線が伸びていることを確認する。クリックしたら線は消える。これで画像とGISデータが1点でつながったことになる
  • 上記の要領で他の場所にもコントロールポイントを追加する(四角形の画像であれば四隅に計4点追加)

 

1.3 ジオリファレンスの終了

すべてのコントロールポイントの追加が終了したら、ジオリファレンスツールバーの「ジオリファレンス(G)」→「ジオリファレンスの更新(G)」の順にクリックする。これで画像のコントロールポイントの座標値が認識され、画像がGISデータとなる。以降の作業時にジオリファレンスした画像をArcMap上に読み込む場合は、「データの追加」アイコンからジオリファレンスした画像を読み込む。

参考:https://www.mlit.go.jp/kokudoseisaku/gis/gis/kyoiku/02_3arcgis_text3.pdf

2. ポリライン

2.1 ポリラインレイヤーの準備

  • 「カタログ」アイコン(画面左上)をクリックし、ArcMapのデータを保存したフォルダを右クリック→「新規作成」→「ファイル ジオデータベース」の順にクリックし、ファイルジオデータベースを作成する
  • 「ファイル ジオデータベース」アイコンを右クリック→「新規作成」→「フィーチャクラス」の順にクリックし、フィーチャクラスの新規作成画面を表示させる
  • 名前・エイリアスを入力し、フィーチャタイプから「ライン フィーチャ」選択し、「ジオメトリ プロパティ」は無視して「次へ」をクリックする
  • XY座標値に使用する座標系を選択し「次へ」をクリックする
  • 「XY許容値」、「データベース格納時のコンフィグレーションの設定」、「フィールド プロパティ」の項目はスキップして「完了」をクリックする。これでマップレイヤー内にラインフィーチャが作成される

 

2.2 ポリライン作成

  • マップレイヤー内のレイヤー名を右クリックして、「フィーチャの編集」→「編集の開始」で編集を開始する(あるいは、レイヤー名を左クリックして、ツールバーの「エディター」→「編集を開始」で編集を開始)。すると、次の画像のような警告が表示されるが、「OK」や「継続」をクリックして次へ進む

  • ツールバーの「フィーチャ作成」アイコンをクリックしてフィーチャ作成ウィンドウを表示する
  • フィーチャ作成ウィンドウ内のレイヤー名をクリックし、作図ツールから「ライン」を選択してラインを描く

 

2.3 ポリライン作成の終了

全てのポリラインの作成が終了したら、描いたラインをダブルクリックしてツールバー「エディター」→「編集の保存」の順にクリックして保存し、ツールバー「エディター」→「編集の終了」の順にクリックして編集を終了する。同一レイヤーでポリラインを複数作成したい場合は、2.2の①~③の手順を繰り返す

ディゾルブ(複数のポリラインの集約)

  • 属性テーブルを開き、すべてのラインを選択する
  • ツールバー「ジオプロセシング」→「ディゾルブ」の順にクリックして、ディゾルブウィンドウを表示する
  • ディゾルブウィンドウ内の入力フィーチャの▼をクリックして、作成したポリラインのレイヤーを選択する(画像では「line5」)。出力フィーチャクラスについては右端のフォルダアイコンをクリックして新しく名前を入力し、「保存」、「OK」をクリックしてディゾルブを作成する

3. ポイント

3.1 ポイントレイヤーの準備

  • 「カタログ」アイコンをクリックし、「ファイル ジオデータベース」アイコンを右クリック→「新規作成」→「フィーチャクラス」の順にクリックし、フィーチャクラスの新規作成画面を表示させる
  • 名前・エイリアスを入力し、フィーチャタイプから「ポイント フィーチャ」選択し、「ジオメトリ プロパティ」は無視して「次へ」をクリックする
  • XY座標値に使用する座標系を選択し「次へ」をクリックする
  • 「XY許容値」、「データベース格納時のコンフィグレーションの設定」、「フィールド プロパティ」の項目はスキップして「完了」をクリックする。これでマップレイヤー上にポイントフィーチャが作成される

 

3.2 ポイントの作成

  • マップレイヤー内のポイントを作成したいポリラインレイヤー名をクリックして、2の①の手順で編集を開始する
  • 画面上のポリラインを選択し、ツールバーの「エディター」→「ポイントの作成」の順でクリックすると、ポイント作成ウィンドウが表示される
  • ポイント作成ウィンドウ内の作図オプションで「距離」を選択し、数値を入力する。この距離はポイント同士の間隔を意味しており、単位はメートルである。次の画像のように「1」と入力すればポイントが1m間隔で作成される。

3.3 ポイント作成の終了

全てのポイントの作成が終了したら、ツールバー「エディター」→「編集の保存」の順にクリックして保存、ツールバー「エディター」→「編集の終了」の順にクリックして編集を終了する。

 

4. ポイントへの緯度・経度の情報の追加

  • マップレイヤー内のポイントレイヤー名を右クリックし、属性テーブルを開く
  • 属性テーブルの「テーブル オプション」→「フィールドの追加」クリックして、「フィールドの追加」ウィンドウを表示させる
  • 「フィールドの追加」ウィンドウ内の名前は「緯度」と入力し、タイプは「Double」を選択して「OK」をクリックすると、属性テーブルに「緯度」のフィールドが追加される
  • 属性テーブルの「緯度」と表示されている箇所を右クリックして「ジオメトリ演算」をクリックすると警告のメッセージが表示されるが、気にせずYesをクリックする。すると「ジオメトリ演算」ウィンドウが表示される
  • 「ジオメトリ演算」ウィンドウ内のプロパティは「ポイントのY座標」、座標系は「データ ソースの座標系を使用」を選択し、OKをクリックする
  • フィールド演算の警告メッセージが表示されるが、気にせずYesをクリックすると、属性テーブル内の「緯度」のフィールドのそれぞれのポイントの項目に緯度の情報が追加される
  • 経度の情報を追加する場合は、「フィールドの追加」ウィンドウ内の名前を「経度」とし、ジオメトリ演算ウィンドウ内のプロパティで「ポイントのX座標」を選択する以外は①~⑥と同じ作業を行う

 

ポイントに緯度・経度以外の情報(数値、文字列、日付など)を追加したい場合は、4.の②で「ジオメトリ演算」ではなく「フィールド演算」をクリックすれば、数値や文字列を入力したり、様々な関数を用いた計算が利用できる。