Mô đun:Shindo/data

function makeFromTemplateScale(scale, name, id_prefix, short)
	local returnVal = mw.clone(scale)
	returnVal.name = name or returnVal.name
	returnVal.id_prefix = id_prefix
	returnVal.short = short
	return returnVal
end
function addField(nameOfField, objectToWriteTo, objectToReadFrom)
	for k,v in pairs(objectToWriteTo) do
		if objectToReadFromk ~= nil then vnameOfField = objectToReadFromk end
	end
end
local data = {}
-- MMI and many other scales
data"mmi" = {
	name = "Thang đo Mercalli",
	id_prefix = "mmi-",
	short = "MMI",
	colors = {
		{255, 255, 255},
		{191, 204, 255},
		{175, 217, 255},
		{160, 230, 255},
		{128, 255, 255},
		{122, 255, 147},
		{255, 255, 0},
		{255, 200, 0},
		{255, 145, 0},
		{255, 0, 0},
		{200, 0, 0},
		{164, 0, 0},
		{128, 0, 0}
	},
	order = {"I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI", "XII"},
	ranks = {
		"1" = {
			id = "1",
			order = 1,
			label = "I"
		},
		"2" = {
			id = "2",
			order = 2,
			label = "II"
		},
		"3" = {
			id = "3",
			order = 4,
			label = "III"
		},
		"4" = {
			id = "4",
			order = 5,
			label = "IV"
		},
		"5" = {
			id = "5",
			order = 6,
			label = "V"
		},
		"6" = {
			id = "6",
			order = 7,
			label = "VI"
		},
		"7" = {
			id = "7",
			order = 8,
			label = "VII"
		},
		"8" = {
			id = "8",
			order = 9,
			label = "VIII"
		},
		"9" = {
			id = "9",
			order = 10,
			label = "IX"
		},
		"10" = {
			id = "10",
			order = 11,
			label = "X"
		},
		"11" = {
			id = "11",
			order = 12,
			label = "XI"
		},
		"12" = {
			id = "12",
			order = 13,
			label = "XII"
		}
	}
}
-- Roman numeral aliases
data"mmi".ranks"I" = data"mmi".ranks"1"
data"mmi".ranks"II" = data"mmi".ranks"2"
data"mmi".ranks"III" = data"mmi".ranks"3"
data"mmi".ranks"IV" = data"mmi".ranks"4"
data"mmi".ranks"V" = data"mmi".ranks"5"
data"mmi".ranks"VI" = data"mmi".ranks"6"
data"mmi".ranks"VII" = data"mmi".ranks"7"
data"mmi".ranks"VIII" = data"mmi".ranks"8"
data"mmi".ranks"IX" = data"mmi".ranks"9"
data"mmi".ranks"X" = data"mmi".ranks"10"
data"mmi".ranks"XI" = data"mmi".ranks"11"
data"mmi".ranks"XII" = data"mmi".ranks"12"
-- JMA, CWS, etc.
data"jma" = {
	name = "Thang cường độ địa chấn Nhật Bản",
	id_prefix = "jma_",
	short = "JMA",
	order = {"0", "1", "2", "3", "4", "5-", "5+", "6-", "6+", "7"},
	colors = {
		{255, 255, 255},
		{242, 242, 255},
		{160, 230, 255},
		{0, 65, 255},
		{250, 230, 150},
		{255, 230, 0},
		{255, 153, 0},
		{255, 40, 0},
		{165, 0, 33},
		{180, 0, 104}
	},
	ranks = {
		"0" = {
			id = "0",
			order = 1,
			label = "0"
		},
		"1" = {
			id = "1",
			order = 2,
			label = "1"
		},
		"2" = {
			id = "2",
			order = 3,
			label = "2"
		},
		"3" = {
			id = "3",
			order = 4,
			label = "3"
		},
		"4" = {
			id = "4",
			order = 5,
			label = "4"
		},
		"5-" = {
			id = "5-",
			order = 6,
			label = "5−"
		},
		"5" = {
			id = "5",
			order = 6,
			label = "5"
		},
		"5+" = {
			id = "5+",
			order = 7,
			label = "5+"
		},
		"6-" = {
			id = "6-",
			order = 8,
			label = "6−"
		},
		"6" = {
			id = "6",
			order = 8,
			label = "6"
		},
		"6+" = {
			id = "6+",
			order = 9,
			label = "6+"
		},
		"7" = {
			id = "7",
			order = 10,
			label = "7"
		}
	}
}
data"cwa" = makeFromTemplateScale(data.jma, "Central Weather Administration seismic intensity scale", "cwa_", "CWA")
data"csis" = makeFromTemplateScale(data.mmi, "China seismic intensity scale", "csis-", "CSIS")
data"ems-98" = makeFromTemplateScale(data.mmi, "European macroseismic scale", "ems-98-", "EMS-98")
data"msk-64" = makeFromTemplateScale(data.mmi, "Medvedev–Sponheuer–Karnik scale", "msk-", "MSK-64")
data"rfs" = makeFromTemplateScale(data.mmi, "Rossi–Forel scale", "rfs-", "RFS")
data"rfs".ranks"11" = nil
data"rfs".ranks"12" = nil
data"rfs".ranks"XI" = nil
data"rfs".ranks"XII" = nil
data"rfs".order12 = nil
data"rfs".order11 = nil
data"peis" = makeFromTemplateScale(data.rfs, "PHIVOLCS earthquake intensity scale", "peis-", "PEIS")
-- ranks only present with USGS
data"mmi".ranks"2-3" = {
	id = "2",
	order = 3,
	label = "II–III"
}
data"mmi".ranks"II-III" = data"mmi".ranks"2-3"
data"mmi".ranks"10+" = {
	id = "10",
	order = 11,
	label = "X+"
}
data"mmi".ranks"X+" = data"mmi".ranks"10+"
data"mmi".order = {"I", "II", "II-III", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "X+", "XI", "XII"}
-- Add categorical rankings to data
addField("category", data"mmi".ranks,
	{
		"1" = "Không cảm nhận được",
		"2" = "Yếu",
		"3" = "Nhẹ",
		"2-3" = "Yếu",
		"4" = "Tương đối",
		"5" = "Khá mạnh",
		"6" = "Mạnh",
		"7" = "Rất mạnh",
		"8" = "Có sức phá hoại",
		"9" = "Uy hiếp",
		"10+" = "Mạnh dữ dội",
		"10" = "Mạnh dữ dội",
		"11" = "Cực kỳ mạnh",
		"12" = "Thảm họa"
	}
)
addField("category", data"ems-98".ranks,
	{
		"1" = "Not felt",
		"2" = "Scarcely felt",
		"3" = "Weak",
		"4" = "Largely observed",
		"5" = "Strong",
		"6" = "Slightly damaging",
		"7" = "Damaging",
		"8" = "Heavily damaging",
		"9" = "Destructive",
		"10" = "Very destructive",
		"11" = "Devastating",
		"12" = "Completely devastating"
	}
)
addField("category", data"msk-64".ranks,
	{
		"1" = "Not perceptible",
		"2" = "Hardly perceptible",
		"3" = "Weak",
		"4" = "Largely observed",
		"5" = "Fairly strong",
		"6" = "Strong",
		"7" = "Very strong",
		"8" = "Damaging",
		"9" = "Destructive",
		"10" = "Devastating",
		"11" = "Catastrophic",
		"12" = "Very catastrophic"
	}
)
addField("category", data"peis".ranks,
	{
		"1" = "Scarcely perceptible",
		"2" = "Slightly felt",
		"3" = "Weak",
		"4" = "Moderately strong",
		"5" = "Strong",
		"6" = "Very strong",
		"7" = "Destructive",
		"8" = "Very destructive",
		"9" = "Devastating",
		"10" = "Completely devastating"
	}
)
addField("category", data"rfs".ranks,
	{
		"1" = "Microseismic tremor",
		"2" = "Extremely feeble tremor",
		"3" = "Feeble tremor",
		"4" = "Slight tremor",
		"5" = "Moderate tremor",
		"6" = "Strong tremor",
		"7" = "Very strong tremor",
		"8" = "Damaging tremor",
		"9" = "Devastating tremor",
		"10" = "Extremely high intensity tremor"
	}
)
-- lower values for peak ground acceleration for MMI see https://usgs.github.io/shakemap/manual4_0/ug_intensity.html
-- all values in units of %g and will need to be converted for other uses
-- also categorization is done in buckets with averages precomputed in Excel
--
Rank	PGA listed	Average for bottom buckets
1	0.05	0.175
2-3	0.3	1.55
4	2.8	4.5
5	6.2	9.1
6	12	17
7	22	31
8	40	57.5
9	75	107
10+	139	
addField("pga", data"mmi".ranks, {
	"1" = 0,
	"2-3" = 0.175,
	"4" = 1.55,
	"5" = 4.5,
	"6" = 9.1,
	"7" = 17,
	"8" = 31,
	"9" = 57.5,
	"10+" = 107
})
data"mmi".ranksSorted = { "1", "2-3", "4", "5", "6", "7", "8", "9", "10+" }
-- same for JMA (values from Japan Meterological Agency seismic intensity scale and converted back to %g's)
addField("pga", data"jma".ranks, {
	"0" = 0,
	"1" = 0.08,
	"2" = 0.26,
	"3" = 0.81,
	"4" = 2.55,
	"5-" = 8.16,
	"5+" = 14.29,
	"6-" = 25.51,
	"6+" = 32.14,
	"7" = 40
})
data"jma".ranksSorted = { "0", "1", "2", "3", "4", "5-", "5+", "6-", "6+", "7" }
return data