Coder Social home page Coder Social logo

dash-world-cell-towers's Introduction

World Cell Towers Dash App

This repo contains a Python Dash app for exploring the world cell tower dataset provided by OpenCellid.

Technical Details

This dataset contains over 40 million rows of data, each row including several cell tower features in addition to the latitude/longitude location of the tower. To handle this fairly large dataset, this app makes use of Dask for parallel processing, and Datashader for server side rendering.

Environment

First, create a virtualenv or conda environment that includes the dependencies listed in the requirements.txt file.

Data setup

Due to storage constraints, this repository does not include the cell towers dataset. Instead, the notebooks/prepare_cell_data.ipynb Jupyter notebook contains instructions for downloading the raw data, and the notebook itself will process the data set and write out a compressed parquet file to the ./data directory.

Mapbox setup

To run the dashboard, create a file name .mapbox_token under to root directory. This file should contain a valid Mapbox token, which can be obtained for free by setting up an account at https://www.mapbox.com/.

Launching Dashboard in Development Mode

Launch the dashboard in development mode from the command line with:

$ ./launch_dev.sh

Then open the dashboard at the URL displayed by the command.

Launching Dashboard in Deployment Mode

Launch the dashboard in deployment mode with gunicorn from the command line with:

$ ./launch.sh

Preview

Initial dashboard view:

Click on Radio panel bars to select cell towers by radio technology:

Drag to select the towers with the longest range using the Signal Range panel. As in this case, when the active selections result in fewer than 5000 towers, the map view switches from using Datashader to displaying towers using a scattermapbox scatter trace that includes tooltips with detailed information about each individual tower.

Documentation for each panel can be activated by clicking on the question mark icon in the top right corner of the panel. Documentation appears in a second floating panel, and the panel that is being described is highlighted. The documentation panel is closed by clicking the close icon in the top right corner of the documentation panel.

dash-world-cell-towers's People

Contributors

airballclaytoncalvin avatar elliotgunn avatar jonmmease avatar josegonzalez 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  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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dash-world-cell-towers's Issues

errors rendering world cell tower dashboard

seems to be a dearth of information around errors with this app, either here or on the we. So after two days lost to this, I have added below the error I see on the dashboard when following the instructions on the README file and a screenshot:

  • TypeError: The DTypes <class 'numpy.dtype[datetime64]'> and <class 'numpy.dtype[float64]'> do not have a common DType.
    For example they cannot be stored in a single array unless the dtype is object.

Seems to be an issue handling data types in dask and/or datashader with the error pointing to this line

agg = cvs.points(ddf_selected_range_created, x="x_3857", y="y_3857", agg=ds.count_cat("radio"))

No idea why it refers to datetime, as the only datetime column in the ddf_selected_range_created dataframe is "created" but that is not referenced in the line above.

I also changed the assignment to "agg" to a different variable (myPts) in case there was a variable conflict with the parameters of the same name. None of that has yielded any success.

opencell-errors

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.