@quartic/bokehjs
Version:
Interactive, novel data visualization
47 lines (37 loc) • 1.5 kB
text/coffeescript
import {BasicTicker} from "./basic_ticker"
import * as p from "core/properties"
import {proj4, mercator} from "core/util/proj4"
export class MercatorTicker extends BasicTicker
type: 'MercatorTicker'
{
dimension: [ p.LatLon ]
}
get_ticks_no_defaults: (data_low, data_high, cross_loc, desired_n_ticks) ->
if not ?
throw new Error("MercatorTicker.dimension not configured")
if == "lon"
[proj_low, proj_cross_loc] = proj4(mercator).inverse([data_low, cross_loc])
[proj_high, proj_cross_loc] = proj4(mercator).inverse([data_high, cross_loc])
else
[proj_cross_loc, proj_low ] = proj4(mercator).inverse([cross_loc, data_low ])
[proj_cross_loc, proj_high] = proj4(mercator).inverse([cross_loc, data_high])
proj_ticks = super(proj_low, proj_high, cross_loc, desired_n_ticks)
ticks = {
major: []
minor: []
}
if == "lon"
for tick in proj_ticks.major
[lon, _] = proj4(mercator).forward([tick, proj_cross_loc])
ticks.major.push(lon)
for tick in proj_ticks.minor
[lon, _] = proj4(mercator).forward([tick, proj_cross_loc])
ticks.minor.push(lon)
else
for tick in proj_ticks.major
[_, lat] = proj4(mercator).forward([proj_cross_loc, tick])
ticks.major.push(lat)
for tick in proj_ticks.minor
[_, lat] = proj4(mercator).forward([proj_cross_loc, tick])
ticks.minor.push(lat)
return ticks