2012年6月7日木曜日

EXCEL:封筒印刷マクロ

久々にエクセルマクロを作成した。
やっぱり落ち着く。

次のOfficeからVBAが消えちゃうみたいだけど。。。
はぁ~、これからどうしよう。
更に就職難。

Sub Main
   '-----------------------------------------------------------
   '  関数名:
   ' 引数
 
   ' 戻り値
 

 '    
  '-----------------------------------------------------------

 For n = a To b
        If Sheets("住所録").Cells(Row, 4) = "封筒1" Then
            Sheets("封筒1").Select
            ''郵便番号
            Sheets("封筒1").Cells(13, 1) = Sheets("住所録").Cells(Row, 6)
            ''都道府県+住所1
            Sheets("封筒1").Cells(15, 1) = Sheets("住所録").Cells(Row, 7) & Sheets("住所録").Cells(Row, 8)
            ''住所2
            Sheets("封筒1").Cells(18, 1) = Sheets("住所録").Cells(Row, 9)
            ''名前
            Sheets("封筒1").Cells(21, 1) = Sheets("住所録").Cells(Row, 5) & " 様"
            ActiveSheet.PrintPreview
             Sheets("封筒1").Cells(13, 1) = ""
             Sheets("封筒1").Cells(15, 1) = ""
             Sheets("封筒1").Cells(18, 1) = ""
             Sheets("封筒1").Cells(21, 1) = ""
   
     ElseIf Sheets("住所録").Cells(Row, 4) = "封筒2" Then
             Sheets("封筒2").Select
            ''郵便番号

            Sheets("封筒2").Cells(13, 1) = Sheets("住所録").Cells(Row, 6)
            ''都道府県+住所1
            Sheets("封筒2").Cells(15, 1) = Sheets("住所録").Cells(Row, 7) & Sheets("住所録").Cells(Row, 8)
            ''住所2
            Sheets("封筒2").Cells(18, 1) = Sheets("住所録").Cells(Row, 9)
            ''名前
            Sheets("封筒2").Cells(21, 1) = Sheets("住所録").Cells(Row, 5) & " 様"
            ActiveSheet.PrintPreview
            '--------------------------------------------------------------------
            ' clear
            '--------------------------------------------------------------------
             Sheets("封筒2").Cells(13, 1) = ""
             Sheets("封筒2").Cells(15, 1) = ""
             Sheets("封筒2").Cells(18, 1) = ""
             Sheets("封筒2").Cells(21, 1) = ""
        ElseIf Sheets("住所録").Cells(Row, 4) = "封筒3" Then
             Sheets("封筒3").Select
            ''郵便番号

            Sheets("封筒3").Cells(13, 1) = Sheets("住所録").Cells(Row, 6)
            ''都道府県+住所1
            Sheets("封筒3").Cells(15, 1) = Sheets("住所録").Cells(Row, 7) & Sheets("住所録").Cells(Row, 8)
            ''住所2
            Sheets("封筒3").Cells(18, 1) = Sheets("住所録").Cells(Row, 9)
            ''所属1
            Sheets("封筒3").Cells(21, 1) = Sheets("住所録").Cells(Row, 10)
            ''所属2
            Sheets("封筒3").Cells(22, 1) = Sheets("住所録").Cells(Row, 11)
            ''所属3
            Sheets("封筒3").Cells(23, 1) = Sheets("住所録").Cells(Row, 12)
           
            ''名前
            Sheets("封筒3").Cells(24, 1) = Sheets("住所録").Cells(Row, 5) & " 様"
            ActiveSheet.PrintPreview
            '--------------------------------------------------------------------
            ' clear
            '--------------------------------------------------------------------
             Sheets("封筒3").Cells(13, 1) = ""

             Sheets("封筒3").Cells(15, 1) = ""
             Sheets("封筒3").Cells(18, 1) = ""
             Sheets("封筒3").Cells(21, 1) = ""
             Sheets("封筒3").Cells(22, 1) = ""
             Sheets("封筒3").Cells(23, 1) = ""
             Sheets("封筒3").Cells(24, 1) = ""
        Else
            MsgBox ("封筒が選択されていません。")
        End If
        Row = Row + 1
   
    Next
    Sheets("住所録").Select

QGIS:バージョン1.7.4

『QGIS-OSGeo4W-1.7.4-d211b16-Setup.exe』を使ってQGIS1.7.4をインストール。
1.6との違いを検証するため。






無事、インストール完了。


①ラスターレイヤを追加してみる。
ツールバーにある「ラスタレイヤの追加」をクリック!








「ファイルを開く」のダイアログが表示されるのでラスタデータを選択して「開く」をクリック!












データ表示!


②ベクターレイヤを追加してみる。
ツールバーにある「ベクタレイヤの追加」をクリック!

「ベクタレイヤの追加」ダイアログが表示。エンコーディングは「System」。

(デフォルトsystemなんで、あんまり気にしたことないかも。)





「ブラウズ」ボタンを押してshpファイルを選択する。



データ表示!



でも、エンコーディングが「system」だと属性テーブルの中の日本語がバケる。。。



PostGIS:流域界と土地利用の重なり合う部分

流域界を水域系CDでディゾルブしたものと土地利用コードメッシュをインターセクトする。

①水系域CDを取得。
 SELECT distinct(水系域CD) FROM 水系域ディゾルブテーブル;

②インターセクト
    SELECT a2.*,(ST_Intersection(a1.the_geom,a2.the_geom)) As the_geom
        FROM 水系域ディゾルブテーブル a1 ,土地利用コード a2
     WHERE  ST_Intersects(a1.the_geom, a2.the_geom) and  a1.W12_002 ='水系域CD';

これで指定した水系域単位ごとに土地利用コードが取得できるハズ!

QGISで見ると流域単位で土地利用コードが集計されてます。



2012年6月1日金曜日

GRASS:流域界のバタバタで覚えたコト。

流域界・非集水域(面)のジオメトリが落ちてる騒動でシェープファイルをGRASS様で
いろいろかまってみた。

v.clean】
Toolset to clean vector topology (きっとガクガクした境界とかをキレイにしてくれるイメージ)






クリーニングツールがいっぱいある。
全部、選択するともれなくこける。メモリ容量が足りないらしい。。。
break: break lines at each intersection(交差して壊れたラインかなぁ。。。)

バーテックスを切り離し、交差させてみる。









 v.clean --overwrite input=input_file_name output=output_file_name tool=break
無事、治りました。








snap: snap lines to vertex in threshold(しきい値の中のラインを折る。。。)

エキサイトで翻訳するとエキサイトにしかならない。。。
remove dangle: remove dangle, threhold ignored < 0 ()


②v.generalize
cleanで太刀打ち出来なかったらgeneralizeと言われたのでやってみた
何も考えないでgeneralizeしたら境界線が直線になった。
おそらくアルゴリズム=douglas 許容差値=0~1000ぐらいにした。
















本当はchaikenでやりたかったケド、許容差値をどれだけ広げてもメモリが足りないため
douglas_redeductin(0-100)でやってみた。




だいぶ好い感じ だけど いつものごとく属性テーブルがくっついてこない。
で v.db.addtableしてみる。
でも、元もテーブルの属性はついてこない。。。(涙)


Postgres:流域界⑤

流域界と土地利用データを重ね合わせてみる。

流域界:新測地系
土地利用:旧測地系

2ピクセルぐらいズレてる。。。。

流域界のデータを旧測地系に変える。
①元になるシェープファイルを新測地系(JGD2000)で読み込む。

















②対象ファイルを右クリックして「名前をつけて保存」を選択。

③CRSを設定する。
④ユーザー定義の座標を作る。ここに
+proj=longlat +ellps=bessel +towgs84=-146.336,506.832,680.254,0,0,0,0 +no_defs
新測地系⇒旧測地系に変換するらしい。

⑤出来上がったシェープファイルをインポート♪

Postgres:流域界④

よーーーーく見ると流域界・非集水域(面)データのジオメトリが落ちてる。




落ちてるポリゴンだけ抜き取ってみる。
GRASSで[v.extract]

QGISで見てみよう。


そんなに大きくもないし複雑でもない。。。

OSgeoの方々のお蔭で無事解決。
pgAdminには大きなジオメトリは表示されないらしい。。。
コンソールで確認すると、ちょーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー長い
ジオメトリを見ることが出来ました。
PostgersqlではなくpgAdminの制限でした。