CSV File Conventions

CSV File Conventions

CSV files are text files and typically have the extension .txt, .dat or .csv . Each line in the file corresponds to a single vertex point of the geometric shape which is defined by the geographic coordinates as a mandatory file content. These coordinates must be stored in distinct columns (see below) separated by the 'tabulator' character (the 'semicolon' character in the special case of MERMAID extraction files, see here). A CSV file must have a header line as described below in order to specify column names (the only exception are SeaDAS 6.x track files which are another special case of CSV files, see here).

Formal Description of a valid CSV File

The formal description of a CSV File which SNAP will regard as 'valid' looks as follows:

        feature-format         := {<property-record> NL} <feature-type-record> {NL <feature-record>}
        feature-type-record    := {<feature-type-name>} {<sep> <attribute-header>}
        feature-record         := {<feature-id>}           {<sep> <attribute-value>}

        simple-format          := {<property-record> NL} <header-record>       {NL <data-record>}
        header-record          := <attribute-header> { <sep> <attribute-header>}
        data-record            := <attribute-value>  {<sep> <attribute-value>}

        attribute-header       := <attribute-name> [<attribute-type-spec>]
        attribute-type-spec    := ':'<attribute-type>
        property-record        := '#'<property-name> '=' <property-value>
        sep                    := TAB | [';' | ',', ...]  (TBC)
    

Comment Lines

The CSV dataset may contain introductory comment lines at the beginning of the file. These lines must start with a '#'.

Header Line

The header line follows after the last comment line. It contains column names which are also expected to be separated by the 'tabulator' character. Optionally, the name can be given together with a corresponding data type, which must be separated from the name by a ':'.

For a spatial interpretation of the given data, the CSV data must contain geo-information given as

If the CSV data set does not provide valid geoinformation as described above, the data set will be rejected as invalid.

Record Lines

The record lines follow after the header line. Each line contains a record with data values as specified by the column names and data types given in the header. All data values are also expected to be separated by the 'tabulator' character. The data types are either interpreted automatically or, if given, taken from the column data types in the header line.

If a column named 'Label' or 'label' is present in the CSV data, the corresponding entries will be drawn as label in the current view of the Sentinel Toolbox.

Examples for valid CSV Files

SNAP pin export table

        # SNAP pin export table
        #
        # Product:	subset_0_of_MER_RR__1PNPDK20030813_094018_000022742019_00022_07591_4499
        # Created on:	Thu Apr 26 11:14:57 CEST 2012

        Name	X	Y	Lon	        Lat	        Label   Desc
        pin_1	215.5	110.5	9.943068	43.09783	Pin 1   first
        pin_2	257.5	111.5	10.458842	42.990147	Pin 2   second
        pin_3	273.5	139.5	10.553919	42.664112	Pin 3   third
        pin_4	259.5	161.5	10.302726	42.470406	Pin 4   fourth
        pin_5	220.5	157.5	9.838505	42.601866	Pin 5   fifth
        pin_6	199.5	135.5	9.656987	42.87649	Pin 6   sixth
        pin_7	215.5	110.5	9.943068	43.09783	Pin 7   seventh
    

Internal SNAP pin CSV file

        #defaultCSS=symbol:pin; fill:#0000ff; fill-opacity:0.7; stroke:#ffffff; stroke-opacity:1.0; stroke-width:0.5
        org.esa.snap.Pin	geometry:Point	style_css:String	label:String	text:String	pixelPos:Point	geoPos:Point	dateTime:Date
        pin_1	POINT (3.011064291000366 43.2885627746582)	[null]	Pin 1		POINT (476.5 658.5)	POINT (3.011064291000366 43.2885627746582)	[null]
        pin_5	POINT (6.4610161781311035 45.858734130859375)	[null]	Pin 5		POINT (660.5 365.5)	POINT (6.4610161781311035 45.858734130859375)	[null]
        pin_2	POINT (3.9401633739471436 42.58957290649414)	[null]	Pin 2		POINT (565.5 706.5)	POINT (3.9401633739471436 42.58957290649414)	[null]
        pin_3	POINT (4.629702568054199 41.38515853881836)	[null]	Pin 3		POINT (651.5 803.5)	POINT (4.629702568054199 41.38515853881836)	[null]
        pin_4	POINT (3.0791780948638916 40.82112121582031)	[null]	Pin 4		POINT (545.5 882.5)	POINT (3.0791780948638916 40.82112121582031)	[null]
    

Two Multipolygons

        # MULTIPOLYGONs
        #
        # Product:	subset_1_MER_RR__1PQBCM20030809_101416_000002002018_00466_07534_0168
        # Created on:	Thu Apr 12 14:48:36 CEST 2012

        # Wavelength:							884.94403
        org.esa.snap.Multipolygon	Name:String	Geometry:MultiPolygon	radiance_14:Double
        0	multipolygon_1	MULTIPOLYGON (((10 47, 0 43, 6 40, 10 47)), ((2 39, 3 39, 2.5 38, 2 39)))	59.383057
        1	multipolygon_2	MULTIPOLYGON (((8 38, 2 45, 8 42, 8 38)), ((3 35, 5 36, 3.5 39, 3 35)))	59.383057