PoshCode Archive  Artifact [3b060f6396]

Artifact 3b060f6396ea744304a4f43405730d30a551dce80e9bed5ace3bc9683df02933:

  • File Get-Temperature.ps1 — part of check-in [6ee792713e] at 2018-06-10 13:38:26 on branch trunk — Reading temperature data from the Carbon Dioxide Information Analysis Center (user: Joel Bennett size: 1617)

# encoding: ascii
# api: powershell
# title: Get-Temperature
# description: Reading temperature data from the Carbon Dioxide Information Analysis Center
# version: 2.5
# type: function
# author: Joel Bennett
# license: CC0
# function: Get-Temperature
# x-poshcode-id: 4211
# x-archived: 2013-06-25T00:39:26
# x-published: 2013-06-21T04:17:00
#
# This is just a first step to something more interesting.
#
function Get-Temperature {
  # .Link http://cdiac.ornl.gov/epubs/ndp/ushcn/monthly_doc.html
[CmdletBinding()]
param(
	# From http://cdiac.ornl.gov/ftp/ushcn_v2.5_monthly/ushcn2012_tob_tmax.txt.gz
	$maxTemps = "~\Downloads\ushcn2012_tob_tmax.txt",
	# From http://cdiac.ornl.gov/ftp/ushcn_v2.5_monthly/ushcn2012_tob_tmin.txt.gz
	$minTemps = "~\Downloads\ushcn2012_tob_tmin.txt",
  # From http://cdiac.ornl.gov/ftp/ushcn_v2.5_monthly/ushcn-stations.txt
	$StationID = 307167,

  $Years = 5
)

  $max = Select-String USH0+$StationID $maxTemps | % line
  $min = Select-String USH0+$StationID $minTemps | % line

  if($max.Count -ne $min.Count) {
    Write-Warning "TODO: write code to throw away years until we get data in both files."
  }

  $temps = @{}
  foreach($y in (-$Years)..-1) {
    $Year = [int]$max[$y].Substring(12,4)
    $temps.$Year = @{}
    Write-Verbose "$Year $($temps.$Year.GetType().FullName)"
    foreach($Month in 1..12){ 
      Write-Verbose "$Year-$Month"
      $temps.$year.$Month = @{
        "Max" = .1 * [int]$max[$y].Substring((8+($month*9)),5)
        "Min" = .1 * [int]$min[$y].Substring((8+($month*9)),5)
      }
    }
  }
  $temps
}