PowerShell 技能连载 - 创建世界地图图像

如果您有与国家/地区有关的数据,则可能需要可视化并突出显示此地理数据。经典的数据图标在这里不起作用。

幸运的是,PowerShell 可以使用免费的在线地理图表。这是您可以试试这个函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
function Show-MapGraph
{
param
(
[Parameter(Mandatory,ValueFromPipeline)]
$InputObject,

[Parameter(Mandatory)]
[string]
$Property,

[string]
$Label = 'Items'
)

begin
{

$bucket = [System.Collections.ArrayList]::new()
}
process
{
$null = $bucket.Add($_)
}
end
{
$groups = $bucket | Where-Object { $_.$Property } | Group-Object -Property $Property -NoElement
$data = foreach ($group in $groups)
{
"['{0}',{1}]" -f $group.Name, $group.Count
}

$datastring = $data -join "`r`n,"

$HTMLPage = @"
google.charts.load('current', {
'packages':['geochart'],
});
google.charts.setOnLoadCallback(drawRegionsMap);

function drawRegionsMap() {
var data = google.visualization.arrayToDataTable([
['Country', '$Label'],
$datastring
]);

var options = {

colorAxis: {colors: ['#00FF00', '#004400']},
backgroundColor: '#81d4fa',
datalessRegionColor: '#AAAABB',
defaultColor: '#f5f5f5',
};

var chart = new google.visualization.GeoChart(document.getElementById('regions_div'));

chart.draw(data, options);
}
"@

$timestamp = Get-Date -Format 'HHmmss'
$OutPath = "$env:temp\Graph$timestamp.html"
$HTMLPage | Out-File -FilePath $OutPath -Encoding utf8
Start-Process $outpath
}
}

Show-MapGraph 基本原理是创建一个 HTML 网页,并通过适当的脚本调用填充它,然后显示它。您需要做的就是通过管道传入您的国家数据,并使用 -Property 指示对象的哪个属性包含国家名称。

PowerShell 技能连载 - 创建世界地图图像

http://blog.vichamp.com/2022/07/19/creating-world-map-graphs/

作者

吴波

发布于

2022-07-19

更新于

2024-03-29

许可协议

评论