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:
In this particular screenshot (and the default setting for the application), the colors correspond to the Progress Levels defined by Joshua Project.
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.)
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".
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.
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.
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.
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.
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.
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.
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
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.