• Beitrags-Kategorie:PowerShell
  • Lesedauer:2 min Lesezeit

Die Distanz zwischen 2 Orten lässt sich mit PowerShell einfach von Google Maps auslesen.

Dazu lese ich den Quellcode von „https://www.google.com/maps?saddr=[VON]&daddr= [ZU] “ und suche nach den Werten ‚km\‘ für Distanz und ‚Min.\‘ für die Zeit.

Beispiel

Die Distanz von Linz nach Wien.

https://www.google.com/maps?saddr=4020 Linz&daddr=1010 Wien
Quellcode
Get-Distance Ausgabe

PowerShell Function „Get-DistanceTracelTime“

FUNCTION Get-DistanceTravelTime{
    [cmdletbinding()]
    Param(
        [Parameter(Position=0,Mandatory)]
        [string]$From,
        [Parameter(Position=1,Mandatory)]
        [string]$To
    )

    Write-Host "[i] search location data for $($to)" -ForegroundColor Yellow
    $wr = $(((Invoke-WebRequest "https://www.google.com/maps?saddr=$($from)&daddr=$($to)" -UseBasicParsing -SessionVariable WebSession -UserAgent $strWebAgent).RawContent).Split('[]') | ?{$_} | %{$_ -replace '  '})[1000..1200]
    $count = 0
    $distance = $false
    $time = $false
    foreach ($row in $wr){
        IF ((!$distance) -and ($row -like '*km\"*')){
            $distance = $($wr[$count])
            $time = $($wr[$count+2])
            $distance = [regex]::Matches($distance, "\d+")[0].value
            $time = [regex]::Matches($time, "\d+")[0].value
        }
        IF (($distance) -and ($time)){
            $output =  New-Object Psobject -Property @{
                "from" = $from
                "to" = $to
                "distance" = $distance
                "time" = $time
            }
            break
        }
        $count++
    }
    return $($output | Select-Object from, to, distance, time)
}

Get-DistanceTravelTime "4020 Linz" "1010 Wien"

5 / 5. 1

Schreibe einen Kommentar