WSL/SLF GitLab Repository

Commit 4dc54baf authored by Mathias Bavay's avatar Mathias Bavay
Browse files

The missing images and sources for the class diagram have been committed as...

The missing images and sources for the class diagram have been committed as well as the SMET file format specification
parent 6ef083ec
\documentclass[a4paper,10pt]{article}
%opening
\title{Format specification for the SMET Weather Station Meteorological Data Format\\version 0.95}
\author{Mathias Bavay}
\begin{document}
\maketitle
\begin{abstract}
The goal of this data format is to ease the exchange of meteorological point measurements by providing both the data and the metadata in an easy to interpret and to manipulate format. Data manipulations should be possible manually using a standard text editor or using some tools (shell scripting, awk, perl, as well as spreadsheets, R, as well as stadard programing languages). The format is versioned, which means that format updates could break backward compatibility if necessary.
\end{abstract}
\section{Requirements}
\begin{itemize}
\item it should contain both data and metadata
\item it should be "self documented" (not regarding the format, but
regarding the data, ie we are not talking about schema!)
\item it should contain an arbitrary number of meteo parameters, for an
arbitrary number of time steps
\item it should support any kind of timsteps (ie: no fixed sampling rate)
\item it should be easy to parse with common languages and tools (ie:
fortran, c, c++, java, awk, perl, bash)
\item it should be easy to preview with common tools (ie: no
preprocessing needed even if losing a few timesteps/capability). Common
tools include R, gnuplot, Excel, Matlab
\item it should be possible to format it in a user friendly,
eyes-friendly way (read: columns alignment)
\item it should be extensible
\item it should be useful for a wide range of applications
\end{itemize}
\section{File structure}
The file is structured in three sections: a signature line as the very first line, followed by a header, followed by the data. Lines are [CR] or [CR][LF] or [LF] terminated. Comments are supported, starting with a "\verb # " or a ";" character and extending to the end of the line. A comment can follow values on a line. Empty lines can be found anywhere in the file (in the header as well as in the data).
\subsection{Signature}
The signature line is used to identify the file type, the file format specification version and the format type (ascii or binary). This signature has a fixed format in order to be easy to parse and the parser can reject any file that does not follow this signature or whose specification version does not match. However, the parsers are strongly encouraged to suppport past specifications and to try parsing more recent versions. The signature is formated as follow:
\begin{quote} \begin{verbatim}
{file identifier} {specification version} {file type}
\end{verbatim}\end{quote}
with:
\begin{itemize}
\item file identifier: fixed string "SMET"
\item specification version: decimal number
\item file type: string, either "ASCII" or "BINARY"
\item all fields separated by one and only one space
\end{itemize}
Example:
\begin{quote} \begin{verbatim}
SMET 0.95 ASCII
\end{verbatim}\end{quote}
\subsection{Header section}
The header section contains all the metadata. It starts by a section marker, that is the following fixed string, alone on a line, capitalized:
\begin{quote} \begin{verbatim}
[HEADER]
\end{verbatim}\end{quote}
Then, the header section purely consists of key-value pairs. Some keys are mandatory while other keys are optional. The general format for a key-value pair is the following:
\begin{quote} \begin{verbatim}
{key} = {value}
\end{verbatim}\end{quote}
with:
\begin{itemize}
\item key: any string of alphanumeric characters as well as "-\_:.", US-ASCII encoded
\item value: any string of character, UTF-8 encoded
\item the delimiter can be any mixture and any number of spaces and tabs (at least one)
\end{itemize}
The following keys are mandatory:
\begin{itemize}
\item station\_id: identifier for the station, any string
\item location information (see below)
\item nodata: nodata value that is used in the data section, decimal number
\item fields: string of spaces/tabs delimited field types.
\end{itemize}
The location information must be either one of the following keys:
\begin{itemize}
\item latitude: decimal latitude, decimal number
\item longitude: decimal longitude, decimal number
\item altitude: altitude above sea level, in meters, decimal number
\end{itemize}
OR
\begin{itemize}
\item easting: easting coordinate in a cartesian grid, decimal number
\item northing: northing coordinate in a cartesian grid, decimal number
\item altitude: altitude above sea level, in meters, decimal number
\item epsg: epgs coordinate system code, integer number
\end{itemize}
If both are specified, they must match to within +/-5m the same location. The location information can be written in each data line (adding the necessary columns) in case of a mobile station. In any case, the whole location data set must be either in the header or in the data section, with the exception of the epsg code always being in the header. Conversions between latitude/longitude and cartesian coordinate systems can be made using the Proj4 (or libproj4) software available at http://trac.osgeo.org/proj/\footnote{The conversion string is built similarly as what follow: cs2cs +init=epsg:\{epsg\_code\} +to +proj=latlong +datum=wgs84 +ellps=wgs84}.
The following are optional:
\begin{itemize}
\item station\_name: human readable name for the station, any string
\item tz: timezone of the measurements, decimal number positive going east. If not provided, utc is assumed
\item creation: timestamp of the file's creation date (ISO 8601 Combined date and time formatted)
\item source: string describing the origin of the file
\item units\_offset: a vector of decimal numbers to add to each value of the matching column
\item units\_multiplier: a vector of decimal numbers to mutiply each value of the matching column (AFTER potential offset addition)
\item comment: a free string to write any comment
\end{itemize}
The field tyes are measurement parameter identifier chosen from the following list: %%TODO: find standard naming scheme!
\begin{itemize}
\item TA
\item RH
\item ISWR \ldots
\item timestamp (ISO 8601 Combined date and time formatted)
\item julian. If both timestamps and julian are present, they must be within 1 second of each other.
\end{itemize}
\subsection{Data section}
The data section contains the data and starts with a section marker, that is the following fixed string, alone on a line, capitalized:
\begin{quote} \begin{verbatim}
[DATA]
\end{verbatim}\end{quote}
Each data point occupies one line and the fields are delimited by any mixture and number of spaces and tabs (at least one). All units are MKSA with the possible use of the above mentionned multipliers/offsets. The data is sorted by ascendant temporal order (the use of a timestamp as the first field makes an alphabetic ascending order equivalent to ascending temporal order).
\section{Format variations}
The file can be gzipped (as a whole). In such a case, only the gzip signature will be visible and the file will either need to be manually gunzipped before reading or read using libgzip (then giving access to the specific WSMDF signature). A binary version of the format is also available, the only difference with the ASCII version being that the data section (excluding the section marker) is coded as 32 bits IEEE754 single precision binary floating-point format. In such a case, no timestamp can be used, instead a julian date can be used (and must be coded as 64 bits IEEE754 double precision). Each data "line" must be terminated by a carriage return (\verb '\n' character).
\section{Example file}
\begin{quote} \begin{verbatim}
SMET 0.9 ASCII
[HEADER]
station_id = test_station
latitude = 46.5
longitude = 9.8
altitude = 1500
nodata = -999
tz = +01
fields = timestamp TA RH VW ISWR
units_offset = 0 273.15 0 0 0
units_multiplier = 1 1 0.01 1 1
[DATA]
2010-06-22T12:00:00 2.0 52 1.2 320.
2010-06-22T13:00:00 3.0 60 2.4 340.
2010-06-22T14:00:00 2.8 56 2.0 330.
\end{verbatim}\end{quote}
\end{document}
%!PS-Adobe-2.0 EPSF-2.0
%%Title: structure.fig
%%Creator: fig2dev Version 3.2 Patchlevel 5
%%CreationDate: Fri Jul 9 18:34:18 2010
%%For: bavay@linux2 (Mathias Bavay)
%%BoundingBox: 0 0 454 437
%Magnification: 0.5000
%%EndComments
%%BeginProlog
/$F2psDict 200 dict def
$F2psDict begin
$F2psDict /mtrx matrix put
/col-1 {0 setgray} bind def
/col0 {0.000 0.000 0.000 srgb} bind def
/col1 {0.000 0.000 1.000 srgb} bind def
/col2 {0.000 1.000 0.000 srgb} bind def
/col3 {0.000 1.000 1.000 srgb} bind def
/col4 {1.000 0.000 0.000 srgb} bind def
/col5 {1.000 0.000 1.000 srgb} bind def
/col6 {1.000 1.000 0.000 srgb} bind def
/col7 {1.000 1.000 1.000 srgb} bind def
/col8 {0.000 0.000 0.560 srgb} bind def
/col9 {0.000 0.000 0.690 srgb} bind def
/col10 {0.000 0.000 0.820 srgb} bind def
/col11 {0.530 0.810 1.000 srgb} bind def
/col12 {0.000 0.560 0.000 srgb} bind def
/col13 {0.000 0.690 0.000 srgb} bind def
/col14 {0.000 0.820 0.000 srgb} bind def
/col15 {0.000 0.560 0.560 srgb} bind def
/col16 {0.000 0.690 0.690 srgb} bind def
/col17 {0.000 0.820 0.820 srgb} bind def
/col18 {0.560 0.000 0.000 srgb} bind def
/col19 {0.690 0.000 0.000 srgb} bind def
/col20 {0.820 0.000 0.000 srgb} bind def
/col21 {0.560 0.000 0.560 srgb} bind def
/col22 {0.690 0.000 0.690 srgb} bind def
/col23 {0.820 0.000 0.820 srgb} bind def
/col24 {0.500 0.190 0.000 srgb} bind def
/col25 {0.630 0.250 0.000 srgb} bind def
/col26 {0.750 0.380 0.000 srgb} bind def
/col27 {1.000 0.500 0.500 srgb} bind def
/col28 {1.000 0.630 0.630 srgb} bind def
/col29 {1.000 0.750 0.750 srgb} bind def
/col30 {1.000 0.880 0.880 srgb} bind def
/col31 {1.000 0.840 0.000 srgb} bind def
end
/cp {closepath} bind def
/ef {eofill} bind def
/gr {grestore} bind def
/gs {gsave} bind def
/sa {save} bind def
/rs {restore} bind def
/l {lineto} bind def
/m {moveto} bind def
/rm {rmoveto} bind def
/n {newpath} bind def
/s {stroke} bind def
/sh {show} bind def
/slc {setlinecap} bind def
/slj {setlinejoin} bind def
/slw {setlinewidth} bind def
/srgb {setrgbcolor} bind def
/rot {rotate} bind def
/sc {scale} bind def
/sd {setdash} bind def
/ff {findfont} bind def
/sf {setfont} bind def
/scf {scalefont} bind def
/sw {stringwidth} bind def
/tr {translate} bind def
/tnt {dup dup currentrgbcolor
4 -2 roll dup 1 exch sub 3 -1 roll mul add
4 -2 roll dup 1 exch sub 3 -1 roll mul add
4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
bind def
/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
4 -2 roll mul srgb} bind def
/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
/$F2psEnd {$F2psEnteredState restore end} def
/pageheader {
save
newpath 0 437 moveto 0 0 lineto 454 0 lineto 454 437 lineto closepath clip newpath
6.4 442.9 translate
1 -1 scale
$F2psBegin
10 setmiterlimit
0 slj 0 slc
0.03150 0.03150 sc
} bind def
/pagefooter {
$F2psEnd
restore
} bind def
%%EndProlog
pageheader
%
% Fig objects follow
%
%
% here starts figure with depth 50
% Polyline
0 slj
0 slc
15.000 slw
n 1575 3330 m 2115 3330 l 2115 1530 l 1575 1530 l
cp gs col0 s gr
% Polyline
n 2475 3330 m 3015 3330 l 3015 1530 l 2475 1530 l
cp gs col0 s gr
% Polyline
n 3375 3330 m 3915 3330 l 3915 1530 l 3375 1530 l
cp gs col0 s gr
% Polyline
n 4275 3330 m 4815 3330 l 4815 1530 l 4275 1530 l
cp gs col0 s gr
% Polyline
n 5175 3330 m 5715 3330 l 5715 1530 l 5175 1530 l
cp gs col0 s gr
% Polyline
n 6075 3330 m 6615 3330 l 6615 1530 l 6075 1530 l
cp gs col0 s gr
% Polyline
n 6975 3330 m 7515 3330 l 7515 1530 l 6975 1530 l
cp gs col0 s gr
% Polyline
n 7875 3330 m 8415 3330 l 8415 1530 l 7875 1530 l
cp gs col0 s gr
% Polyline
n 8775 3330 m 9315 3330 l 9315 1530 l 8775 1530 l
cp gs col0 s gr
% Polyline
n 9675 3330 m 10215 3330 l 10215 1530 l 9675 1530 l
cp gs col0 s gr
% Polyline
n 10530 3330 m 11070 3330 l 11070 1530 l 10530 1530 l
cp gs col0 s gr
% Polyline
n 9765 13365 m 13860 13365 l 13860 14040 l 9765 14040 l
cp gs col0 s gr
% Polyline
n 405 9990 m 4500 9990 l 4500 10665 l 405 10665 l
cp gs col0 s gr
% Polyline
gs clippath
2520 10878 m 2520 10650 l 2430 10650 l 2430 10878 l 2430 10878 l 2475 10698 l 2520 10878 l cp
eoclip
n 2475 11115 m
2475 10665 l gs col0 s gr gr
% arrowhead
n 2520 10878 m 2475 10698 l 2430 10878 l col0 s
% Polyline
n 405 11115 m 4500 11115 l 4500 11790 l 405 11790 l
cp gs col0 s gr
% Polyline
gs clippath
2520 12003 m 2520 11775 l 2430 11775 l 2430 12003 l 2430 12003 l 2475 11823 l 2520 12003 l cp
eoclip
n 2475 12240 m
2475 11790 l gs col0 s gr gr
% arrowhead
n 2520 12003 m 2475 11823 l 2430 12003 l col0 s
% Polyline
n 405 12240 m 4500 12240 l 4500 12915 l 405 12915 l
cp gs col0 s gr
% Polyline
gs clippath
2520 13128 m 2520 12900 l 2430 12900 l 2430 13128 l 2430 13128 l 2475 12948 l 2520 13128 l cp
eoclip
n 2475 13365 m
2475 12915 l gs col0 s gr gr
% arrowhead
n 2520 13128 m 2475 12948 l 2430 13128 l col0 s
% Polyline
n 405 13365 m 4500 13365 l 4500 14040 l 405 14040 l
cp gs col0 s gr
% Polyline
n 5085 12240 m 9180 12240 l 9180 12915 l 5085 12915 l
cp gs col0 s gr
% Polyline
n 5085 13365 m 9180 13365 l 9180 14040 l 5085 14040 l
cp gs col0 s gr
% Polyline
gs clippath
7245 13128 m 7245 12900 l 7155 12900 l 7155 13128 l 7155 13128 l 7200 12948 l 7245 13128 l cp
eoclip
n 7200 13365 m
7200 12915 l gs col0 s gr gr
% arrowhead
n 7245 13128 m 7200 12948 l 7155 13128 l col0 s
% Polyline
n 9810 9000 m 13905 9000 l 13905 9675 l 9810 9675 l
cp gs col0 s gr
% Polyline
n 9810 10080 m 13905 10080 l 13905 10755 l 9810 10755 l
cp gs col0 s gr
% Polyline
n 9810 11205 m 13905 11205 l 13905 11880 l 9810 11880 l
cp gs col0 s gr
% Polyline
[90] 0 sd
n 1575 225 m 11070 225 l 11070 900 l 1575 900 l
cp gs col0 s gr [] 0 sd
% Polyline
gs clippath
1755 3567 m 1755 3795 l 1845 3795 l 1845 3567 l 1845 3567 l 1800 3747 l 1755 3567 l cp
eoclip
n 1800 3330 m
1800 3780 l gs col0 s gr gr
% arrowhead
n 1755 3567 m 1800 3747 l 1845 3567 l col0 s
% Polyline
gs clippath
2655 3567 m 2655 3795 l 2745 3795 l 2745 3567 l 2745 3567 l 2700 3747 l 2655 3567 l cp
eoclip
n 2700 3330 m
2700 3780 l gs col0 s gr gr
% arrowhead
n 2655 3567 m 2700 3747 l 2745 3567 l col0 s
% Polyline
gs clippath
3555 3567 m 3555 3795 l 3645 3795 l 3645 3567 l 3645 3567 l 3600 3747 l 3555 3567 l cp
eoclip
n 3600 3330 m
3600 3780 l gs col0 s gr gr
% arrowhead
n 3555 3567 m 3600 3747 l 3645 3567 l col0 s
% Polyline
gs clippath
4455 3567 m 4455 3795 l 4545 3795 l 4545 3567 l 4545 3567 l 4500 3747 l 4455 3567 l cp
eoclip
n 4500 3330 m
4500 3780 l gs col0 s gr gr
% arrowhead
n 4455 3567 m 4500 3747 l 4545 3567 l col0 s
% Polyline
gs clippath
5355 3567 m 5355 3795 l 5445 3795 l 5445 3567 l 5445 3567 l 5400 3747 l 5355 3567 l cp
eoclip
n 5400 3330 m
5400 3780 l gs col0 s gr gr
% arrowhead
n 5355 3567 m 5400 3747 l 5445 3567 l col0 s
% Polyline
gs clippath
6255 3567 m 6255 3795 l 6345 3795 l 6345 3567 l 6345 3567 l 6300 3747 l 6255 3567 l cp
eoclip
n 6300 3330 m
6300 3780 l gs col0 s gr gr
% arrowhead
n 6255 3567 m 6300 3747 l 6345 3567 l col0 s
% Polyline
gs clippath
7155 3567 m 7155 3795 l 7245 3795 l 7245 3567 l 7245 3567 l 7200 3747 l 7155 3567 l cp
eoclip
n 7200 3330 m
7200 3780 l gs col0 s gr gr
% arrowhead
n 7155 3567 m 7200 3747 l 7245 3567 l col0 s
% Polyline
gs clippath
8055 3567 m 8055 3795 l 8145 3795 l 8145 3567 l 8145 3567 l 8100 3747 l 8055 3567 l cp
eoclip
n 8100 3330 m
8100 3780 l gs col0 s gr gr
% arrowhead
n 8055 3567 m 8100 3747 l 8145 3567 l col0 s
% Polyline
gs clippath
8955 3567 m 8955 3795 l 9045 3795 l 9045 3567 l 9045 3567 l 9000 3747 l 8955 3567 l cp
eoclip
n 9000 3330 m
9000 3780 l gs col0 s gr gr
% arrowhead
n 8955 3567 m 9000 3747 l 9045 3567 l col0 s
% Polyline
gs clippath
9855 3567 m 9855 3795 l 9945 3795 l 9945 3567 l 9945 3567 l 9900 3747 l 9855 3567 l cp
eoclip
n 9900 3330 m
9900 3780 l gs col0 s gr gr
% arrowhead
n 9855 3567 m 9900 3747 l 9945 3567 l col0 s
% Polyline
gs clippath
10755 3567 m 10755 3795 l 10845 3795 l 10845 3567 l 10845 3567 l 10800 3747 l 10755 3567 l cp
eoclip
n 10800 3330 m
10800 3780 l gs col0 s gr gr
% arrowhead
n 10755 3567 m 10800 3747 l 10845 3567 l col0 s
% Polyline
n 12375 3780 m 14175 3780 l 14175 4455 l 12375 4455 l
cp gs col0 s gr
% Polyline
n 1575 3780 m 11070 3780 l 11070 4455 l 1575 4455 l
cp gs col0 s gr
% Polyline
gs clippath
11283 4095 m 11055 4095 l 11055 4185 l 11283 4185 l 11283 4185 l 11103 4140 l 11283 4095 l cp
eoclip
n 12375 4140 m
11070 4140 l gs col0 s gr gr
% arrowhead
n 11283 4095 m 11103 4140 l 11283 4185 l col0 s
% Polyline
gs clippath
6255 4692 m 6255 4920 l 6345 4920 l 6345 4692 l 6345 4692 l 6300 4872 l 6255 4692 l cp
eoclip
n 6300 4455 m
6300 4905 l gs col0 s gr gr
% arrowhead
n 6255 4692 m 6300 4872 l 6345 4692 l col0 s
% Polyline
n 1575 3780 m 11070 3780 l 11070 4455 l 1575 4455 l
cp gs col0 s gr
% Polyline
n 1575 3780 m 11070 3780 l 11070 4455 l 1575 4455 l
cp gs col0 s gr
% Polyline
n 1575 3780 m 11070 3780 l 11070 4455 l 1575 4455 l
cp gs col0 s gr
% Polyline
n 1575 3780 m 11070 3780 l 11070 4455 l 1575 4455 l
cp gs col0 s gr
% Polyline
n 1575 3780 m 11070 3780 l 11070 4455 l 1575 4455 l
cp gs col0 s gr
% Polyline
n 1575 3780 m 11070 3780 l 11070 4455 l 1575 4455 l
cp gs col0 s gr
% Polyline
n 1575 3780 m 11070 3780 l 11070 4455 l 1575 4455 l
cp gs col0 s gr
% Polyline
n 1575 3780 m 11070 3780 l 11070 4455 l 1575 4455 l
cp gs col0 s gr
% Polyline
n 1575 3780 m 11070 3780 l 11070 4455 l 1575 4455 l
cp gs col0 s gr
% Polyline
n 1575 3780 m 11070 3780 l 11070 4455 l 1575 4455 l
cp gs col0 s gr
% Polyline
n 1575 3780 m 11070 3780 l 11070 4455 l 1575 4455 l
cp gs col0 s gr
% Polyline
n 1575 3780 m 11070 3780 l 11070 4455 l 1575 4455 l
cp gs col0 s gr
% Polyline
n 1575 3780 m 11070 3780 l 11070 4455 l 1575 4455 l
cp gs col0 s gr
% Polyline
n 1575 3780 m 11070 3780 l 11070 4455 l 1575 4455 l
cp gs col0 s gr
% Polyline
n 1575 3780 m 11070 3780 l 11070 4455 l 1575 4455 l
cp gs col0 s gr
% Polyline
n 1575 3780 m 11070 3780 l 11070 4455 l 1575 4455 l
cp gs col0 s gr
% Polyline
n 1575 3780 m 11070 3780 l 11070 4455 l 1575 4455 l
cp gs col0 s gr
% Polyline
n 1575 3780 m 11070 3780 l 11070 4455 l 1575 4455 l
cp gs col0 s gr
% Polyline
n 1575 3780 m 11070 3780 l 11070 4455 l 1575 4455 l
cp gs col0 s gr
% Polyline
n 1575 3780 m 11070 3780 l 11070 4455 l 1575 4455 l
cp gs col0 s gr
% Polyline
n 1575 3780 m 11070 3780 l 11070 4455 l 1575 4455 l
cp gs col0 s gr
% Polyline
n 1575 3780 m 11070 3780 l 11070 4455 l 1575 4455 l
cp gs col0 s gr
% Polyline
n 1575 4950 m 11070 4950 l 11070 5625 l 1575 5625 l
cp gs col0 s gr
% Polyline
n 1575 6075 m 4050 6075 l 4050 6750 l 1575 6750 l
cp gs col0 s gr
% Polyline
gs clippath
2835 6963 m 2835 6735 l 2745 6735 l 2745 6963 l 2745 6963 l 2790 6783 l 2835 6963 l cp
eoclip
n 4590 7245 m 4590 7110 l 2790 7110 l
2790 6750 l gs col0 s gr gr
% arrowhead
n 2835 6963 m 2790 6783 l 2745 6963 l col0 s
% Polyline
gs clippath
2835 6963 m 2835 6735 l 2745 6735 l 2745 6963 l 2745 6963 l 2790 6783 l 2835 6963 l cp
eoclip
n 1035 7200 m 1035 7110 l 2790 7110 l
2790 6750 l gs col0 s gr gr
% arrowhead
n 2835 6963 m 2790 6783 l 2745 6963 l col0 s
% Polyline
n 3195 7245 m 5940 7245 l 5940 7920 l 3195 7920 l
cp gs col0 s gr
% Polyline
gs clippath
4590 8133 m 4590 7905 l 4500 7905 l 4500 8133 l 4500 8133 l 4545 7953 l 4590 8133 l cp
eoclip
n 4545 8370 m
4545 7920 l gs col0 s gr gr
% arrowhead
n 4590 8133 m 4545 7953 l 4500 8133 l col0 s
% Polyline
n -180 7200 m 2295 7200 l 2295 7875 l -180 7875 l
cp gs col0 s gr
% Polyline
gs clippath
1080 8088 m 1080 7860 l 990 7860 l 990 8088 l 990 8088 l 1035 7908 l 1080 8088 l cp
eoclip
n 1035 8325 m
1035 7875 l gs col0 s gr gr
% arrowhead
n 1080 8088 m 1035 7908 l 990 8088 l col0 s
% Polyline
n -180 8325 m 2295 8325 l 2295 9000 l -180 9000 l
cp gs col0 s gr
% Polyline
n 3015 8370 m 6120 8370 l 6120 9045 l 3015 9045 l
cp gs col0 s gr
% Polyline
gs clippath
2835 5838 m 2835 5610 l 2745 5610 l 2745 5838 l 2745 5838 l 2790 5658 l 2835 5838 l cp
eoclip
n 2790 6075 m
2790 5625 l gs col0 s gr gr
% arrowhead
n 2835 5838 m 2790 5658 l 2745 5838 l col0 s
% Polyline
gs clippath