SlideShare a Scribd company logo
MeteoIO


A meteo data I/O library
Before MeteoIO...
• Each application doing its IO
  – Insufficient robustness
  – IO functions spread out all over the code
  – Input data very strictly formatted, several
    steps in preparing the data
  – Hard to adapt to new protocols/formats
→IO a source of weakness...


                                                  2
MeteoIO: goals
• Remove all IO functions out of the
  physics engine
• Make IO easy to use
• Make IO robust
• Make IO flexible
• Greatly simplify data preparation
• Allow unmonitored, automatic operation
• Allow end user to fine tune his IO...
                                           3
MeteoIO: ini files
[Parameters]
DEMSRC            = ARC
DEMFILE           = ../input/surface-grids/zwischberg.dem


LANDUSESRC        = GRASS
LANDUSEFILE       = ../input/surface-grids/zwischberg.lus   plugins

METEOSRC          = A3D
METEOPATH         = ../input/meteo


SPECIALPTSSRC = A3D
SPECIALPTSFILE = ../input/surface-grids/zwischberg.pts


OUTPUT            = ARC
OUTPATH           = ../output/
                                                                      4
MeteoIO: primary data structures
• MeteoData:                       • StationData:
  – Date object                      – Longitude
  – Ta                               – Latitude
  – Iswr                             – Altitude
  – Vw                               – Northing (metric grid)
  – Rh                               – Easting (metric grid)
  – Lwr                              – Name
  – Nswc                             – Supports equality comparison
  – Ts0
  – P
  – ...
  – Supports equality comparison


                                                                      5
MeteoIO: example of use




                          6
What is it doing?
• Parsing io.ini
• Loading plugins supporting requested data sources
• Reading data (across files, network, protocols and
  supporting comments, different EOL, etc)
• Converts stations' coordinates if necessary
• Filtering data, marking invalid data as “no data”
• Conversion of units to SI




                                                       7
Example: output
[i] meteoio/A3DIO.cc:86: Loading dynamic plugins:
[i] Number of 2D meteo stations: 15
---------- Station: 1 / 16
Name:
 Air Temperature: 266.25              This station has no name
---------- Station: 2 / 16
 Name: ANET-ZER
 Air Temperature: 266.45
---------- Station: 3 / 16
 Name: ANET-VIS
 Air Temperature: 268.75
                                       (etc)


                                                                 8
Data sources
• Currently supported:
  – Meteo data: Alpine3D's Ascii, Boschung's
    XML, Gsn, Imis Oracle database, GeoTop
  – Grids: ARC, GRASS




                                               9
Writing a new IO plugin
• Provide implementation of some or all of:
ReadMeteoData (const Date_IO& dateStart, const Date_IO& dateEnd,
   std::vector< std::vector<MeteoData> >& vecMeteo, std::vector<
   std::vector<StationData> >& vecStation, const unsigned int&
   stationindex=IOUtils::npos)
Read2DGrid (Grid2DObject& grid_out, const string& parameter="")
ReadDEM (DEMObject& dem_out)
ReadLanduse (Grid2DObject& landuse_out)
ReadAssimilationData (const Date_IO& date_in, Grid2DObject& da_out)
ReadSpecialPoints (CSpecialPTSArray& pts)
Write2DGrid (const Grid2DObject& grid_in, const string& name="")



                                                                      10
Filters
• Available:
  – Min, max
  – Max observed changed
  – No observed change
• To be added:
  – Median Average Deviation
• Special processing
  – Resampling
  – accumulation
• Easy to add new filters      11
MeteoIO: example of use II




                             12
What does it change?
• IO are now buffered -> efficient on slow
  access
• Automatic resampling for missing data
  – Using linear interpolation between two
    neighbors
  – To be added: cyclic interpolation, etc




                                             13
Userland addition
In the user's code: add a function checking
     that the input requirements are met
         (ie: nb of lwr, nb of ta, etc)




                                          14
Data structures/methods
• Array, Array2D, Array3D
  – Using vectors for a safe and efficient
    implementation
• Grid2DObject, Grid3DObject
  – Geolocalized array
• DEMObject
  – Computes slope, aspect, normal's
    components (Corripio, Hicks, etc)

                                             15
MeteoIO: example of use III




                              16
MeteoIO: example of use IV




                             17
TA, 0 to 16°                    RH, 62% to 90%




  Gotthard, 2008­10­01 12:00, 19 stations        18
Spatial interpolations
• Available methods:
   – Std pressure
   – Constant value
   – Constant with lapse rate
   – IDW
   – IDW with lapse rate
   – For Rh, Td IDWK with lapse rate and back to Rh
   – Terrain influenced VW and DW

• One method defined for only 1 data input, one for
  multiple data input (fallback)
• Regression:
   – Linear regression for the moment, removes the worst data point if the
     regression is too poor

                                                                             19
Spatial interpolations 2
Planned additions:
  – Physical wind interpolation (quick Bernoulli
    resolution?)
  – More regression models (dynamically
    adjusted to the data)
  – Smarter choice of which method to use
    (dynamic, including data quality)



                                                   20
Geographic projections
• Conversion to/from WGS84 from any
  coordinate system
  – Through own implementation (CH1903, ...)
  – Through proj4 library
• Conversion to/from local grid
 MapProj local_proj(lat_ref, long_ref);
 local_proj.convert_from_WGS84(latitude, longitude, easting,
  northing);



                                                           21
MeteoIO: on the side
• Date handling (Date_IO class)
• Config files handling (ConfigReader
  class)
• Data storage (Arrays & grids classes,
  sparse matrix (coming))
• Ported to Pop-C++ for parallel execution
• Application specific IOs classes


                                             22
Thank you!
       Mathias Bavay (SLF)
Thomas Egger (Egger Consulting)
   Laurent Winkler (HES-SO)
        Florian Hof (SLF)
   Moustapha Mbengue (SLF)
     Gael Rosset (HES-SO)
   Julien Jeanneret (HES-SO)
        Nora Helbig (SLF)
                                  23

More Related Content

PDF
Basic use of xcms
PDF
Miniaturizing Space: Small-satellites
PDF
Access to Open Earth Observation Data, an Overview and Outlook Raymond Sluit...
PDF
Partitioning SKA Dataflows for Optimal Graph Execution
PDF
The Rise of Small Satellites
PPTX
SmartMet Server OSGeo
PDF
4. empirical and practical issues
PPTX
FMI Open Data Interface and Usage
Basic use of xcms
Miniaturizing Space: Small-satellites
Access to Open Earth Observation Data, an Overview and Outlook Raymond Sluit...
Partitioning SKA Dataflows for Optimal Graph Execution
The Rise of Small Satellites
SmartMet Server OSGeo
4. empirical and practical issues
FMI Open Data Interface and Usage

What's hot (20)

PPTX
WMTS Performance Tests
PPTX
CLIWOC Attributes
PDF
Detecting probability of ice formation on overhead lines of the Dutch railway...
PDF
Introduction to HDFLook_MODIS
PPTX
Paralell
PDF
Deccan RubyConf 2016 - Lighning Talk - SpiceRub
PPTX
Gagg: A graph Aggregation Operator
PDF
SX Aurora TSUBASA (Vector Engine) a Brand-new Vector Supercomputing power in...
PPTX
Oss vs drive test pdcp throughput
PPTX
distance_matrix_ch
PDF
Development of Routing for Car Navigation Systems
PPTX
SMiLE: Design and Development of an ISS Payload for Liquid Behavior Study in ...
PPTX
Making data storage more efficient
PDF
Adopting OGC Standards in São Paulo Flood Alert System - FOSS4G 2014 - PDX
PPT
PDF
Innovative Solar Array Drive Assembly for CubeSat Satellite
PDF
Briefing - The Atlast V Aft Bulkhead Carrier Update - Past Missions, Upcoming...
PPTX
A Highly Parallel Semi-Dataflow FPGA Architecture for Large-Scale N-Body Simu...
PDF
HDF-EOS Development Status and Maintenance Support
PPTX
ESCAPE Kick-off meeting - KM3Net, Opening a new window on our universe (Feb 2...
WMTS Performance Tests
CLIWOC Attributes
Detecting probability of ice formation on overhead lines of the Dutch railway...
Introduction to HDFLook_MODIS
Paralell
Deccan RubyConf 2016 - Lighning Talk - SpiceRub
Gagg: A graph Aggregation Operator
SX Aurora TSUBASA (Vector Engine) a Brand-new Vector Supercomputing power in...
Oss vs drive test pdcp throughput
distance_matrix_ch
Development of Routing for Car Navigation Systems
SMiLE: Design and Development of an ISS Payload for Liquid Behavior Study in ...
Making data storage more efficient
Adopting OGC Standards in São Paulo Flood Alert System - FOSS4G 2014 - PDX
Innovative Solar Array Drive Assembly for CubeSat Satellite
Briefing - The Atlast V Aft Bulkhead Carrier Update - Past Missions, Upcoming...
A Highly Parallel Semi-Dataflow FPGA Architecture for Large-Scale N-Body Simu...
HDF-EOS Development Status and Maintenance Support
ESCAPE Kick-off meeting - KM3Net, Opening a new window on our universe (Feb 2...
Ad

Similar to Meteo I/O Introduction (20)

PDF
Meteoio Introduction given by Mathias Bavey in Bozen
PPTX
High-Volume Data Collection and Real Time Analytics Using Redis
PPT
BWC Supercomputing 2008 Presentation
PPTX
Programmable Exascale Supercomputer
PDF
Toolchain for real-time simulations: GSN-MeteoIO-GEOtop
PPTX
Exascale Capabl
PDF
A Scalable and Distributed Electrical Power Monitoring System Utilizing Cloud...
PPTX
Development and Applications of Distributed IoT Sensors for Intermittent Conn...
PDF
Working with HDF and netCDF Data in ArcGIS: Tools and Case Studies
PDF
A Low-cost and Scalable Visualization System for Electricity Consumption
PPTX
Grafana in space: Monitoring Japan's SLIM moon lander in real time
PDF
New features in the version 4.6 of the CFD meteodyn WT dedicated to wind reso...
PDF
The world is the computer and the programmer is you
PDF
Dsd int 2014 - data science symposium - application 1 - point clouds, prof. p...
PPTX
FMI Information Management System
PDF
National Polar-orbiting Operational Environmental Satellite System (NPOESS)
PPTX
Road Monitoring - 2019 - IoT@Sapienza - v3
PDF
C2MON - A highly scalable monitoring platform for Big Data scenarios @CERN by...
PPTX
Enabling efficient movement of data into & out of a high-performance analysis...
PPTX
Klessydra t - designing vector coprocessors for multi-threaded edge-computing...
Meteoio Introduction given by Mathias Bavey in Bozen
High-Volume Data Collection and Real Time Analytics Using Redis
BWC Supercomputing 2008 Presentation
Programmable Exascale Supercomputer
Toolchain for real-time simulations: GSN-MeteoIO-GEOtop
Exascale Capabl
A Scalable and Distributed Electrical Power Monitoring System Utilizing Cloud...
Development and Applications of Distributed IoT Sensors for Intermittent Conn...
Working with HDF and netCDF Data in ArcGIS: Tools and Case Studies
A Low-cost and Scalable Visualization System for Electricity Consumption
Grafana in space: Monitoring Japan's SLIM moon lander in real time
New features in the version 4.6 of the CFD meteodyn WT dedicated to wind reso...
The world is the computer and the programmer is you
Dsd int 2014 - data science symposium - application 1 - point clouds, prof. p...
FMI Information Management System
National Polar-orbiting Operational Environmental Satellite System (NPOESS)
Road Monitoring - 2019 - IoT@Sapienza - v3
C2MON - A highly scalable monitoring platform for Big Data scenarios @CERN by...
Enabling efficient movement of data into & out of a high-performance analysis...
Klessydra t - designing vector coprocessors for multi-threaded edge-computing...
Ad

More from Riccardo Rigon (20)

PDF
Models for hazards mapping
PDF
A short introduction to some hydrological extreme phenomena
PDF
EvaporAzione
PDF
Francesco Serafin
PDF
Meledrio
PDF
Lisbon talk for SteepStreams
PDF
Grids implementation
PDF
PDF
Some photos from the field
PDF
Virtual water fem 07032017
PDF
Dalton Prize Lecture 2017 by Dani Or
PDF
Projecting Climate Change Impacts on Water Resources in Regions of Complex To...
PDF
The modern flood forecasting
PDF
La moderna previsione delle piene
PDF
Hydrological Extremes and Human societies
PDF
The Science of Water Transport and Floods from Theory to Relevant Application...
PDF
The Science of Water Transport and Floods from Theory to Relevant Applications
PDF
Climaware at the end
PDF
Hymod model for catchments
PDF
Egu2017 pico
Models for hazards mapping
A short introduction to some hydrological extreme phenomena
EvaporAzione
Francesco Serafin
Meledrio
Lisbon talk for SteepStreams
Grids implementation
Some photos from the field
Virtual water fem 07032017
Dalton Prize Lecture 2017 by Dani Or
Projecting Climate Change Impacts on Water Resources in Regions of Complex To...
The modern flood forecasting
La moderna previsione delle piene
Hydrological Extremes and Human societies
The Science of Water Transport and Floods from Theory to Relevant Application...
The Science of Water Transport and Floods from Theory to Relevant Applications
Climaware at the end
Hymod model for catchments
Egu2017 pico

Recently uploaded (20)

PPTX
Big Data Technologies - Introduction.pptx
PPT
Teaching material agriculture food technology
PPTX
1. Introduction to Computer Programming.pptx
PDF
Empathic Computing: Creating Shared Understanding
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Machine learning based COVID-19 study performance prediction
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Accuracy of neural networks in brain wave diagnosis of schizophrenia
PPTX
Spectroscopy.pptx food analysis technology
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Getting Started with Data Integration: FME Form 101
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Electronic commerce courselecture one. Pdf
PDF
Encapsulation theory and applications.pdf
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
Big Data Technologies - Introduction.pptx
Teaching material agriculture food technology
1. Introduction to Computer Programming.pptx
Empathic Computing: Creating Shared Understanding
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Machine learning based COVID-19 study performance prediction
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Building Integrated photovoltaic BIPV_UPV.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
Encapsulation_ Review paper, used for researhc scholars
Accuracy of neural networks in brain wave diagnosis of schizophrenia
Spectroscopy.pptx food analysis technology
Reach Out and Touch Someone: Haptics and Empathic Computing
MYSQL Presentation for SQL database connectivity
Mobile App Security Testing_ A Comprehensive Guide.pdf
Getting Started with Data Integration: FME Form 101
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Electronic commerce courselecture one. Pdf
Encapsulation theory and applications.pdf
Diabetes mellitus diagnosis method based random forest with bat algorithm

Meteo I/O Introduction

  • 1. MeteoIO A meteo data I/O library
  • 2. Before MeteoIO... • Each application doing its IO – Insufficient robustness – IO functions spread out all over the code – Input data very strictly formatted, several steps in preparing the data – Hard to adapt to new protocols/formats →IO a source of weakness... 2
  • 3. MeteoIO: goals • Remove all IO functions out of the physics engine • Make IO easy to use • Make IO robust • Make IO flexible • Greatly simplify data preparation • Allow unmonitored, automatic operation • Allow end user to fine tune his IO... 3
  • 4. MeteoIO: ini files [Parameters] DEMSRC = ARC DEMFILE = ../input/surface-grids/zwischberg.dem LANDUSESRC = GRASS LANDUSEFILE = ../input/surface-grids/zwischberg.lus plugins METEOSRC = A3D METEOPATH = ../input/meteo SPECIALPTSSRC = A3D SPECIALPTSFILE = ../input/surface-grids/zwischberg.pts OUTPUT = ARC OUTPATH = ../output/ 4
  • 5. MeteoIO: primary data structures • MeteoData: • StationData: – Date object – Longitude – Ta – Latitude – Iswr – Altitude – Vw – Northing (metric grid) – Rh – Easting (metric grid) – Lwr – Name – Nswc – Supports equality comparison – Ts0 – P – ... – Supports equality comparison 5
  • 7. What is it doing? • Parsing io.ini • Loading plugins supporting requested data sources • Reading data (across files, network, protocols and supporting comments, different EOL, etc) • Converts stations' coordinates if necessary • Filtering data, marking invalid data as “no data” • Conversion of units to SI 7
  • 8. Example: output [i] meteoio/A3DIO.cc:86: Loading dynamic plugins: [i] Number of 2D meteo stations: 15 ---------- Station: 1 / 16 Name: Air Temperature: 266.25 This station has no name ---------- Station: 2 / 16 Name: ANET-ZER Air Temperature: 266.45 ---------- Station: 3 / 16 Name: ANET-VIS Air Temperature: 268.75 (etc) 8
  • 9. Data sources • Currently supported: – Meteo data: Alpine3D's Ascii, Boschung's XML, Gsn, Imis Oracle database, GeoTop – Grids: ARC, GRASS 9
  • 10. Writing a new IO plugin • Provide implementation of some or all of: ReadMeteoData (const Date_IO& dateStart, const Date_IO& dateEnd, std::vector< std::vector<MeteoData> >& vecMeteo, std::vector< std::vector<StationData> >& vecStation, const unsigned int& stationindex=IOUtils::npos) Read2DGrid (Grid2DObject& grid_out, const string& parameter="") ReadDEM (DEMObject& dem_out) ReadLanduse (Grid2DObject& landuse_out) ReadAssimilationData (const Date_IO& date_in, Grid2DObject& da_out) ReadSpecialPoints (CSpecialPTSArray& pts) Write2DGrid (const Grid2DObject& grid_in, const string& name="") 10
  • 11. Filters • Available: – Min, max – Max observed changed – No observed change • To be added: – Median Average Deviation • Special processing – Resampling – accumulation • Easy to add new filters 11
  • 12. MeteoIO: example of use II 12
  • 13. What does it change? • IO are now buffered -> efficient on slow access • Automatic resampling for missing data – Using linear interpolation between two neighbors – To be added: cyclic interpolation, etc 13
  • 14. Userland addition In the user's code: add a function checking that the input requirements are met (ie: nb of lwr, nb of ta, etc) 14
  • 15. Data structures/methods • Array, Array2D, Array3D – Using vectors for a safe and efficient implementation • Grid2DObject, Grid3DObject – Geolocalized array • DEMObject – Computes slope, aspect, normal's components (Corripio, Hicks, etc) 15
  • 16. MeteoIO: example of use III 16
  • 17. MeteoIO: example of use IV 17
  • 18. TA, 0 to 16° RH, 62% to 90% Gotthard, 2008­10­01 12:00, 19 stations 18
  • 19. Spatial interpolations • Available methods: – Std pressure – Constant value – Constant with lapse rate – IDW – IDW with lapse rate – For Rh, Td IDWK with lapse rate and back to Rh – Terrain influenced VW and DW • One method defined for only 1 data input, one for multiple data input (fallback) • Regression: – Linear regression for the moment, removes the worst data point if the regression is too poor 19
  • 20. Spatial interpolations 2 Planned additions: – Physical wind interpolation (quick Bernoulli resolution?) – More regression models (dynamically adjusted to the data) – Smarter choice of which method to use (dynamic, including data quality) 20
  • 21. Geographic projections • Conversion to/from WGS84 from any coordinate system – Through own implementation (CH1903, ...) – Through proj4 library • Conversion to/from local grid MapProj local_proj(lat_ref, long_ref); local_proj.convert_from_WGS84(latitude, longitude, easting, northing); 21
  • 22. MeteoIO: on the side • Date handling (Date_IO class) • Config files handling (ConfigReader class) • Data storage (Arrays & grids classes, sparse matrix (coming)) • Ported to Pop-C++ for parallel execution • Application specific IOs classes 22
  • 23. Thank you! Mathias Bavay (SLF) Thomas Egger (Egger Consulting) Laurent Winkler (HES-SO) Florian Hof (SLF) Moustapha Mbengue (SLF) Gael Rosset (HES-SO) Julien Jeanneret (HES-SO) Nora Helbig (SLF) 23