Giter Club home page Giter Club logo

meteo-particle-model's Introduction

Meteo-Particle model for wind and temperature field construction using Mode-S data

This repository is a Python library for wind field estimation based on the Meteo-Particle particle model. The wind and temperature are computed from ADS-B and Mode-S data using the pyModeS library.

This tool was developed together with a research paper by Junzi Sun and his colleagues at TU Delft CNA/ATM research group. If you find it useful for your research, please consider citing it as:

@article{sun2018mp,
  title={Weather field reconstruction using aircraft surveillance data and a novel meteo-particle model},
  author={Sun, Junzi and V{\^u}, Huy and Ellerbroek, Joost and Hoekstra, Jacco M},
  journal={PloS one},
  volume={13},
  number={10},
  pages={e0205029},
  year={2018},
}

Dependent libraries

  1. You need to install pyModeS library for ADS-B and Mode-S decoding.
  2. You also need to install the following common scientific libraries: numpy, pandas, and matplotlib.
  3. You may install optional geomag library, to support the correction of magnetic declination in BDS60 heading.

For a fresh install, run following commands:

$ pip install git+https://github.com/junzis/pyModeS
$ pip install numpy pandas matplotlib geomag

Code examples

Examples of using the model with recorded data and real-time streaming are given in run-recoded.py and run-realtime.py file.

To quickly test the model out of the box, try:

$ python run-recoded.py

or if you have access to a ModeSBeast raw stream on TCP port:

$ python run-realtime.py --server xx.xx.xx.xx --port xxxxx

Configurable model parameters (with defaults) are:

AREA_XY = (-300, 300)           # Area - xy, km
AREA_Z = (0, 12)                # Altitude - km

GRID_BOND_XY = 20               # neighborhood xy, +/- km
GRID_BOND_Z = 0.5               # neighborhood z, +/- km
TEMP_Z_BUFFER = 0.2             # neighborhood z (temp),  +/- km

N_AC_PTCS = 300                 # particles per aircraft
N_MIN_PTC_TO_COMPUTE = 10       # number of particles to compute

CONF_BOUND = (0.0, 1.0)         # confident normalization

AGING_SIGMA = 180.0             # Particle aging parameter, seconds
PTC_DIST_STRENGTH_SIGMA = 30.0  # Weighting parameter - distance, km
PTC_WALK_XY_SIGMA = 5.0         # Particle random walk - xy, km
PTC_WALK_Z_SIGMA = 0.1          # Particle random walk - z, km
PTC_VW_VARY_SIGMA = 0.0002      # Particle initialization wind variation, km/s
PTC_TEMP_VARY_SIGMA = 0.1       # Particle initialization temp variation, K

ACCEPT_PROB_FACTOR = 3          # Measurement acceptance probability factor
PTC_WALK_K = 10                 # Particle random walk factor

Plots

One minute simulation: simulation

Wind field from the sample dataset (snapshot at 01/01/2018 09:02 UTC) real-wind-field

Temperature field from the sample dataset (snapshot at 01/01/2018 09:02 UTC) real-wind-field

meteo-particle-model's People

Contributors

hv92 avatar jooste avatar junzis avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

meteo-particle-model's Issues

Error while running ehs_adsb_wind_extract.py and simulation.py

I'm sorry to disturb you, but I encountered a few problems when using the meteo-particle-model. Thank you for your answers.
1.An error occurred while running ehs_adsb_wind_extract.py, the error is shown below:

Traceback (most recent call last):
  File "D:/meteo-particle-model-master/extra/ehs_adsb_wind_extract.py", line 78, in <module>
    aggregate()
  File "D:/meteo-particle-model-master/extra/ehs_adsb_wind_extract.py", line 19, in aggregate
    ehs['bds'] = ehs.msg.apply(pms.ehs.BDS)
AttributeError: module 'pyModeS' has no attribute 'ehs'

2.An error occurred while running Simulation.py, and the program could not stop normally. The error is as follows:

D:/meteo-particle-model-master/extra/simulation.py:102: RuntimeWarning: Degrees of freedom <= 0 for slice
  hmgs = np.linalg.norm(np.cov([PTC_WX[mask], PTC_WY[mask]]))
D:\Anaconda3\envs\traffic01\lib\site-packages\numpy\lib\function_base.py:2455: RuntimeWarning: divide by zero encountered in true_divide
  c *= np.true_divide(1, fact)
D:\Anaconda3\envs\traffic01\lib\site-packages\numpy\lib\function_base.py:2455: RuntimeWarning: invalid value encountered in multiply
  c *= np.true_divide(1, fact)

3.In basemap.py, the dedent function was deprecated in Matplotlib 3.1 and will be removed in 3.3, would you like to improve it?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.