Code Monkey home page Code Monkey logo

fathersmarble's Introduction

Father's Marble

Father's Marble is an attempt to show the status of the Good News throughout the earth.

Here's a screenshot of the view looking down on the North Pole, with the Americas toward the top of the picture:

View of Father's Marble from the North Pole.  The Americas are toward the top of the image.

In this particular screenshot (and the default setting for the application), the colors correspond to the Progress Levels defined by Joshua Project.

Data Sources

Data regarding people groups and their beliefs come from Joshua Project's public datasets and APIs. The Joshua Project exists to "Bring Definition to the Unfinished Task." Joshua Project data is updated in this application roughly once every two weeks.

Data regarding general global population distributions comes from NASA's Gridded Population of the World, Version 3 provided through CIESIN and CIAT, and are scaled such that the total world population roughly matches Joshua Project data.

Over different versions of this project, the imagery used on the globe has come from a variety of different sources:

  • Bing Maps. Licensed from Microsoft.
  • Natural Earth II. Public Domain.
  • NASA's Black Marble Imagery.

The particular copyrights that apply to the imagery actively in-use are listed at the bottom left of the application.

The graphics tool used here is Cesium, which is a really awesome geospatial analysis tool that goes way beyond mapping interesting things. This display arrangement is substantially borrowed from their Custom Data Source Example. (Disclosure: I was an intern at AGI back in the day before they spun off Cesium into its own.)

Terminology

For the purposes of this application, the term Village does not refer to something like a small town, but rather specifically refers to a people group in a particular location. For instance, the Glaro-Twabo people are in two locations, and thus have two "Villages". Villages can be of drastically different sizes, both in terms of population, and in terms of geographic area covered.

A Pile is a collection of peoples who are designated into a geographical point. One Pile may contain several Villages, and many Villages are spread between several piles. Generally, one pile corresponds to one vertical multi-colored stack. Hence, "pile".

How It Works

Joshua Project data provides a geographic epicenter for each Village, but doesn't provide any sort of population density information. If we were to simply plot the Joshua Project data as-is, we would find, for instance, that all 180 million U.S. Americans (the second largest Village) live in the Mark Twain National Forest just off I-44 in the middle of Missouri. However, most Americans don't live there. Thus, we also use NASA's gridded population dataset, adjusted to two-degree precision, to better account for how people are distributed. Each of these two-degree blocks is a Pile.

The Joshua Project Data and the NASA Data don't perfectly align, and there isn't really enough information to guarantee that all individuals will be assigned to the best pile. So, to minimize the order of magnitude of the error, smaller Villages are assigned to Piles first, and remaining spaces in the piles are then filled by other villages nearby.

The assignment of Villages to Piles is not perfect. You will probably find some unexpected bleeding, particularly in places with large Villages or complex borders.

Data Issues & Usefulness

There are some known issues in how the data is presented, most of which will never be resolved. Our goal is to provide a tool that is useful for you and your family and your church to see the regions of the world where we particularly need to "pray earnestly to the Lord of the harvest to send out laborers into his harvest." (Matthew 9:38)

Please don't use this for anything more than that. Do not use this as the sole tool for choosing a travel destination.
This tool is useful, but not for everything.

In addition to potential misuse, there are other more technical issues with this visualization, as described below.

Missing Villages

Since this application focuses on attempting to locate people on the globe, only Villages with both population information and geographic information (in lat/long) are plotted. When the data set was first compiled for this purpose, this meant that a total of 4,690,750 people (about 0.06% of the global population) are not accounted for. While we want to see the gospel reach each of these people, they have been left out of this visualization, as we have no good way to plot them. Should lat/long data become available for these groups, we will update the data set.

Old Population Distribution Data

The gridded dataset we're using from NASA is dated 2000. This is obviously old, but at the time of writing, it's the newest solid data available. Since the population has expanded since then, NASA data is scaled proportionally such that the sum equals the sum of the Joshua Project data. Essentially, we're assuming that the population growth has occurred everywhere at the same rate, which isn't an accurate assumption, and makes some things weird. For example, this is why there will appear to be an unrealistically high number of Han Chinese listed in Alaska.

Ambiguous Population Distribution Data

While we have distribution information for the human race as a whole, there is no readily available data that addresses the issue of which Piles should contain each Village, when the Village population is larger than that of the closest pile.

Contributing, Building and Other Participation

If you find an error of any sort, please check the Issue Tracker to see if it's already a known issue, and create a new issue report if it's not already a known issue.

If you want to work with the codebase, it's kinda expected that you already have some experience working with Javascript applications. (If you're new to Javascript, this is not the place to start.)

There are two applications in this set: the front-end application, rooted in the base directory; and the data processing application rooted in /data, which parses the datasets and converts them to useful JSON files, which are then passed to the front-end application for display.

Data Processing Application

The data doesn't change very often, so it's processed occasionally on the server. This processing, and the outputs of it are all contained in the /data directory.

To install the node dependencies, from /data, run:

npm install

To update the node dependencies, from /data, run:

npm update

To run the data processing, from /data, run:

npm start

Front-End Application

To install the node dependencies, from the root directory of the repository, run:

npm install

To update the node dependencies, from the root directory of the repository, run:

npm update

There is no build procedure for the application, as it is (for now, anyway) completely static. Just put the files in a web server, and you'll have a working application.
To build this application, you need LESS, and probably should minify everything. Creating a simplified build procedure is issue #2.

fathersmarble's People

Contributors

jkrrv avatar

Watchers

 avatar  avatar

fathersmarble's Issues

Update to modern JPScale

At some point, Joshua Project changed over to a 5-class scale instead of the current 3-class scale. To be consistent, this application should change over, too.

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.