-
Notifications
You must be signed in to change notification settings - Fork 1
Home
Better name ideas?
Steps:
-
Choose a canvas size (default?)
-
Choose a home point (where distances and bearings are calculated from)
-
Choose a dataset (CSV? GeoJSON?), with an attribute that relates back to the home point somehow (i.e. is relational; refugee flows, investment, similarity, cost/time distance, etc. Raw attributes like population, wealth, etc. aren’t well-suited for this; just do a cartogram or choropleth map)
-
Have user specify lat, long, and attribute columns in the data file, and home point row
-
IF the home point has a 0 or NA value, don't include it in the isolines, but overlay it as a box at the end
-
-
Zeroth cut:
-
Plot X/Y coordinates of lat/long of each point on clunky-ass Web Mercator canvas (specified as bounding box of data plus a small margin)
-
Have user click to advance to "relative spatialization"
-
-
First cut: Calculate first cut of redone spatialization (with no correction for bounds or canvas utilization) from home point
- Have user click to advance to "recentered spatialization"
-
Second cut: Check bounding box of data of first cut of spatialization within the canvas, and then rescale spatialization to fill canvas space
- Have user click to advance to "respaced spatialization"
-
Third cut: Check readability/clustering of points in the second cut of spatialization, and then rescale to use space more effectively
-
Plot points from the third cut, then display titles centered on each point; home point should be bolded
-
Move titles if they overlap (with a buffer to allow for isoline drawing)
-
Draw isoline(s) using existing D3 function?
-
Set position for legend/title (could be outside of "canvas" space to avoid issues with placement over data) and draw them
-
???
-
PROFIT
Things to consider:
-
How to style the isolines?
-
No style; just pattern of concentric lines like an elevation map?
-
Different line styles like in first draft (dotted, dashed, wavy, etc.)?
-
Different line weights?
-
-
Do something to **indicate Cartesian distance **from home point for each other point?
-
Scale bar? Too misleading
-
Morph in and out of geographic space? Very cool but in V1 might not be achievable, and without a basemap could be of limited utility
-
Hover over and display additional data, including Cartesian distance from origin?
-
Low-tech: just display distance or order of magnitude of distance in parentheses after point name: e.g. "Manhattan (10^3 miles)"
-
Inputs:
-
Places
-
*** HOME
- Does this have to be dynamic? (Functionality for v2)
-
Lat/Long?
-
CSV list?
-
** GeoJSON
-
shp/coverage/etc?
-
-
Place names from a gazeteer?
-
Point-click interface?
-
Give a title for each pt
-
And attribute? (below)
-
-
-
Attribute
-
Attached to places if in CSV, column selector?
-
If point-click interface, then need to add attribute # for each new place
-
Single numerical vector
-
-
Canvas
- Default: set to X text size on YxZpx screen
-
Breaks
-
Default: 4 equal interval breaks
-
Iterate-able?
-
How to set cutoff for inclusion at all? Important for larger datasets where you only care about "significant" relationships (YES)
-
Pre-baked options for equal interval, quantile, ‘pretty breaks’ etc?
-
Outputs:
-
Pseudo-dist diagram w/i browser
-
Views?
- Diagram vs "real space"
Code Components (D3 as base)
-
Isoline
-
USING FOR NOW: Turf.js?
- The issue is we need to input grid data before we are able to create w
-
conrec.js ( https://github.com/jasondavies/conrec.js )
-
Nice comparison article on contour libraries: http://emptypipes.org/2015/07/22/contour-comparison/
-
https://github.com/d3/d3-contour
-
Density function so will allow for non-contiguous classes
-
Example: https://bl.ocks.org/mbostock/4241134
-
-
http://geoexamples.com/d3-raster-tools-docs/plot/isolines.html
-
-
Orientation
-
Distance