Change-Id: I1ad8b823cf67a4a1217ef5eb5ec60085f857c471 VLab Issue #10353 - SVG solution to DCS_10257. Severe PIREP and AIREP should be separate color; fixes #10353 Change-Id: Iddb7c0e9e22b4a9793fd5d44a5a201f73d0c072f Former-commit-id: 6f7c50bb773c8b5e99c2b08ed5f8dd70866ebb5f
|
@ -23,6 +23,7 @@
|
|||
<displays xsi:type="d2DMapRenderableDisplay"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<descriptor xsi:type="mapDescriptor">
|
||||
<!-- Not High severity -->
|
||||
<resource>
|
||||
<loadProperties>
|
||||
<capabilities>
|
||||
|
@ -69,6 +70,53 @@
|
|||
</resource>
|
||||
</resourceData>
|
||||
</resource>
|
||||
<!-- High severity -->
|
||||
<resource>
|
||||
<loadProperties>
|
||||
<capabilities>
|
||||
</capabilities>
|
||||
</loadProperties>
|
||||
<resourceData xsi:type="plotBlendedResourceData">
|
||||
<resource>
|
||||
<loadProperties loadWithoutData="true"/>
|
||||
<properties isSystemResource="false" isBlinking="false"
|
||||
isMapLayer="false" isHoverOn="false"
|
||||
isVisible="true" />
|
||||
<resourceData xsi:type="plotResourceData" plotSource="${legend} Sev"
|
||||
plotModelFile="${svg2}"
|
||||
retrieveData="false" isUpdatingOnMetadataOnly="false">
|
||||
<binOffset posOffset="1800" negOffset="1800" virtualOffset="0"/>
|
||||
<metadataMap>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="pirep" constraintType="EQUALS" />
|
||||
</mapping>
|
||||
<mapping key="location.flightLevel">
|
||||
<constraint constraintValue="${between}" constraintType="BETWEEN" />
|
||||
</mapping>
|
||||
</metadataMap>
|
||||
</resourceData>
|
||||
</resource>
|
||||
<resource>
|
||||
<loadProperties loadWithoutData="true"/>
|
||||
<properties isSystemResource="false" isBlinking="false"
|
||||
isMapLayer="false" isHoverOn="false"
|
||||
isVisible="true" />
|
||||
<resourceData xsi:type="plotResourceData" plotSource="${legend} Sev"
|
||||
plotModelFile="${svg3}"
|
||||
retrieveData="false" isUpdatingOnMetadataOnly="false">
|
||||
<binOffset posOffset="1800" negOffset="1800" virtualOffset="0"/>
|
||||
<metadataMap>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="airep" constraintType="EQUALS" />
|
||||
</mapping>
|
||||
<mapping key="location.flightLevel">
|
||||
<constraint constraintValue="${between}" constraintType="BETWEEN" />
|
||||
</mapping>
|
||||
</metadataMap>
|
||||
</resourceData>
|
||||
</resource>
|
||||
</resourceData>
|
||||
</resource>
|
||||
</descriptor>
|
||||
</displays>
|
||||
</displayList>
|
||||
|
|
|
@ -24,6 +24,8 @@
|
|||
<substitute key="svg0" value="pirepPlotDesign.svg"/>
|
||||
<substitute key="svg1" value="pirepPlotDesign.svg"/>
|
||||
<substitute key="legend" value="PIREP Plot 000-180 hft"/>
|
||||
<substitute key="svg2" value="pirepPlotDesignSev.svg"/>
|
||||
<substitute key="svg3" value="pirepPlotDesignSev.svg"/>
|
||||
<substitute key="between" value="0--18000"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" file="bundles/PirepPlot.xml"
|
||||
|
@ -31,6 +33,8 @@
|
|||
<substitute key="svg0" value="pirepPlotDesign.svg"/>
|
||||
<substitute key="svg1" value="pirepPlotDesign.svg"/>
|
||||
<substitute key="legend" value="PIREP Plot 180-260 hft"/>
|
||||
<substitute key="svg2" value="pirepPlotDesignSev.svg"/>
|
||||
<substitute key="svg3" value="pirepPlotDesignSev.svg"/>
|
||||
<substitute key="between" value="18000--26000"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" file="bundles/PirepPlot.xml"
|
||||
|
@ -38,6 +42,8 @@
|
|||
<substitute key="svg0" value="pirepPlotDesign.svg"/>
|
||||
<substitute key="svg1" value="pirepPlotDesign.svg"/>
|
||||
<substitute key="legend" value="PIREP Plot 260-500 hft"/>
|
||||
<substitute key="svg2" value="pirepPlotDesignSev.svg"/>
|
||||
<substitute key="svg3" value="pirepPlotDesignSev.svg"/>
|
||||
<substitute key="between" value="26000--50000"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="titleItem"
|
||||
|
@ -47,6 +53,8 @@
|
|||
<substitute key="svg0" value="pirepIcingDesign.svg"/>
|
||||
<substitute key="svg1" value="airepIcingDesign.svg"/>
|
||||
<substitute key="legend" value="PIREP Icing 000-180 hft"/>
|
||||
<substitute key="svg2" value="pirepIcingDesignSev.svg"/>
|
||||
<substitute key="svg3" value="airepIcingDesignSev.svg"/>
|
||||
<substitute key="between" value="0--18000"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" file="bundles/PirepPlot.xml"
|
||||
|
@ -54,6 +62,8 @@
|
|||
<substitute key="svg0" value="pirepIcingDesign.svg"/>
|
||||
<substitute key="svg1" value="airepIcingDesign.svg"/>
|
||||
<substitute key="legend" value="PIREP Icing 180-260 hft"/>
|
||||
<substitute key="svg2" value="pirepIcingDesignSev.svg"/>
|
||||
<substitute key="svg3" value="airepIcingDesignSev.svg"/>
|
||||
<substitute key="between" value="18000--26000"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" file="bundles/PirepPlot.xml"
|
||||
|
@ -61,6 +71,8 @@
|
|||
<substitute key="svg0" value="pirepIcingDesign.svg"/>
|
||||
<substitute key="svg1" value="airepIcingDesign.svg"/>
|
||||
<substitute key="legend" value="PIREP Icing 260-500 hft"/>
|
||||
<substitute key="svg2" value="pirepIcingDesignSev.svg"/>
|
||||
<substitute key="svg3" value="airepIcingDesignSev.svg"/>
|
||||
<substitute key="between" value="26000--50000"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="titleItem"
|
||||
|
@ -70,6 +82,8 @@
|
|||
<substitute key="svg0" value="pirepTurbDesign.svg"/>
|
||||
<substitute key="svg1" value="airepTurbDesign.svg"/>
|
||||
<substitute key="legend" value="PIREP Turb 000-180 hft"/>
|
||||
<substitute key="svg2" value="pirepTurbDesignSev.svg"/>
|
||||
<substitute key="svg3" value="airepTurbDesignSev.svg"/>
|
||||
<substitute key="between" value="0--18000"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" file="bundles/PirepPlot.xml"
|
||||
|
@ -77,6 +91,8 @@
|
|||
<substitute key="svg0" value="pirepTurbDesign.svg"/>
|
||||
<substitute key="svg1" value="airepTurbDesign.svg"/>
|
||||
<substitute key="legend" value="PIREP Turb 180-260 hft"/>
|
||||
<substitute key="svg2" value="pirepTurbDesignSev.svg"/>
|
||||
<substitute key="svg3" value="airepTurbDesignSev.svg"/>
|
||||
<substitute key="between" value="18000--26000"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" file="bundles/PirepPlot.xml"
|
||||
|
@ -84,6 +100,8 @@
|
|||
<substitute key="svg0" value="pirepTurbDesign.svg"/>
|
||||
<substitute key="svg1" value="airepTurbDesign.svg"/>
|
||||
<substitute key="legend" value="PIREP Turb 260-500 hft"/>
|
||||
<substitute key="svg2" value="pirepTurbDesignSev.svg"/>
|
||||
<substitute key="svg3" value="airepTurbDesignSev.svg"/>
|
||||
<substitute key="between" value="26000--50000"/>
|
||||
</contribute>
|
||||
</menuTemplate>
|
|
@ -56,6 +56,32 @@ class AirepPlotDelegate(PlotDelegate):
|
|||
sampleString += turbType
|
||||
return sampleString
|
||||
|
||||
def isValid(self, rec):
|
||||
# DCS10257
|
||||
# need icing or hazard
|
||||
# only show non-severe / no severity
|
||||
if rec.isValidParameter("iceInten"):
|
||||
iceInten = rec.getString("iceInten")
|
||||
else:
|
||||
iceInten = ""
|
||||
if rec.isValidParameter("iceType"):
|
||||
iceType = rec.getString("iceType")
|
||||
else:
|
||||
iceType = ""
|
||||
if rec.isValidParameter("flightHazard"):
|
||||
flightHazard = rec.getInt("flightHazard")
|
||||
else:
|
||||
flightHazard = -1
|
||||
if (iceInten == "") and (iceType == "") and (flightHazard == -1):
|
||||
# no icing or hazard data
|
||||
return False
|
||||
elif (iceInten == "SEV") or (iceInten == "EXTRM") or (flightHazard == 8) or (flightHazard == 9):
|
||||
# incorrect severity/hazard level (from AIREPWeather)
|
||||
return False
|
||||
else:
|
||||
# low or no severity, and has some icing data
|
||||
return True
|
||||
|
||||
plotDelegate = AirepPlotDelegate()
|
||||
|
||||
</script>
|
||||
|
@ -83,6 +109,7 @@ plotDelegate = AirepPlotDelegate()
|
|||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="sampleParams1" plotMode="sample" plotParam="stationId,longitude,latitude,timeObs,flightLevel"> </text>
|
||||
<text id="sampleParams2" plotMode="sample" plotParam="temperature,windDir,windSpeed,turbInten,turbFreq,turbType"> </text>
|
||||
<text id="validityParams" plotMode="null" class="text" plotParam="iceType,iceInten" x="0" y="0" visibility="hidden">0</text>
|
||||
<text id="iceInensity" plotMode="table" class="weather" plotLookupTable="airep_icing_intens_trans.txt" plotParam="flightHazard" x="0" y="0">0</text>
|
||||
<text id="fltLvlText" plotMode="text" plotParam="flightLevel" plotFormat="%3.0f" plotUnit="hft" style="text-anchor: end;" x="-15px" y="0px">75</text>
|
||||
</symbol>
|
||||
|
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 4.5 KiB |
|
@ -0,0 +1,112 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="80" height="80"
|
||||
viewBox="0 0 80 80"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<script type="text/python" plotDelegate="plotDelegate">
|
||||
import time
|
||||
|
||||
class AirepPlotDelegate(PlotDelegate):
|
||||
def __init__(self):
|
||||
PlotDelegate.__init__(self)
|
||||
|
||||
def getSampleText(self, rec):
|
||||
sampleString = "ARP "
|
||||
sampleString += rec.getString("stationId")
|
||||
sampleString += " "
|
||||
lat = rec.getFloat("latitude")
|
||||
if(lat < 0):
|
||||
sampleString += "%.3fS " % (-1*lat)
|
||||
else:
|
||||
sampleString += "%.3fN " % (lat)
|
||||
lon = rec.getFloat("longitude")
|
||||
if(lon < 0):
|
||||
sampleString += "%.3fW " % (-1*lon)
|
||||
else:
|
||||
sampleString += "%.3fE " % (lon)
|
||||
timeObs = rec.getLong("timeObs")
|
||||
sampleString += time.strftime("%H%M",time.localtime(timeObs/1000))
|
||||
sampleString += " F%d" % (rec.getInt("flightLevel")/100)
|
||||
temp = rec.getFloat("temperature")
|
||||
if temp < -273.15:
|
||||
pass
|
||||
elif temp < 0:
|
||||
sampleString += " M%d" % (int(-1*temp))
|
||||
else:
|
||||
sampleString += " P%d" % (int(temp))
|
||||
windDir = int(rec.getFloat("windDir"))
|
||||
windSpeed = int(rec.getFloat("windSpeed"))
|
||||
if windDir > -1080 or windSpeed > 0:
|
||||
sampleString += " %d/%dKT" % (windDir, windSpeed)
|
||||
turbFreq = rec.getString("turbFreq")
|
||||
turbInten = rec.getString("turbInten")
|
||||
turbType = rec.getString("turbType")
|
||||
if turbFreq != "" or turbInten != "" or turbType != "":
|
||||
sampleString += " TB"
|
||||
if turbFreq != "":
|
||||
sampleString += " "
|
||||
sampleString += turbFreq
|
||||
if turbInten != "":
|
||||
sampleString += " "
|
||||
sampleString += turbInten
|
||||
if turbType != "":
|
||||
sampleString += " "
|
||||
sampleString += turbType
|
||||
return sampleString
|
||||
|
||||
def isValid(self, rec):
|
||||
# DCS10257
|
||||
# need icing severity or ice hazard
|
||||
# only show severe
|
||||
if rec.isValidParameter("iceInten"):
|
||||
iceInten = rec.getString("iceInten")
|
||||
else:
|
||||
iceInten = ""
|
||||
if rec.isValidParameter("flightHazard"):
|
||||
flightHazard = rec.getInt("flightHazard")
|
||||
else:
|
||||
flightHazard = -1
|
||||
if (iceInten == "SEV") or (iceInten == "EXTRM") or (flightHazard == 8) or (flightHazard == 9):
|
||||
# high severity/hazard level (from AIREPWeather)
|
||||
return True
|
||||
else:
|
||||
# low or no severity, and has some icing data
|
||||
return False
|
||||
|
||||
plotDelegate = AirepPlotDelegate()
|
||||
|
||||
</script>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="sampleParams1" plotMode="sample" plotParam="stationId,longitude,latitude,timeObs,flightLevel"> </text>
|
||||
<text id="sampleParams2" plotMode="sample" plotParam="temperature,windDir,windSpeed,turbInten,turbFreq,turbType"> </text>
|
||||
<text id="validityParams" plotMode="null" class="text" plotParam="iceType,iceInten" x="0" y="0" visibility="hidden">0</text>
|
||||
<text id="iceInensity" plotMode="table" class="weather" plotLookupTable="airep_icing_intens_trans.txt" plotParam="flightHazard" x="0" y="0">0</text>
|
||||
<text id="fltLvlText" plotMode="text" plotParam="flightLevel" plotFormat="%3.0f" plotUnit="hft" style="text-anchor: end;" x="-15px" y="0px">75</text>
|
||||
</symbol>
|
||||
|
||||
</defs>
|
||||
<use id="wind" x="40" y="40" width="80" height="80" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 4.2 KiB |
|
@ -56,6 +56,32 @@ class AirepPlotDelegate(PlotDelegate):
|
|||
sampleString += turbType
|
||||
return sampleString
|
||||
|
||||
def isValid(self, rec):
|
||||
# DCS10257
|
||||
# need some turbulence data
|
||||
# only show non-severe / no severity
|
||||
if rec.isValidParameter("turbInten"):
|
||||
turbInten = rec.getString("turbInten")
|
||||
else:
|
||||
turbInten = ""
|
||||
if rec.isValidParameter("turbFreq"):
|
||||
turbFreq = rec.getString("turbFreq")
|
||||
else:
|
||||
turbFreq = ""
|
||||
if rec.isValidParameter("turbType"):
|
||||
turbType = rec.getString("turbType")
|
||||
else:
|
||||
turbType = ""
|
||||
if (turbInten == "") and (turbFreq == "") and (turbType == ""):
|
||||
# no turbulence data present
|
||||
return False
|
||||
elif (turbInten == "SEV") or (turbInten == "EXTRM"):
|
||||
# turbulence data present, but not correct severity
|
||||
return False
|
||||
else:
|
||||
# turbulence data present, and if severity is present it is not high
|
||||
return True
|
||||
|
||||
plotDelegate = AirepPlotDelegate()
|
||||
|
||||
</script>
|
||||
|
@ -91,6 +117,7 @@ plotDelegate = AirepPlotDelegate()
|
|||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="sampleParams1" plotMode="sample" plotParam="stationId,longitude,latitude,timeObs,flightLevel"> </text>
|
||||
<text id="sampleParams2" plotMode="sample" plotParam="temperature,windDir,windSpeed,turbInten,turbFreq,turbType"> </text>
|
||||
<text id="validityParams" plotMode="null" class="text" plotParam="turbType" x="0" y="0" visibility="hidden">0</text>
|
||||
<text id="airepturbIntensity" plotMode="table" class="weather" plotLookupTable="turb_intens_trans.txt" plotParam="turbInten" x="0" y="0">0</text>
|
||||
<text id="airepturbFreq" plotMode="table" class="weather" plotLookupTable="turb_freq_trans.txt" plotParam="turbFreq" style="text-anchor: end" x="0" y="-10">0</text>
|
||||
<text id="airepfltLvlText" plotMode="text" plotParam="flightLevel" plotFormat="%3.0f" plotUnit="hft" style="text-anchor: end;" x="-15px" y="0px">75</text>
|
||||
|
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 4.8 KiB |
|
@ -0,0 +1,116 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="80" height="80"
|
||||
viewBox="0 0 80 80"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<script type="text/python" plotDelegate="plotDelegate">
|
||||
import time
|
||||
|
||||
class AirepPlotDelegate(PlotDelegate):
|
||||
def __init__(self):
|
||||
PlotDelegate.__init__(self)
|
||||
|
||||
def getSampleText(self, rec):
|
||||
sampleString = "ARP "
|
||||
sampleString += rec.getString("stationId")
|
||||
sampleString += " "
|
||||
lat = rec.getFloat("latitude")
|
||||
if(lat < 0):
|
||||
sampleString += "%.3fS " % (-1*lat)
|
||||
else:
|
||||
sampleString += "%.3fN " % (lat)
|
||||
lon = rec.getFloat("longitude")
|
||||
if(lon < 0):
|
||||
sampleString += "%.3fW " % (-1*lon)
|
||||
else:
|
||||
sampleString += "%.3fE " % (lon)
|
||||
timeObs = rec.getLong("timeObs")
|
||||
sampleString += time.strftime("%H%M",time.localtime(timeObs/1000))
|
||||
sampleString += " F%d" % (rec.getInt("flightLevel")/100)
|
||||
temp = rec.getFloat("temperature")
|
||||
if temp < -273.15:
|
||||
pass
|
||||
elif temp < 0:
|
||||
sampleString += " M%d" % (int(-1*temp))
|
||||
else:
|
||||
sampleString += " P%d" % (int(temp))
|
||||
windDir = int(rec.getFloat("windDir"))
|
||||
windSpeed = int(rec.getFloat("windSpeed"))
|
||||
if windDir > -1080 or windSpeed > 0:
|
||||
sampleString += " %d/%dKT" % (windDir, windSpeed)
|
||||
turbFreq = rec.getString("turbFreq")
|
||||
turbInten = rec.getString("turbInten")
|
||||
turbType = rec.getString("turbType")
|
||||
if turbFreq != "" or turbInten != "" or turbType != "":
|
||||
sampleString += " TB"
|
||||
if turbFreq != "":
|
||||
sampleString += " "
|
||||
sampleString += turbFreq
|
||||
if turbInten != "":
|
||||
sampleString += " "
|
||||
sampleString += turbInten
|
||||
if turbType != "":
|
||||
sampleString += " "
|
||||
sampleString += turbType
|
||||
return sampleString
|
||||
|
||||
def isValid(self, rec):
|
||||
# DCS10257
|
||||
# need some turbulence severity data
|
||||
# only show non-severe / no severity
|
||||
if rec.isValidParameter("turbInten"):
|
||||
turbInten = rec.getString("turbInten")
|
||||
else:
|
||||
turbInten = ""
|
||||
if (turbInten == "SEV") or (turbInten == "EXTRM"):
|
||||
# turbulence data present, high severity
|
||||
return True
|
||||
else:
|
||||
# turbulence data present, low severity
|
||||
return False
|
||||
|
||||
plotDelegate = AirepPlotDelegate()
|
||||
|
||||
</script>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="sampleParams1" plotMode="sample" plotParam="stationId,longitude,latitude,timeObs,flightLevel"> </text>
|
||||
<text id="sampleParams2" plotMode="sample" plotParam="temperature,windDir,windSpeed,turbInten,turbFreq,turbType"> </text>
|
||||
<text id="airepturbIntensity" plotMode="table" class="weather" plotLookupTable="turb_intens_trans.txt" plotParam="turbInten" x="0" y="0">0</text>
|
||||
<text id="airepturbFreq" plotMode="table" class="weather" plotLookupTable="turb_freq_trans.txt" plotParam="turbFreq" style="text-anchor: end" x="0" y="-10">0</text>
|
||||
<text id="airepfltLvlText" plotMode="text" plotParam="flightLevel" plotFormat="%3.0f" plotUnit="hft" style="text-anchor: end;" x="-15px" y="0px">75</text>
|
||||
</symbol>
|
||||
|
||||
</defs>
|
||||
<use id="wind" x="40" y="40" width="80" height="80" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 4.3 KiB |
|
@ -6,4 +6,5 @@ LGT : 125
|
|||
LGTMOD : 194
|
||||
MOD : 126
|
||||
MODSEV : 195
|
||||
SEV : 127
|
||||
SEV : 127
|
||||
EXTRM : 127
|
|
@ -5,6 +5,65 @@ overflow="visible"
|
|||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<script type="text/python" plotDelegate="plotDelegate">
|
||||
import time
|
||||
|
||||
class PirepIcingDelegate(PlotDelegate):
|
||||
def __init__(self):
|
||||
PlotDelegate.__init__(self)
|
||||
|
||||
def getSampleText(self, rec):
|
||||
# use obsText for pirep
|
||||
if rec.isValidParameter("obsText"):
|
||||
return rec.getString("obsText")
|
||||
# rebuild text for airep
|
||||
sampleString = "ARP "
|
||||
sampleString += " "
|
||||
sampleString += " F%d" % (rec.getInt("flightLevel")/100)
|
||||
|
||||
try:
|
||||
iceInten = rec.getString("iceInten")
|
||||
except ValueError:
|
||||
iceInten = ""
|
||||
try:
|
||||
iceType = rec.getString("iceType")
|
||||
except ValueError:
|
||||
icetype = ""
|
||||
if iceInten != "" or iceType != "":
|
||||
sampleString += " IC"
|
||||
if iceInten != "":
|
||||
sampleString += " "
|
||||
sampleString += iceInten
|
||||
if iceType != "":
|
||||
sampleString += " "
|
||||
sampleString += iceType
|
||||
return sampleString
|
||||
|
||||
def isValid(self, rec):
|
||||
# DCS10257
|
||||
# need icing data
|
||||
# only show non-severe / no severity
|
||||
if rec.isValidParameter("iceInten"):
|
||||
iceInten = rec.getString("iceInten")
|
||||
else:
|
||||
iceInten = ""
|
||||
if rec.isValidParameter("iceType"):
|
||||
iceType = rec.getString("iceType")
|
||||
else:
|
||||
iceType = ""
|
||||
if (iceInten == "") and (iceType == ""):
|
||||
# no icing data
|
||||
return False
|
||||
elif (iceInten == "SEV") or (iceInten == "EXTRM"):
|
||||
# incorrect severity
|
||||
return False
|
||||
else:
|
||||
# low or no severity, and has some icing data
|
||||
return True
|
||||
|
||||
plotDelegate = PirepIcingDelegate()
|
||||
|
||||
</script>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
|
@ -35,7 +94,8 @@ xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
|||
]]>
|
||||
</style>
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="sampleText" plotMode="sample" plotParam="obsText"> </text>
|
||||
<text id="sampleText" plotMode="sample" plotParam="obsText"> </text>
|
||||
<text id="validityParams" plotMode="null" class="text" plotParam="iceType" x="0" y="0" visibility="hidden">0</text>
|
||||
<text id="iceInensity" plotMode="table" class="weather" plotLookupTable="icing_intens_trans.txt" plotParam="iceInten" x="0" y="0">0</text>
|
||||
<text id="fltLvlText" plotMode="text" plotParam="flightLevel" plotFormat="%3.0f" plotUnit="hft" style="text-anchor: end;" x="-15px" y="0px">75</text>
|
||||
<text id="iceType" plotMode="table" class="weather" plotLookupTable="icing_type_trans.txt" plotParam="iceType" style="text-anchor: end" x="0" y="-10">0</text>
|
||||
|
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 3.6 KiB |
|
@ -0,0 +1,99 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="80" height="80"
|
||||
viewBox="0 0 80 80"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<script type="text/python" plotDelegate="plotDelegate">
|
||||
import time
|
||||
|
||||
class PirepIcingDelegate(PlotDelegate):
|
||||
def __init__(self):
|
||||
PlotDelegate.__init__(self)
|
||||
|
||||
def getSampleText(self, rec):
|
||||
# use obsText for pirep
|
||||
if rec.isValidParameter("obsText"):
|
||||
return rec.getString("obsText")
|
||||
# rebuild text for airep
|
||||
sampleString = "ARP "
|
||||
sampleString += " "
|
||||
sampleString += " F%d" % (rec.getInt("flightLevel")/100)
|
||||
|
||||
try:
|
||||
iceInten = rec.getString("iceInten")
|
||||
except ValueError:
|
||||
iceInten = ""
|
||||
try:
|
||||
iceType = rec.getString("iceType")
|
||||
except ValueError:
|
||||
icetype = ""
|
||||
if iceInten != "" or iceType != "":
|
||||
sampleString += " IC"
|
||||
if iceInten != "":
|
||||
sampleString += " "
|
||||
sampleString += iceInten
|
||||
if iceType != "":
|
||||
sampleString += " "
|
||||
sampleString += iceType
|
||||
return sampleString
|
||||
|
||||
def isValid(self, rec):
|
||||
# DCS10257
|
||||
# need icing severity data
|
||||
# only show severe
|
||||
if rec.isValidParameter("iceInten"):
|
||||
iceInten = rec.getString("iceInten")
|
||||
if (iceInten == "SEV") or (iceInten == "EXTRM"):
|
||||
# high severity
|
||||
return True
|
||||
else:
|
||||
# low or empty severity
|
||||
return False
|
||||
else:
|
||||
# no severity data
|
||||
return False
|
||||
|
||||
plotDelegate = PirepIcingDelegate()
|
||||
|
||||
</script>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="sampleText" plotMode="sample" plotParam="obsText"> </text>
|
||||
<text id="iceInensity" plotMode="table" class="weather" plotLookupTable="icing_intens_trans.txt" plotParam="iceInten" x="0" y="0">0</text>
|
||||
<text id="fltLvlText" plotMode="text" plotParam="flightLevel" plotFormat="%3.0f" plotUnit="hft" style="text-anchor: end;" x="-15px" y="0px">75</text>
|
||||
<text id="iceType" plotMode="table" class="weather" plotLookupTable="icing_type_trans.txt" plotParam="iceType" style="text-anchor: end" x="0" y="-10">0</text>
|
||||
</symbol>
|
||||
|
||||
</defs>
|
||||
<use id="wind" x="40" y="40" width="80" height="80" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 3.3 KiB |
|
@ -44,9 +44,19 @@ class PirepPlotDelegate(PlotDelegate):
|
|||
windSpeed = int(rec.getFloat("windSpeed"))
|
||||
if windDir > -1080 or windSpeed > 0:
|
||||
sampleString += " %d/%dKT" % (windDir, windSpeed)
|
||||
turbFreq = rec.getString("turbFreq")
|
||||
turbInten = rec.getString("turbInten")
|
||||
turbType = rec.getString("turbType")
|
||||
|
||||
try:
|
||||
turbFreq = rec.getString("turbFreq")
|
||||
except ValueError:
|
||||
turbFreq = ""
|
||||
try:
|
||||
turbInten = rec.getString("turbInten")
|
||||
except ValueError:
|
||||
turbInten = ""
|
||||
try:
|
||||
turbType = rec.getString("turbType")
|
||||
except ValueError:
|
||||
turbType = ""
|
||||
if turbFreq != "" or turbInten != "" or turbType != "":
|
||||
sampleString += " TB"
|
||||
if turbFreq != "":
|
||||
|
@ -58,7 +68,45 @@ class PirepPlotDelegate(PlotDelegate):
|
|||
if turbType != "":
|
||||
sampleString += " "
|
||||
sampleString += turbType
|
||||
|
||||
try:
|
||||
iceInten = rec.getString("iceInten")
|
||||
except ValueError:
|
||||
iceInten = ""
|
||||
try:
|
||||
iceType = rec.getString("iceType")
|
||||
except ValueError:
|
||||
icetype = ""
|
||||
if iceInten != "" or iceType != "":
|
||||
sampleString += " IC"
|
||||
if iceInten != "":
|
||||
sampleString += " "
|
||||
sampleString += iceInten
|
||||
if iceType != "":
|
||||
sampleString += " "
|
||||
sampleString += iceType
|
||||
return sampleString
|
||||
|
||||
def isValid(self, rec):
|
||||
# DCS10257
|
||||
# only show non-severe Turb/Ice data, non-UUA (urgent)
|
||||
if rec.isValidParameter("obsText"):
|
||||
obsText = rec.getString("obsText")
|
||||
if "UUA" in obsText:
|
||||
# urgent message
|
||||
return False
|
||||
if rec.isValidParameter("turbInten"):
|
||||
turbInten = rec.getString("turbInten")
|
||||
if (turbInten == "SEV") or (turbInten == "EXTRM"):
|
||||
# high severity turbulence
|
||||
return False
|
||||
if rec.isValidParameter("iceInten"):
|
||||
iceInten = rec.getString("iceInten")
|
||||
if (iceInten == "SEV") or (iceInten == "EXTRM"):
|
||||
# high severity turbulence, high severity icing
|
||||
return False
|
||||
# low or no severity, non-urgent data
|
||||
return True
|
||||
|
||||
plotDelegate = PirepPlotDelegate()
|
||||
|
||||
|
@ -92,7 +140,8 @@ plotDelegate = PirepPlotDelegate()
|
|||
</style>
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="sampleParams1" plotMode="sample" plotParam="obsText,stationId,longitude,latitude,timeObs,flightLevel"> </text>
|
||||
<text id="sampleParams2" plotMode="sample" plotParam="temperature,windDir,windSpeed,turbInten,turbFreq,turbType"> </text>
|
||||
<text id="sampleParams2" plotMode="sample" plotParam="temperature,windDir,windSpeed,turbInten,turbFreq,turbType,iceInten,iceType"> </text>
|
||||
<text id="validityParams" plotMode="null" class="text" plotParam="obsText,turbInten,iceInten" x="0" y="0" visibility="hidden">0</text>
|
||||
<text id="fltLvlText" plotMode="text" plotParam="flightLevel" plotFormat="%3.0f" plotUnit="hft" style="text-anchor: start;" x="10px" y="-10px">75</text>
|
||||
<text id="tempText" plotMode="text" plotParam="temperature" plotFormat="%3.0f" style="text-anchor: end;" x="-10px" y="-10px">75</text>
|
||||
<g id="windVaneText" plotMode="barb" plotParam="windSpeed,windDir" plotUnit="kts" x="0" y="0" transform="rotate(0,0,0)">
|
||||
|
|
Before Width: | Height: | Size: 4 KiB After Width: | Height: | Size: 5.8 KiB |
|
@ -0,0 +1,155 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="80" height="80"
|
||||
viewBox="0 0 80 80"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<script type="text/python" plotDelegate="plotDelegate">
|
||||
import time
|
||||
|
||||
class PirepPlotDelegate(PlotDelegate):
|
||||
def __init__(self):
|
||||
PlotDelegate.__init__(self)
|
||||
|
||||
def getSampleText(self, rec):
|
||||
# use obsText for pirep
|
||||
if rec.isValidParameter("obsText"):
|
||||
return rec.getString("obsText")
|
||||
# rebuild text for airep
|
||||
sampleString = "ARP "
|
||||
sampleString += rec.getString("stationId")
|
||||
sampleString += " "
|
||||
lat = rec.getFloat("latitude")
|
||||
if(lat < 0):
|
||||
sampleString += "%.3fS " % (-1*lat)
|
||||
else:
|
||||
sampleString += "%.3fN " % (lat)
|
||||
lon = rec.getFloat("longitude")
|
||||
if(lon < 0):
|
||||
sampleString += "%.3fW " % (-1*lon)
|
||||
else:
|
||||
sampleString += "%.3fE " % (lon)
|
||||
timeObs = rec.getLong("timeObs")
|
||||
sampleString += time.strftime("%H%M",time.localtime(timeObs/1000))
|
||||
sampleString += " F%d" % (rec.getInt("flightLevel")/100)
|
||||
temp = rec.getFloat("temperature")
|
||||
if temp < -273.15:
|
||||
pass
|
||||
elif temp < 0:
|
||||
sampleString += " M%d" % (int(-1*temp))
|
||||
else:
|
||||
sampleString += " P%d" % (int(temp))
|
||||
windDir = int(rec.getFloat("windDir"))
|
||||
windSpeed = int(rec.getFloat("windSpeed"))
|
||||
if windDir > -1080 or windSpeed > 0:
|
||||
sampleString += " %d/%dKT" % (windDir, windSpeed)
|
||||
|
||||
try:
|
||||
turbFreq = rec.getString("turbFreq")
|
||||
except ValueError:
|
||||
turbFreq = ""
|
||||
try:
|
||||
turbInten = rec.getString("turbInten")
|
||||
except ValueError:
|
||||
turbInten = ""
|
||||
try:
|
||||
turbType = rec.getString("turbType")
|
||||
except ValueError:
|
||||
turbType = ""
|
||||
if turbFreq != "" or turbInten != "" or turbType != "":
|
||||
sampleString += " TB"
|
||||
if turbFreq != "":
|
||||
sampleString += " "
|
||||
sampleString += turbFreq
|
||||
if turbInten != "":
|
||||
sampleString += " "
|
||||
sampleString += turbInten
|
||||
if turbType != "":
|
||||
sampleString += " "
|
||||
sampleString += turbType
|
||||
|
||||
try:
|
||||
iceInten = rec.getString("iceInten")
|
||||
except ValueError:
|
||||
iceInten = ""
|
||||
try:
|
||||
iceType = rec.getString("iceType")
|
||||
except ValueError:
|
||||
icetype = ""
|
||||
if iceInten != "" or iceType != "":
|
||||
sampleString += " IC"
|
||||
if iceInten != "":
|
||||
sampleString += " "
|
||||
sampleString += iceInten
|
||||
if iceType != "":
|
||||
sampleString += " "
|
||||
sampleString += iceType
|
||||
return sampleString
|
||||
|
||||
def isValid(self, rec):
|
||||
# DCS10257
|
||||
# only show non-severe Turb/Ice data, non-UUA (urgent)
|
||||
if rec.isValidParameter("obsText"):
|
||||
obsText = rec.getString("obsText")
|
||||
if "UUA" in obsText:
|
||||
# urgent message
|
||||
return True
|
||||
if rec.isValidParameter("turbInten"):
|
||||
turbInten = rec.getString("turbInten")
|
||||
if (turbInten == "SEV") or (turbInten == "EXTRM"):
|
||||
# high severity turbulence
|
||||
return True
|
||||
if rec.isValidParameter("iceInten"):
|
||||
iceInten = rec.getString("iceInten")
|
||||
if (iceInten == "SEV") or (iceInten == "EXTRM"):
|
||||
# high severity turbulence, high severity icing
|
||||
return True
|
||||
# low or no severity, non-urgent data
|
||||
return False
|
||||
|
||||
plotDelegate = PirepPlotDelegate()
|
||||
|
||||
</script>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="sampleParams1" plotMode="sample" plotParam="obsText,stationId,longitude,latitude,timeObs,flightLevel"> </text>
|
||||
<text id="sampleParams2" plotMode="sample" plotParam="temperature,windDir,windSpeed,turbInten,turbFreq,turbType,iceInten,iceType"> </text>
|
||||
<text id="validityParams" plotMode="null" class="text" plotParam="obsText,turbInten,iceInten" x="0" y="0" visibility="hidden">0</text>
|
||||
<text id="fltLvlText" plotMode="text" plotParam="flightLevel" plotFormat="%3.0f" plotUnit="hft" style="text-anchor: start;" x="10px" y="-10px">75</text>
|
||||
<text id="tempText" plotMode="text" plotParam="temperature" plotFormat="%3.0f" style="text-anchor: end;" x="-10px" y="-10px">75</text>
|
||||
<g id="windVaneText" plotMode="barb" plotParam="windSpeed,windDir" plotUnit="kts" x="0" y="0" transform="rotate(0,0,0)">
|
||||
<text id="windVaneText" class="arrow" x="0" y="0">0</text>
|
||||
<text id="windArrowText" class="barb" x="0" y="0">arrow</text>
|
||||
</g>
|
||||
</symbol>
|
||||
|
||||
</defs>
|
||||
<use id="wind" x="40" y="40" width="80" height="80" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 5.7 KiB |
|
@ -5,6 +5,65 @@ overflow="visible"
|
|||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<script type="text/python" plotDelegate="plotDelegate">
|
||||
import time
|
||||
|
||||
class PirepTurbDelegate(PlotDelegate):
|
||||
def __init__(self):
|
||||
PlotDelegate.__init__(self)
|
||||
|
||||
def getSampleText(self, rec):
|
||||
# use obsText for pirep
|
||||
if rec.isValidParameter("obsText"):
|
||||
return rec.getString("obsText")
|
||||
# rebuild text for airep
|
||||
sampleString = "ARP "
|
||||
sampleString += " "
|
||||
sampleString += " F%d" % (rec.getInt("flightLevel")/100)
|
||||
|
||||
try:
|
||||
turbFreq = rec.getString("turbFreq")
|
||||
except ValueError:
|
||||
turbFreq = ""
|
||||
try:
|
||||
turbInten = rec.getString("turbInten")
|
||||
except ValueError:
|
||||
turbInten = ""
|
||||
if turbInten != "" or turbFreq != "":
|
||||
sampleString += " TB"
|
||||
if turbInten != "":
|
||||
sampleString += " "
|
||||
sampleString += turbInten
|
||||
if turbFreq != "":
|
||||
sampleString += " "
|
||||
sampleString += turbFreq
|
||||
return sampleString
|
||||
|
||||
def isValid(self, rec):
|
||||
# DCS10257
|
||||
# need some turbulence data
|
||||
# only show non-severe
|
||||
if rec.isValidParameter("turbInten"):
|
||||
turbInten = rec.getString("turbInten")
|
||||
else:
|
||||
turbInten = ""
|
||||
if rec.isValidParameter("turbFreq"):
|
||||
turbFreq = rec.getString("turbFreq")
|
||||
else:
|
||||
turbFreq = ""
|
||||
if (turbInten == "") and (turbFreq == ""):
|
||||
# no turbulence data present
|
||||
return False
|
||||
elif (turbInten == "SEV") or (turbInten == "EXTRM"):
|
||||
# turbulence data present, but not correct severity
|
||||
return False
|
||||
else:
|
||||
# turbulence data present, and if severity is present it is not high
|
||||
return True
|
||||
|
||||
plotDelegate = PirepTurbDelegate()
|
||||
|
||||
</script>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
|
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 3.6 KiB |
|
@ -0,0 +1,99 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="80" height="80"
|
||||
viewBox="0 0 80 80"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<script type="text/python" plotDelegate="plotDelegate">
|
||||
import time
|
||||
|
||||
class PirepTurbDelegate(PlotDelegate):
|
||||
def __init__(self):
|
||||
PlotDelegate.__init__(self)
|
||||
|
||||
def getSampleText(self, rec):
|
||||
# use obsText for pirep
|
||||
if rec.isValidParameter("obsText"):
|
||||
return rec.getString("obsText")
|
||||
# rebuild text for airep
|
||||
sampleString = "ARP "
|
||||
sampleString += " "
|
||||
sampleString += " F%d" % (rec.getInt("flightLevel")/100)
|
||||
|
||||
try:
|
||||
turbFreq = rec.getString("turbFreq")
|
||||
except ValueError:
|
||||
turbFreq = ""
|
||||
try:
|
||||
turbInten = rec.getString("turbInten")
|
||||
except ValueError:
|
||||
turbInten = ""
|
||||
if turbInten != "" or turbFreq != "":
|
||||
sampleString += " TB"
|
||||
if turbInten != "":
|
||||
sampleString += " "
|
||||
sampleString += turbInten
|
||||
if turbFreq != "":
|
||||
sampleString += " "
|
||||
sampleString += turbFreq
|
||||
return sampleString
|
||||
|
||||
def isValid(self, rec):
|
||||
# DCS10257
|
||||
# need turbulence severity data
|
||||
# only show severe
|
||||
if rec.isValidParameter("turbInten"):
|
||||
turbInten = rec.getString("turbInten")
|
||||
if (turbInten == "SEV") or (turbInten == "EXTRM"):
|
||||
# high severity
|
||||
return True
|
||||
else:
|
||||
# low or empty severity
|
||||
return False
|
||||
else:
|
||||
# no turbulence severity data, so cannot have high turbulence severity
|
||||
return False
|
||||
|
||||
plotDelegate = PirepTurbDelegate()
|
||||
|
||||
</script>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="sampleText" plotMode="sample" plotParam="obsText"> </text>
|
||||
<text id="turbInensity" plotMode="table" class="weather" plotLookupTable="turb_intens_trans.txt" plotParam="turbInten" x="0" y="0">0</text>
|
||||
<text id="fltLvlText" plotMode="text" plotParam="flightLevel" plotFormat="%3.0f" plotUnit="hft" style="text-anchor: end;" x="-15px" y="0px">75</text>
|
||||
<text id="turbFreq" plotMode="table" class="weather" plotLookupTable="turb_freq_trans.txt" plotParam="turbFreq" style="text-anchor: end" x="0" y="-10">0</text>
|
||||
</symbol>
|
||||
|
||||
</defs>
|
||||
<use id="wind" x="40" y="40" width="80" height="80" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 3.4 KiB |