2012年8月28日火曜日

小人さんのお土産

最近、出没しない小人さん。
夏休みで福島方面に行って来たらしい。

そのお土産が!なんとコレ!!!
きっとネタだと思うのでブログup。


2012年8月22日水曜日

python:気象データのグリッド化

postGIS:流域の中で本流と支流にポリゴン分け

GRASS:DEM作成

DEMファイル作成マニュアルを作るために初めてDEMファイルを作ってみた。
結局、出来なかったけど手順だけまとめておこう。
 
 
①Create a new mapset だっちゃ♪
「Create mapset」ボタンをクリック。


マップセット名を入力
 









②Import Vector Fileだっちゃ♪
  【files】 > 【Import vector data】 > 【Common important  formats[v.in.ogr]】



















ディレクトリ指定で2つのシェープファイル読み込み。























③Vectormap layer into a Rastermap layer(V.to.Rasterだっちゃ♪)
     【Vector】  > 【Map type conversions】 > 【Vector to raster[v.to.rast]】


 


















Vector map→Impotrtしたファイル名
Raster map→テキトーに命名
raster バリュー→val(オプションのRster valueで指定された値を使用)




 


ラスターになったみたいよ。
 

Creating a Mask
  【Raster】 > 【Mask[r.mask]】
 
 


マスクを作成するためのラスターレイヤーを入力。

 
 
右下にマスクって表示されていればOK。

 
 





Set Region
  【Setting】 > 【Region】 > 【Set Region[g.region]】


マスクの範囲でリージョンを設定

Vector map layer into a Raster map layer




Make DEM file
  【Raster】 > 【Interpolate surfaces】 > 【Raster contours [r.surf.contours]】
 

QGIS:基本的な使い方

QGIS1.7での動作確認した内容。
せっかくなのでメモしてみた。

①ラスタデータ表示
    「ラスタレイヤの追加」のアイコンをクリック。

 
 







 

コマンドダイアログが表示されるので対象データを選択する。














画像が表示されます。
















②ベクタデータ表示
   「ベクタレイヤの追加」のアイコンをクリック。












  「ベクタレイヤの追加」画面が表示されるので【ブラウズ】をクリック。










コマンドダイアログが表示されるので対象データを選択する。













画像が表示されます。

えーーーーーーーーーーーーーーーーーーーーーーーーー!
表示されないッ!!!
















下の方にゴマのように見えています。。。。。



③CRSの設定(ラスタとベクタを重ねて表示するょ)
大きく離れて表示されるのは「座標系」が違うから。。。
ラスタ→UTM座標(単位はメートル、値は10~100万オーダー)
ベクタ→緯度経度座標(単位は度)


QGISの左隅にあるCRSステータス(キノコみたいなやつ)をクリック。

















CRS設定画面が開きます。
「Search」ボックスの中に3099って入れてFind→
座標参照系リストの中に「JGD2000 / UTM zone 53N」って表示されているので選択。

さらにオンザフライCRS変換を有効にする'をチェック→
これで緯度経度をUTMに変換してくれるらしい。。。
 
  
無事、重なる。
 
 

④属性の確認
 
 
⑤属性ごとに色を変える
属性ごとに色を変えたいレイヤを選択して㊨クリック→メニューが出てくるから「プロパティ」を選択。


















レイヤプロパティ画面が表示。左側の分類から「シンボル」を選択します。
 
 
 
凡例タイプ→「固有値」を選択。分類フィールドで色分けしたい項目を選択して「分類」ボタンをクリック。 
 
表示してみる。


















⑥WMSレイヤ追加
WMSサービスを利用して道路、地形、地上構造物などの情報を表示する。
(今回は国土地理院様の基盤地図情報25,000WMS配信サービスを利用)

「レイヤ」→「WMSレイヤの追加」をクリック。


 


 
 
「サーバーからレイヤを追加」画面で【新規】ボタンをクリック。





名称→基盤WMS(なんでもええょー)
URL→http://www.finds.jp/ws/kiban25000wms.cgi?
上記項目を入力したら【OK】ボタンクリック












接続するとWMSで配信されるデータの一覧が表示される。
必要なモノをクリックして反転させる。(”JpSmpl”、”PrefSmpl”、”AdmArea”はクリックしない)











表示確認。
















⑦プロジェクトの保存
「ファイル」→「プロジェクトの保存」をクリック。
テキトーなフォルダにテキトーな名前を付けてしまっとく。



続→→→→→位置情報の表示


postGIS:座標指定で流域取得

流域界・非集水域(面)のデータに対して座標指定をする。















指定された地点にある単位流域コードを取得して
その単位流域コードを元に単位流域台帳(表)を検索し上流コードを取得する。


単位流域台帳(表)の上流域コードをリストに格納する。


取得した上流域コード(115)に対して更に上流域コードを調べる。




上流域コードが無くなるまで繰り返す。



<<<python>>>
### 流域界・非集水域(面)のデータに対して座標指定して流域コードを取得する###
sql = "SELECT W12_001,W12_002,W12_003 FROM 流域界・非集水域(面)
    WHERE distance_sphere(the_geom,GeomFromText('POINT("+ str(range_x) +" "+ str(range_y) +")',-1)) < 1;"
cur.execute(sql)
row = cur.fetchone()
a = row[1]
b = row[2]
 

### 上流コードを検索する ###    
sql = "select * from 河川台帳 where watersys_cd = '"+ a +"' and bashin_cd = '"+ b +"';"
cur.execute(sql)
row = cur.fetchall()

for c in row:
   list_wk=[int(c[3]),int(c[4]),int(c[5]),int(c[6]),int(c[7]),int(c[8]),int(c[9]),int(c[10]),int(c[11]),int(c[12]),int(c[13]),int(c[14]),

                int(c[15]),int(c[16]),int(c[17])]