トップ  >  サンプルソース  >  放射線モニタリング情報表示(VB.NET)

放射線モニタリング情報表示(VB.NET)

2012年03月29日

文部科学省で「リアルタイム線量測定システムによる福島県内の空間線量率の測定結果」のWEB公開が始まりました。

そのWEBページはこちら「リアルタイム線量測定システムによる福島県内の空間線量率の測定結果」ですが、このWEBページはとても遅くてイライラします。

そこで、放射線モニタリング情報を取得し表示するプログラムが欲しくなるかもしれません。

そんな時に参考になるかもしれないサンプル(ソース/コード)を紹介します。

(注意)あまり頻繁に情報取得を繰り返すとサーバ負荷が掛かり迷惑ですのでおやめください。

(注意)放射線モニタリング情報公開WEBページは2011年度内は試験運用中なので、2012年4月以降に仕様が変わってしまうかもしれません。

' ----------------------------------------------------------
' 放射線モニタリング情報を表示するサンプル(VB.NET/VS2005)
Private Sub Button1_Click( _
    ByVal sender As System.Object, _
    ByVal e As System.EventArgs) _
    Handles Button1.Click

    Const url As String = _
        "http://radiomap.mext.go.jp/data/ja/real/"

    ' 福島駅コラッセひろば【測定高さ50cm】の
    ' 放射線モニタリング観測結果表示
    DspData(url & "area_07201/trend/day/100837_day.json")

    ' 郡山駅西口駅前広場【測定高さ100cm】の
    ' 放射線モニタリング観測結果表示
    DspData(url & "area_07203/trend/day/101194_day.json")

    ' いわき駅前広場【測定高さ100cm】の
    ' 放射線モニタリング観測結果表示
    DspData(url & "area_07204/trend/day/100177_day.json")
End Sub

' 放射線モニタリング情報表示
Private Sub DspData( _
    ByVal url As String)

    ' インターネットから放射線モニタリング情報を取得する
    Dim json As String = GetData(url)

    ' 放射線モニタリング情報からコード値を取得する
    Dim code As String = GetValue(json, "code:", ",")
    ' 放射線モニタリング情報から最小値を取得する
    Dim min As String = GetValue(json, "min:", ",")
    ' 放射線モニタリング情報から最大値を取得する
    Dim max As String = GetValue(json, "max:", ",")
    ' 放射線モニタリング情報から平均値を取得する
    Dim ave As String = GetValue(json, "ave:", ",")
    ' 放射線モニタリング情報から今日の全ての測定値を取得する
    Dim vst As String = GetValue(json, "value:[", "]")
    ' 放射線モニタリング情報から今日の直近の測定値を取得する
    Dim var As String() = vst.Split(",")
    Dim cur As String = "0"
    For i As Integer = 0 To var.Length - 1
        If Val(var(i)) = 0 Then Exit For
        cur = var(i)
    Next
    ' 放射線モニタリング情報から今日の直近の測定日時を取得する
    Dim tim As String = GetValue(json, "time:", "}")

    ' 放射線モニタリング情報のコード値を表示する
    System.Diagnostics.Trace.WriteLine(code)
    ' 放射線モニタリング情報の最小値を表示する
    System.Diagnostics.Trace.WriteLine(min)
    ' 放射線モニタリング情報の最大値を表示する
    System.Diagnostics.Trace.WriteLine(max)
    ' 放射線モニタリング情報の平均値を表示する
    System.Diagnostics.Trace.WriteLine(ave)
    ' 放射線モニタリング情報の今日の直近の測定値を表示する
    System.Diagnostics.Trace.WriteLine(cur)
    ' 放射線モニタリング情報の今日の直近の測定日時を表示する
    System.Diagnostics.Trace.WriteLine(tim)
End Sub

' 放射線モニタリング情報から指定項目値を取得
Private Function GetValue( _
    ByVal json As String, _
    ByVal name As String, _
    ByVal term As String) As String

    Dim p1 As Integer
    Dim p2 As Integer
    json = json.Replace("""", "")
    p1 = json.IndexOf(name)
    If p1 >= 0 Then
        p2 = json.IndexOf(term, p1)
        If p2 < 0 Then p2 = json.Length
        Return json.Substring( _
            p1 + name.Length, p2 - (p1 + name.Length))
    End If
    Return ""
End Function

' 放射線モニタリング情報取得
Private Function GetData( _
    ByVal url As String) As String

    Dim st As System.IO.Stream = Nothing
    Dim rs As System.Net.WebResponse = Nothing
    Try
        Dim url_uri As New Uri(url)
        Dim dat As Byte() = New Byte(-1) {}

        Dim rq As System.Net.WebRequest = _
            CType(System.Net.WebRequest.Create(url), _
            System.Net.HttpWebRequest)
        rs = rq.GetResponse()

        st = rs.GetResponseStream()
        Dim bytes As Byte()
        Dim ttlSiz As Integer = 0
        Dim oneSiz As Integer
        Do
            ReDim bytes((1024 * 100) - 1)
            oneSiz = st.Read(bytes, 0, bytes.Length)
            If oneSiz > 0 Then
                ReDim Preserve dat(ttlSiz + oneSiz - 1)
                If oneSiz <> bytes.Length Then
                    ReDim Preserve bytes(oneSiz - 1)
                End If
                bytes.CopyTo(dat, ttlSiz)
                ttlSiz = ttlSiz + oneSiz
            End If
        Loop While (oneSiz > 0)

        Return System.Text.Encoding.ASCII.GetString(dat)
    Catch ex As Exception
        Throw ex
    Finally
        If st Is Nothing = False Then
            st.Close()
            st = Nothing
        End If
        If rs Is Nothing = False Then
            rs.Close()
            rs = Nothing
        End If
    End Try
End Function
' ----------------------------------------------------------
スポンサーサイト

フレッツ光(プロバイダ)の月額料金比較 | トップページへ戻る | 原発依存率と燃料費と電気料金値上げ

このページのトップに戻る

コメント

名前
題名
メールアドレス
WEBサイト
 
コメント
パスワード
  管理者にだけ表示を許可する

このページのトップに戻る

トラックバック

このページのトップに戻る