Skip to content

Instantly share code, notes, and snippets.

@ssmaroju
Last active March 1, 2019 21:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ssmaroju/be09984fc911284131b34f8c3bd8eb0a to your computer and use it in GitHub Desktop.
Save ssmaroju/be09984fc911284131b34f8c3bd8eb0a to your computer and use it in GitHub Desktop.
Project Prototype
/*!
* dc.leaflet 0.4.0
* http://dc-js.github.io/dc.leaflet.js/
* Copyright 2014-2015 Boyan Yurukov and the dc.leaflet Developers
* https://github.com/dc-js/dc.leaflet.js/blob/master/AUTHORS
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
(function() { function _dc_leaflet(dc) {
'use strict';
var dc_leaflet = {
version: '0.4.0'
};
dc_leaflet.leafletBase = function(_chart) {
_chart = dc.marginMixin(dc.baseChart(_chart));
_chart.margins({left:0, top:0, right:0, bottom:0});
var _map;
var _mapOptions=false;
var _defaultCenter=false;
var _defaultZoom=false;
var _cachedHandlers = {};
var _createLeaflet = function(root) {
// append sub-div if not there, to allow client to put stuff (reset link etc.)
// in main div. might also use relative positioning here, for now assume
// appending will put in right position
var child_div = root.selectAll('div.dc-leaflet');
child_div = child_div.data([0]).enter()
.append('div').attr('class', 'dc-leaflet')
.style('width', _chart.effectiveWidth() + "px")
.style('height', _chart.effectiveHeight() + "px")
.merge(child_div);
return L.map(child_div.node(),_mapOptions);
};
var _tiles=function(map) {
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '&copy; <a href="https://openstreetmap.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
};
_chart.createLeaflet = function(_) {
if(!arguments.length) {
return _createLeaflet;
}
_createLeaflet = _;
return _chart;
};
_chart._doRender = function() {
if(! _chart.map()){
_map = _createLeaflet(_chart.root());
for(var ev in _cachedHandlers)
_map.on(ev, _cachedHandlers[ev]);
if (_defaultCenter && _defaultZoom) {
_map.setView(_chart.toLocArray(_defaultCenter), _defaultZoom);
}
_chart.tiles()(_map);
_chart._postRender();
}
else
console.warn("WARNING: Leaflet map already rendered.");
return _chart._doRedraw();
};
_chart._doRedraw = function() {
return _chart;
};
_chart._postRender = function() {
return _chart;
};
_chart.mapOptions = function(_) {
if (!arguments.length) {
return _mapOptions;
}
_mapOptions = _;
return _chart;
};
_chart.center = function(_) {
if (!arguments.length) {
return _defaultCenter;
}
_defaultCenter = _;
return _chart;
};
_chart.zoom = function(_) {
if (!arguments.length) {
return _defaultZoom;
}
_defaultZoom = _;
return _chart;
};
_chart.tiles = function(_) {
if (!arguments.length) {
return _tiles;
}
_tiles = _;
return _chart;
};
_chart.map = function() {
return _map;
};
_chart.toLocArray = function(value) {
if (typeof value === "string") {
// expects '11.111,1.111'
value = value.split(",");
}
// else expects [11.111,1.111]
return value;
};
// combine Leaflet events into d3 & dc events
dc.override(_chart, 'on', function(event, callback) {
var leaflet_events = ['zoomend', 'moveend'];
if(leaflet_events.indexOf(event) >= 0) {
if(_map) {
_map.on(event, callback);
}
else {
_cachedHandlers[event] = callback;
}
return this;
}
else return _chart._on(event, callback);
});
return _chart;
};
//Legend code adapted from http://leafletjs.com/examples/choropleth.html
dc_leaflet.legend = function() {
var _parent, _legend = {};
var _leafletLegend = null;
var _position = 'bottomleft';
_legend.parent = function (parent) {
if(!arguments.length)
return _parent;
_parent = parent;
return this;
};
function _LegendClass() {
return L.Control.extend({
options: {position: _position},
onAdd: function (map) {
this._div = L.DomUtil.create('div', 'info legend');
map.on('moveend',this._update,this);
this._update();
return this._div;
},
_update: function () {
if (!_parent.colorDomain)
console.warn('legend not supported for this dc.leaflet chart type, ignoring');
else {
var minValue = _parent.colorDomain()[0],
maxValue = _parent.colorDomain()[1],
palette = _parent.colors().range(),
colorLength = _parent.colors().range().length,
delta = (maxValue - minValue)/colorLength,
i;
// define grades for legend colours
// based on equation in dc.js colorCalculator (before version based on colorMixin)
var grades = [];
grades[0] = Math.round(minValue);
for (i= 1; i < colorLength; i++) {
grades[i] = Math.round((0.5 + (i - 1)) * delta + minValue);
}
var div = L.DomUtil.create('div', 'info legend');
// loop through our density intervals and generate a label with a colored
// square for each interval
this._div.innerHTML = ""; //reset so that legend is not plotted multiple times
for (i = 0; i < grades.length; i++) {
this._div.innerHTML +=
'<i style="background:' + palette[i] + '"></i> ' +
grades[i] + (grades[i + 1] ? '&ndash;' + grades[i + 1] + '<br>' : '+');
}
}
}
});
}
_legend.LegendClass = function(LegendClass) {
if(!arguments.length)
return _LegendClass;
_LegendClass = LegendClass;
return _legend;
};
_legend.render = function () {
// unfortunately the dc.js legend has no concept of redraw, it's always render
if(!_leafletLegend) {
// fetch the legend class creator, invoke it
var Legend = _legend.LegendClass()();
// and constuct that class
_leafletLegend = new Legend();
_leafletLegend.addTo(_parent.map());
}
return _legend.redraw();
};
_legend.redraw = function () {
_leafletLegend._update();
return _legend;
};
_legend.leafletLegend = function () {
return _leafletLegend;
};
_legend.position = function (position) {
if(!arguments.length) return _position;
_position = position;
return _legend;
};
return _legend;
};
dc_leaflet.markerChart = function(parent, chartGroup) {
var _chart = dc_leaflet.leafletBase({});
var _renderPopup = true;
var _cluster = false; // requires leaflet.markerCluster
var _clusterOptions=false;
var _rebuildMarkers = false;
var _brushOn = true;
var _filterByArea = false;
var _filter;
var _innerFilter=false;
var _zooming=false;
var _layerGroup = false;
var _markerList = [];
var _currentGroups=false;
_chart.renderTitle(true);
var _location = function(d) {
return _chart.keyAccessor()(d);
};
var _marker = function(d, map) {
var marker = new L.Marker(_chart.toLocArray(_chart.locationAccessor()(d)), {
title: _chart.renderTitle() ? _chart.title()(d) : '',
alt: _chart.renderTitle() ? _chart.title()(d) : '',
icon: _icon(d, map),
clickable: _chart.renderPopup() || (_chart.brushOn() && !_filterByArea),
draggable: false
});
return marker;
};
var _icon = function(d, map) {
return new L.Icon.Default();
};
var _popup = function(d, marker) {
return _chart.title()(d);
};
_chart._postRender = function() {
if (_chart.brushOn()) {
if (_filterByArea) {
_chart.filterHandler(doFilterByArea);
}
_chart.map().on('zoomend moveend', zoomFilter, this );
if (!_filterByArea)
_chart.map().on('click', zoomFilter, this );
_chart.map().on('zoomstart', zoomStart, this);
}
if (_cluster) {
_layerGroup = new L.MarkerClusterGroup(_clusterOptions?_clusterOptions:null);
}
else {
_layerGroup = new L.LayerGroup();
}
_chart.map().addLayer(_layerGroup);
};
_chart._doRedraw = function() {
var groups = _chart._computeOrderedGroups(_chart.data()).filter(function (d) {
return _chart.valueAccessor()(d) !== 0;
});
if (_currentGroups && _currentGroups.toString() === groups.toString()) {
return;
}
_currentGroups=groups;
if (_rebuildMarkers) {
_markerList=[];
}
_layerGroup.clearLayers();
var addList=[];
groups.forEach(function(v, i) {
var key = _chart.keyAccessor()(v);
var marker = null;
if (!_rebuildMarkers && key in _markerList) {
marker = _markerList[key];
}
else {
marker = createmarker(v, key);
}
if (!_chart.cluster()) {
_layerGroup.addLayer(marker);
}
else {
addList.push(marker);
}
});
if (_chart.cluster() && addList.length > 0) {
_layerGroup.addLayers(addList);
}
};
_chart.locationAccessor = function(_) {
if (!arguments.length) {
return _location;
}
_location= _;
return _chart;
};
_chart.marker = function(_) {
if (!arguments.length) {
return _marker;
}
_marker= _;
return _chart;
};
_chart.icon = function(_) {
if (!arguments.length) {
return _icon;
}
_icon= _;
return _chart;
};
_chart.popup = function(_) {
if (!arguments.length) {
return _popup;
}
_popup= _;
return _chart;
};
_chart.renderPopup = function(_) {
if (!arguments.length) {
return _renderPopup;
}
_renderPopup = _;
return _chart;
};
_chart.cluster = function(_) {
if (!arguments.length) {
return _cluster;
}
_cluster = _;
return _chart;
};
_chart.clusterOptions = function(_) {
if (!arguments.length) {
return _clusterOptions;
}
_clusterOptions = _;
return _chart;
};
_chart.rebuildMarkers = function(_) {
if (!arguments.length) {
return _rebuildMarkers;
}
_rebuildMarkers = _;
return _chart;
};
_chart.brushOn = function(_) {
if (!arguments.length) {
return _brushOn;
}
_brushOn = _;
return _chart;
};
_chart.filterByArea = function(_) {
if (!arguments.length) {
return _filterByArea;
}
_filterByArea = _;
return _chart;
};
_chart.markerGroup = function() {
return _layerGroup;
};
var createmarker = function(v, k) {
var marker = _marker(v, _chart.map());
marker.key = k;
if (_chart.renderPopup()) {
marker.bindPopup(_chart.popup()(v, marker));
}
if (_chart.brushOn() && !_filterByArea) {
marker.on("click", selectFilter);
}
_markerList[k]=marker;
return marker;
};
var zoomStart = function(e) {
_zooming=true;
};
var zoomFilter = function(e) {
if (e.type === "moveend" && (_zooming || e.hard)) {
return;
}
_zooming=false;
if (_filterByArea) {
var filter;
if (_chart.map().getCenter().equals(_chart.center()) && _chart.map().getZoom() === _chart.zoom()) {
filter = null;
}
else {
filter = _chart.map().getBounds();
}
dc.events.trigger(function () {
_chart.filter(null);
if (filter) {
_innerFilter=true;
_chart.filter(filter);
_innerFilter=false;
}
dc.redrawAll(_chart.chartGroup());
});
} else if (_chart.filter() && (e.type === "click" ||
(_markerList.indexOf(_chart.filter()) !== -1 &&
!_chart.map().getBounds().contains(_markerList[_chart.filter()].getLatLng())))) {
dc.events.trigger(function () {
_chart.filter(null);
if (_renderPopup) {
_chart.map().closePopup();
}
dc.redrawAll(_chart.chartGroup());
});
}
};
var doFilterByArea = function(dimension, filters) {
_chart.dimension().filter(null);
if (filters && filters.length>0) {
_chart.dimension().filterFunction(function(d) {
if (!(d in _markerList)) {
return false;
}
var locO = _markerList[d].getLatLng();
return locO && filters[0].contains(locO);
});
if (!_innerFilter && _chart.map().getBounds().toString !== filters[0].toString()) {
_chart.map().fitBounds(filters[0]);
}
}
};
var selectFilter = function(e) {
if (!e.target) return;
var filter = e.target.key;
dc.events.trigger(function () {
_chart.filter(filter);
dc.redrawAll(_chart.chartGroup());
});
};
return _chart.anchor(parent, chartGroup);
};
dc_leaflet.choroplethChart = function(parent, chartGroup) {
var _chart = dc.colorChart(dc_leaflet.leafletBase({}));
var _geojsonLayer = false;
var _dataMap = [];
var _geojson = false;
var _renderPopup = true;
var _brushOn = true;
var _featureOptions = {
'fillColor':'black',
'color':'gray',
'opacity':0.4,
'fillOpacity':0.6,
'weight':1
};
var _featureKey = function(feature) {
return feature.key;
};
var _featureStyle = function(feature) {
var options = _chart.featureOptions();
if (options instanceof Function) {
options=options(feature);
}
options = JSON.parse(JSON.stringify(options));
var v = _dataMap[_chart.featureKeyAccessor()(feature)];
if (v && v.d) {
options.fillColor=_chart.getColor(v.d, v.i);
if (_chart.filters().indexOf(v.d.key) !== -1) {
options.opacity=0.8;
options.fillOpacity=1;
}
}
return options;
};
var _popup = function(d, feature) {
return _chart.title()(d);
};
_chart._postRender = function() {
_geojsonLayer=L.geoJson(_chart.geojson(), {
style: _chart.featureStyle(),
onEachFeature: processFeatures
});
_chart.map().addLayer(_geojsonLayer);
};
dc.override(_chart, '_doRedraw', function() {
_geojsonLayer.clearLayers();
_dataMap=[];
_chart._computeOrderedGroups(_chart.data()).forEach(function (d, i) {
_dataMap[_chart.keyAccessor()(d)] = {'d':d, 'i':i};
});
_geojsonLayer.addData(_chart.geojson());
return _chart.__doRedraw();
});
_chart.geojson = function(_) {
if (!arguments.length) {
return _geojson;
}
_geojson = _;
return _chart;
};
_chart.featureOptions = function(_) {
if (!arguments.length) {
return _featureOptions;
}
_featureOptions = _;
return _chart;
};
_chart.featureKeyAccessor = function(_) {
if (!arguments.length) {
return _featureKey;
}
_featureKey= _;
return _chart;
};
_chart.featureStyle = function(_) {
if (!arguments.length) {
return _featureStyle;
}
_featureStyle= _;
return _chart;
};
_chart.popup = function(_) {
if (!arguments.length) {
return _popup;
}
_popup= _;
return _chart;
};
_chart.renderPopup = function(_) {
if (!arguments.length) {
return _renderPopup;
}
_renderPopup = _;
return _chart;
};
_chart.brushOn = function(_) {
if (!arguments.length) {
return _brushOn;
}
_brushOn = _;
return _chart;
};
var processFeatures = function (feature, layer) {
var v = _dataMap[_chart.featureKeyAccessor()(feature)];
if (v && v.d) {
layer.key=v.d.key;
if (_chart.renderPopup())
layer.bindPopup(_chart.popup()(v.d, feature));
if (_chart.brushOn())
layer.on("click", selectFilter);
}
};
var selectFilter = function(e) {
if (!e.target) {
return;
}
var filter = e.target.key;
dc.events.trigger(function () {
_chart.filter(filter);
dc.redrawAll(_chart.chartGroup());
});
};
return _chart.anchor(parent, chartGroup);
};
dc_leaflet.bubbleChart = function (parent, chartGroup) {
"use strict";
/* ####################################
* Private variables -- default values.
* ####################################
*/
var _chart = dc_leaflet.leafletBase({});
var _selectedColor = 'blue';
var _unselectedColor = 'gray';
var _layerGroup = false;
var _location = function (d) {
return _chart.keyAccessor()(d);
};
var _r = d3.scaleLinear().domain([0, 100]);
var _brushOn = true;
var _marker = function (d, map) {
var loc = _chart.locationAccessor()(d);
var locArray = _chart.toLocArray(loc);
var latlng = L.latLng(+locArray[0], +locArray[1]);
var circle = L.circleMarker(latlng);
circle.setRadius(_chart.r()(_chart.valueAccessor()(d)));
circle.on("mouseover", function (e) {
// TODO - Tooltips!
//console.log(_chart.title()(d));
});
var key = _chart.keyAccessor()(d);
var isSelected = (-1 !== _chart.filters().indexOf(key));
circle.options.color = isSelected ? _chart.selectedColor() : _chart.unselectedColor();
return circle;
};
/* ########################
* Private helper functions
* ########################
*/
/* ################
* Public interface
* ################
*/
/**
#### .r([bubbleRadiusScale])
Get or set bubble radius scale. By default bubble chart uses ```d3.scaleLinear().domain([0, 100])``` as its r scale .
**/
_chart.r = function (_) {
if (!arguments.length) return _r;
_r = _;
return _chart;
};
_chart.brushOn = function (_) {
if (!arguments.length) {
return _brushOn;
}
_brushOn = _;
return _chart;
};
_chart.locationAccessor = function (_) {
if (!arguments.length) {
return _location;
}
_location = _;
return _chart;
};
/**
#### .selectedColor([color])
Get or set the color of a selected (filter) bubble.
*/
_chart.selectedColor = function (_) {
if (!arguments.length) {
return _selectedColor;
}
_selectedColor = _;
return _chart;
};
/**
#### .unselectedColor([color])
Get or set the color of a bubble which is not currently in the filter.
*/
_chart.unselectedColor = function (_) {
if (!arguments.length) {
return _unselectedColor;
}
_unselectedColor = _;
return _chart;
};
var createmarker = function (v, k) {
var marker = _chart.marker()(v, _chart.map());
marker.key = k;
if (_chart.brushOn()) {
marker.on("click", selectFilter);
}
return marker;
};
_chart.marker = function (_) {
if (!arguments.length) {
return _marker;
}
_marker = _;
return _chart;
};
/* Render and redraw overrides */
_chart._postRender = function () {
if (_chart.brushOn()) {
_chart.map().on('click', function (e) {
_chart.filter(null);
_chart.redrawGroup();
});
}
_chart.map().on('boxzoomend', boxzoomFilter, this);
_layerGroup = new L.LayerGroup();
_chart.map().addLayer(_layerGroup);
};
_chart._doRedraw = function () {
var groups = _chart._computeOrderedGroups(_chart.data()).filter(function (d) {
return _chart.valueAccessor()(d) !== 0;
});
_layerGroup.clearLayers();
groups.forEach(function (v, i) {
var key = _chart.keyAccessor()(v);
var marker = null;
marker = createmarker(v, key);
_layerGroup.addLayer(marker);
});
};
/* Callback functions */
function boxzoomFilter(e) {
var filters = [];
_layerGroup.eachLayer(function (layer) {
var latLng = layer.getLatLng();
if (e.boxZoomBounds.contains(latLng)) {
filters.push(layer.key);
}
});
dc.events.trigger(function (e) {
_chart.replaceFilter([filters]);
_chart.redrawGroup();
});
}
var selectFilter = function (e) {
L.DomEvent.stopPropagation(e);
var filter = e.target.key;
if (e.originalEvent.ctrlKey || e.originalEvent.metaKey) {
// If ctrl/cmd key modifier was pressed on click, toggle the target
_chart.filter(filter);
}
else {
// If ctrl key wasn't pressed, clear selection and add target
_chart.replaceFilter([[filter]]);
}
_chart.redrawGroup();
};
return _chart.anchor(parent, chartGroup);
};
dc_leaflet.d3 = d3;
dc_leaflet.crossfilter = crossfilter;
dc_leaflet.dc = dc;
return dc_leaflet;
}
if (typeof define === 'function' && define.amd) {
define(["dc"], _dc_leaflet);
} else if (typeof module == "object" && module.exports) {
var _dc = require('dc');
module.exports = _dc_leaflet(_dc);
} else {
this.dc_leaflet = _dc_leaflet(dc);
}
}
)();
//# sourceMappingURL=dc.leaflet.js.map
Name Descriptor Hectares Year Latitude Longitude
YCN Beach Optimal 3.489371967 2009 -20.81050015 115.4513141
YCN Beach Optimal 3.488416036 2010 -20.81050015 115.4513141
YCN Beach Optimal 3.476215252 2011 -20.81050015 115.4513141
YCN Beach Optimal 3.320573691 2012 -20.81050015 115.4513141
YCN Beach Optimal 3.426175204 2013 -20.81050015 115.4513141
YCN Beach Optimal 3.439568112 2014 -20.81050015 115.4513141
YCN Beach Optimal 3.297372369 2015 -20.81050015 115.4513141
YCN Beach Sub-optimal 0.031000349 2015 -20.81050015 115.4513141
YCN Beach Optimal 3.427721117 2017 -20.81050015 115.4513141
YCN Beach Unsuitable 0 2017 -20.81050015 115.4513141
Bivalve Beach Sub-optimal 0.027715216 2009 -20.79187453 115.4594189
Bivalve Beach Optimal 1.931345852 2009 -20.79187453 115.4594189
Bivalve Beach Optimal 0.049380233 2009 -20.79187453 115.4594189
Bivalve Beach Optimal 0.120301077 2009 -20.79187453 115.4594189
Bivalve Beach Optimal 0.10492518 2010 -20.79187453 115.4594189
Bivalve Beach Optimal 0.024899572 2010 -20.79187453 115.4594189
Bivalve Beach Optimal 0.001759573 2010 -20.79187453 115.4594189
Bivalve Beach Optimal 0.9649 2010 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.004861879 2010 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.154381583 2010 -20.79187453 115.4594189
Bivalve Beach Optimal 0.048963282 2010 -20.79187453 115.4594189
Bivalve Beach Optimal 0.017557808 2010 -20.79187453 115.4594189
Bivalve Beach Optimal 0.140780142 2010 -20.79187453 115.4594189
Bivalve Beach Optimal 0.737991399 2010 -20.79187453 115.4594189
Bivalve Beach Optimal 0.0001 2010 -20.79187453 115.4594189
Bivalve Beach Optimal 0.0002 2010 -20.79187453 115.4594189
Bivalve Beach Optimal 0.0001 2010 -20.79187453 115.4594189
Bivalve Beach Optimal 0.003367732 2011 -20.79187453 115.4594189
Bivalve Beach Optimal 0.002385959 2011 -20.79187453 115.4594189
Bivalve Beach Optimal 2.21E-06 2011 -20.79187453 115.4594189
Bivalve Beach Optimal 4.47E-09 2011 -20.79187453 115.4594189
Bivalve Beach Optimal 0.024611021 2011 -20.79187453 115.4594189
Bivalve Beach Optimal 0.046468766 2011 -20.79187453 115.4594189
Bivalve Beach Optimal 1.295657619 2011 -20.79187453 115.4594189
Bivalve Beach Optimal 0.147870652 2011 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.853820713 2012 -20.79187453 115.4594189
Bivalve Beach Optimal 0.0001 2012 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.000646442 2012 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.0001 2012 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.0001 2012 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.0009 2012 -20.79187453 115.4594189
Bivalve Beach Optimal 0.002181671 2012 -20.79187453 115.4594189
Bivalve Beach Optimal 2.66E-06 2012 -20.79187453 115.4594189
Bivalve Beach Optimal 0.028235007 2012 -20.79187453 115.4594189
Bivalve Beach Optimal 0.019967564 2012 -20.79187453 115.4594189
Bivalve Beach Optimal 0.119519402 2012 -20.79187453 115.4594189
Bivalve Beach Optimal 0.000271051 2012 -20.79187453 115.4594189
Bivalve Beach Optimal 0.97834589 2012 -20.79187453 115.4594189
Bivalve Beach Optimal 0.023562149 2012 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.003998507 2013 -20.79187453 115.4594189
Bivalve Beach Optimal 8.70E-06 2013 -20.79187453 115.4594189
Bivalve Beach Optimal 0.000105135 2013 -20.79187453 115.4594189
Bivalve Beach Optimal 0.037369958 2013 -20.79187453 115.4594189
Bivalve Beach Optimal 6.23E-06 2013 -20.79187453 115.4594189
Bivalve Beach Optimal 0.032589933 2013 -20.79187453 115.4594189
Bivalve Beach Optimal 0.040540493 2013 -20.79187453 115.4594189
Bivalve Beach Optimal 0.092982308 2013 -20.79187453 115.4594189
Bivalve Beach Optimal 0.001366141 2013 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.861631558 2013 -20.79187453 115.4594189
Bivalve Beach Optimal 0.874745456 2013 -20.79187453 115.4594189
Bivalve Beach Optimal 4.06E-05 2014 -20.79187453 115.4594189
Bivalve Beach Optimal 0.000235491 2014 -20.79187453 115.4594189
Bivalve Beach Optimal 0.000852837 2014 -20.79187453 115.4594189
Bivalve Beach Optimal 0.031304868 2014 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.062866926 2014 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.785477805 2014 -20.79187453 115.4594189
Bivalve Beach Optimal 0.751828122 2014 -20.79187453 115.4594189
Bivalve Beach Optimal 0.037493614 2014 -20.79187453 115.4594189
Bivalve Beach Optimal 0.034319206 2014 -20.79187453 115.4594189
Bivalve Beach Optimal 0.10803192 2014 -20.79187453 115.4594189
Bivalve Beach Optimal 0.773110105 2015 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.670258172 2015 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.031562003 2015 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.052506693 2015 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.026761824 2015 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.002629301 2015 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.008163493 2015 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.014782784 2015 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 4.06E-06 2015 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.205821415 2015 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.031256672 2015 -20.79187453 115.4594189
Bivalve Beach Optimal 4.01E-06 2016 -20.79187453 115.4594189
Bivalve Beach Optimal 4.32E-05 2016 -20.79187453 115.4594189
Bivalve Beach Optimal 7.01E-05 2016 -20.79187453 115.4594189
Bivalve Beach Optimal 0.0001 2016 -20.79187453 115.4594189
Bivalve Beach Optimal 0.0001 2016 -20.79187453 115.4594189
Bivalve Beach Optimal 0.00014255 2016 -20.79187453 115.4594189
Bivalve Beach Optimal 0.019064496 2016 -20.79187453 115.4594189
Bivalve Beach Optimal 0.023209655 2016 -20.79187453 115.4594189
Bivalve Beach Optimal 0.095038035 2016 -20.79187453 115.4594189
Bivalve Beach Optimal 0.728487781 2016 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.000938512 2016 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.003696197 2016 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.025553093 2016 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.033680802 2016 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.033690642 2016 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.045453382 2016 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.058276572 2016 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.090531731 2016 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.098624361 2016 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.136290018 2016 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.203459145 2016 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.264080335 2016 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.000190527 2016 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.000683022 2016 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.004187631 2016 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.005996574 2016 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.012826822 2016 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.014485781 2016 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.020371434 2016 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.181810174 2016 -20.79187453 115.4594189
Bivalve Beach Optimal 0.056193877 2017 -20.79187453 115.4594189
Bivalve Beach Optimal 0.683669164 2017 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.011861325 2017 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.151184923 2017 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.550307976 2017 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.033115828 2017 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.047364283 2017 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.044303429 2017 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.097603181 2017 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.027279276 2017 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.000103037 2017 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 9.70E-05 2017 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.000343091 2017 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.000261409 2017 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.000261409 2017 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 2.20E-06 2017 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 2.20E-06 2017 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 3.36E-06 2017 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.000169807 2017 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.000169807 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.000105761 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 4.18E-05 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.0003 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 3.59E-05 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 5.14E-08 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.000129643 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 1.33E-06 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 7.84E-07 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.003076037 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.001138266 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.002185317 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.007026925 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.0001 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.0007 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.0004 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.0001 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.0001 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.0002 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.000592201 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 1.70E-05 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 9.54E-06 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.000308973 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.011096571 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.038445499 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.295329044 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.0001 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.0001 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 2.12E-06 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 1.13E-05 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.0002 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 5.44E-06 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.0015 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 1.29E-05 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.017363328 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.014238321 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.001744958 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.003516457 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.000343091 2017 -20.79187453 115.4594189
Bivalve Beach Unsuitable 3.36E-06 2017 -20.79187453 115.4594189
Bivalve Beach Optimal 0.00307609 2018 -20.79187453 115.4594189
Bivalve Beach Optimal 0.055642362 2018 -20.79187453 115.4594189
Bivalve Beach Optimal 0.664517139 2018 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.002051072 2018 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.041400783 2018 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.042754367 2018 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.046156953 2018 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.053399867 2018 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.178066747 2018 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.210911382 2018 -20.79187453 115.4594189
Bivalve Beach Sub-optimal 0.336518933 2018 -20.79187453 115.4594189
Bivalve Beach Unsuitable 1.71E-05 2018 -20.79187453 115.4594189
Bivalve Beach Unsuitable 5.25E-05 2018 -20.79187453 115.4594189
Bivalve Beach Unsuitable 6.24E-05 2018 -20.79187453 115.4594189
Bivalve Beach Unsuitable 7.58E-05 2018 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.000160442 2018 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.000670285 2018 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.000833506 2018 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.012510209 2018 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.012945633 2018 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.033481195 2018 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.061502889 2018 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.064277447 2018 -20.79187453 115.4594189
Bivalve Beach Unsuitable 0.255146532 2018 -20.79187453 115.4594189
Inga Beach Optimal 0.00213204 2009 -20.80143132 115.4552075
Inga Beach Optimal 0.00669349 2009 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.008317927 2009 -20.80143132 115.4552075
Inga Beach Optimal 0.062359401 2009 -20.80143132 115.4552075
Inga Beach Optimal 0.00531847 2009 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.049922155 2009 -20.80143132 115.4552075
Inga Beach Optimal 0.130568339 2009 -20.80143132 115.4552075
Inga Beach Optimal 1.472894838 2009 -20.80143132 115.4552075
Inga Beach Optimal 0.179299781 2009 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.357109373 2009 -20.80143132 115.4552075
Inga Beach Optimal 0.001009829 2010 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.006817452 2010 -20.80143132 115.4552075
Inga Beach Optimal 0.041417337 2010 -20.80143132 115.4552075
Inga Beach Optimal 0.093679721 2010 -20.80143132 115.4552075
Inga Beach Optimal 0.03204814 2010 -20.80143132 115.4552075
Inga Beach Optimal 0.098627447 2010 -20.80143132 115.4552075
Inga Beach Optimal 1.562835089 2010 -20.80143132 115.4552075
Inga Beach Optimal 0.002034858 2010 -20.80143132 115.4552075
Inga Beach Optimal 0.009947913 2010 -20.80143132 115.4552075
Inga Beach Optimal 0.007038261 2010 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.016779702 2010 -20.80143132 115.4552075
Inga Beach Optimal 0.074985926 2010 -20.80143132 115.4552075
Inga Beach Optimal 9.54E-06 2010 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.281549525 2010 -20.80143132 115.4552075
Inga Beach Sub-optimal 2.11E-05 2010 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.009928108 2010 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.105124303 2010 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.0001 2010 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.0001 2010 -20.80143132 115.4552075
Inga Beach Optimal 0.0001 2011 -20.80143132 115.4552075
Inga Beach Optimal 2.88E-05 2011 -20.80143132 115.4552075
Inga Beach Optimal 0.000370632 2011 -20.80143132 115.4552075
Inga Beach Optimal 0.005850877 2011 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.007825357 2011 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.004339585 2011 -20.80143132 115.4552075
Inga Beach Optimal 3.85E-06 2011 -20.80143132 115.4552075
Inga Beach Optimal 0.008743697 2011 -20.80143132 115.4552075
Inga Beach Optimal 0.055212098 2011 -20.80143132 115.4552075
Inga Beach Optimal 0.041310635 2011 -20.80143132 115.4552075
Inga Beach Optimal 0.120820466 2011 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.235447248 2011 -20.80143132 115.4552075
Inga Beach Optimal 1.295219082 2011 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.453341672 2011 -20.80143132 115.4552075
Inga Beach Optimal 0.0001 2012 -20.80143132 115.4552075
Inga Beach Optimal 0.0001 2012 -20.80143132 115.4552075
Inga Beach Optimal 0.0003 2012 -20.80143132 115.4552075
Inga Beach Optimal 9.10E-05 2012 -20.80143132 115.4552075
Inga Beach Optimal 0.002519758 2012 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.009188911 2012 -20.80143132 115.4552075
Inga Beach Optimal 0.009467066 2012 -20.80143132 115.4552075
Inga Beach Optimal 0.029427815 2012 -20.80143132 115.4552075
Inga Beach Optimal 0.082730227 2012 -20.80143132 115.4552075
Inga Beach Optimal 0.017348772 2012 -20.80143132 115.4552075
Inga Beach Optimal 0.098847796 2012 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.004065228 2012 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.007690828 2012 -20.80143132 115.4552075
Inga Beach Optimal 0.10445315 2012 -20.80143132 115.4552075
Inga Beach Optimal 1.303694526 2012 -20.80143132 115.4552075
Inga Beach Optimal 0.012342875 2012 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.445467826 2012 -20.80143132 115.4552075
Inga Beach Optimal 0.008412414 2013 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.002536482 2013 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.422206373 2013 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.337614772 2013 -20.80143132 115.4552075
Inga Beach Optimal 1.39183129 2013 -20.80143132 115.4552075
Inga Beach Optimal 2.27E-05 2014 -20.80143132 115.4552075
Inga Beach Optimal 0.148515916 2014 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.374938534 2014 -20.80143132 115.4552075
Inga Beach Optimal 1.326629799 2014 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.191035492 2014 -20.80143132 115.4552075
Inga Beach Optimal 1.34827491 2015 -20.80143132 115.4552075
Inga Beach Optimal 0.102210417 2015 -20.80143132 115.4552075
Inga Beach Optimal 0.06313827 2015 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.193146932 2015 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.218178807 2015 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.010889938 2015 -20.80143132 115.4552075
Inga Beach Optimal 5.49E-07 2016 -20.80143132 115.4552075
Inga Beach Optimal 5.65E-07 2016 -20.80143132 115.4552075
Inga Beach Optimal 1.07E-06 2016 -20.80143132 115.4552075
Inga Beach Optimal 6.00E-06 2016 -20.80143132 115.4552075
Inga Beach Optimal 9.00E-06 2016 -20.80143132 115.4552075
Inga Beach Optimal 1.03E-05 2016 -20.80143132 115.4552075
Inga Beach Optimal 1.71E-05 2016 -20.80143132 115.4552075
Inga Beach Optimal 0.026962119 2016 -20.80143132 115.4552075
Inga Beach Optimal 0.159736155 2016 -20.80143132 115.4552075
Inga Beach Optimal 1.196404695 2016 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.269979774 2016 -20.80143132 115.4552075
Inga Beach Unsuitable 0.015566776 2016 -20.80143132 115.4552075
Inga Beach Unsuitable 0.285649663 2016 -20.80143132 115.4552075
Inga Beach Unsuitable 0.328908813 2016 -20.80143132 115.4552075
Inga Beach Optimal 1.162610333 2017 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.194094488 2017 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.066972646 2017 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.140464001 2017 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.105057956 2017 -20.80143132 115.4552075
Inga Beach Unsuitable 0.307901134 2017 -20.80143132 115.4552075
Inga Beach Unsuitable 0.286978695 2017 -20.80143132 115.4552075
Inga Beach Unsuitable 0.0001 2017 -20.80143132 115.4552075
Inga Beach Unsuitable 1.61E-06 2017 -20.80143132 115.4552075
Inga Beach Unsuitable 9.32E-07 2017 -20.80143132 115.4552075
Inga Beach Unsuitable 4.90E-05 2017 -20.80143132 115.4552075
Inga Beach Unsuitable 7.74E-05 2017 -20.80143132 115.4552075
Inga Beach Unsuitable 9.23E-06 2017 -20.80143132 115.4552075
Inga Beach Unsuitable 0.000100875 2017 -20.80143132 115.4552075
Inga Beach Unsuitable 6.08E-05 2017 -20.80143132 115.4552075
Inga Beach Unsuitable 5.31E-05 2017 -20.80143132 115.4552075
Inga Beach Unsuitable 0.0001 2017 -20.80143132 115.4552075
Inga Beach Unsuitable 2.36E-06 2017 -20.80143132 115.4552075
Inga Beach Unsuitable 7.62E-06 2017 -20.80143132 115.4552075
Inga Beach Unsuitable 2.29E-05 2017 -20.80143132 115.4552075
Inga Beach Unsuitable 0.001 2017 -20.80143132 115.4552075
Inga Beach Unsuitable 0.001 2017 -20.80143132 115.4552075
Inga Beach Unsuitable 0.000284006 2017 -20.80143132 115.4552075
Inga Beach Unsuitable 2.56E-05 2017 -20.80143132 115.4552075
Inga Beach Unsuitable 2.69E-06 2017 -20.80143132 115.4552075
Inga Beach Unsuitable 0.00015005 2017 -20.80143132 115.4552075
Inga Beach Unsuitable 0.009685743 2017 -20.80143132 115.4552075
Inga Beach Unsuitable 0.010584484 2017 -20.80143132 115.4552075
Inga Beach Optimal 0.680236503 2018 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.006878172 2018 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.033949048 2018 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.035458749 2018 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.045843463 2018 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.082365651 2018 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.105273764 2018 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.10877329 2018 -20.80143132 115.4552075
Inga Beach Sub-optimal 0.824496801 2018 -20.80143132 115.4552075
Inga Beach Unsuitable 0.027063806 2018 -20.80143132 115.4552075
Inga Beach Unsuitable 0.040010288 2018 -20.80143132 115.4552075
Inga Beach Unsuitable 0.296066461 2018 -20.80143132 115.4552075
Terminal Beach Optimal 0.146197754 2009 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.111737157 2009 -20.78527239 115.4645364
Terminal Beach Optimal 2.033221332 2009 -20.78527239 115.4645364
Terminal Beach Optimal 5.22E-06 2009 -20.78527239 115.4645364
Terminal Beach Optimal 0.004981651 2009 -20.78527239 115.4645364
Terminal Beach Optimal 0.008651609 2009 -20.78527239 115.4645364
Terminal Beach Optimal 0.055237781 2009 -20.78527239 115.4645364
Terminal Beach Optimal 0.160945542 2010 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.099820149 2010 -20.78527239 115.4645364
Terminal Beach Optimal 0.095709336 2010 -20.78527239 115.4645364
Terminal Beach Optimal 0.086121516 2010 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.009714191 2010 -20.78527239 115.4645364
Terminal Beach Optimal 0.028275535 2010 -20.78527239 115.4645364
Terminal Beach Optimal 0.015170892 2010 -20.78527239 115.4645364
Terminal Beach Optimal 0.033703952 2010 -20.78527239 115.4645364
Terminal Beach Optimal 0.05240095 2010 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.012565576 2010 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.007184831 2010 -20.78527239 115.4645364
Terminal Beach Optimal 1.313877236 2010 -20.78527239 115.4645364
Terminal Beach Optimal 0.0001 2010 -20.78527239 115.4645364
Terminal Beach Optimal 0.0001 2010 -20.78527239 115.4645364
Terminal Beach Optimal 0.134486292 2010 -20.78527239 115.4645364
Terminal Beach Optimal 0.0001 2010 -20.78527239 115.4645364
Terminal Beach Optimal 0.377093957 2010 -20.78527239 115.4645364
Terminal Beach Optimal 0.017853947 2010 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.016483358 2010 -20.78527239 115.4645364
Terminal Beach Optimal 0.20595307 2011 -20.78527239 115.4645364
Terminal Beach Optimal 1.004618671 2011 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.084150056 2011 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.410475039 2011 -20.78527239 115.4645364
Terminal Beach Optimal 0.063928322 2011 -20.78527239 115.4645364
Terminal Beach Optimal 0.294254722 2011 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.014069717 2011 -20.78527239 115.4645364
Terminal Beach Optimal 0.160514838 2011 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.026173491 2011 -20.78527239 115.4645364
Terminal Beach Optimal 4.77E-06 2011 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.010214133 2012 -20.78527239 115.4645364
Terminal Beach Optimal 0.184040587 2012 -20.78527239 115.4645364
Terminal Beach Optimal 0.0001 2012 -20.78527239 115.4645364
Terminal Beach Optimal 0.0001 2012 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.123100808 2012 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.889957352 2012 -20.78527239 115.4645364
Terminal Beach Optimal 0.628260891 2012 -20.78527239 115.4645364
Terminal Beach Sub-optimal 2.19E-05 2012 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.123886526 2012 -20.78527239 115.4645364
Terminal Beach Optimal 0.177168821 2013 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.802589341 2013 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.128229708 2013 -20.78527239 115.4645364
Terminal Beach Optimal 0.755436701 2013 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.131729914 2013 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.002824339 2014 -20.78527239 115.4645364
Terminal Beach Optimal 0.146796894 2014 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.121039384 2014 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.433291864 2014 -20.78527239 115.4645364
Terminal Beach Optimal 0.752650749 2014 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.309898618 2014 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.023223699 2014 -20.78527239 115.4645364
Terminal Beach Optimal 0.033615209 2015 -20.78527239 115.4645364
Terminal Beach Optimal 0.021083674 2015 -20.78527239 115.4645364
Terminal Beach Optimal 0.011526534 2015 -20.78527239 115.4645364
Terminal Beach Optimal 0.822236639 2015 -20.78527239 115.4645364
Terminal Beach Optimal 8.29E-07 2015 -20.78527239 115.4645364
Terminal Beach Optimal 0.004885041 2015 -20.78527239 115.4645364
Terminal Beach Optimal 0.000901947 2015 -20.78527239 115.4645364
Terminal Beach Optimal 0.00572066 2015 -20.78527239 115.4645364
Terminal Beach Optimal 0.005410731 2015 -20.78527239 115.4645364
Terminal Beach Optimal 0.006183144 2015 -20.78527239 115.4645364
Terminal Beach Optimal 0.005303903 2015 -20.78527239 115.4645364
Terminal Beach Optimal 0.011945777 2015 -20.78527239 115.4645364
Terminal Beach Optimal 0.011376394 2015 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.375266296 2015 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.340391524 2015 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.02134685 2015 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.000105667 2015 -20.78527239 115.4645364
Terminal Beach Optimal 1.80E-05 2016 -20.78527239 115.4645364
Terminal Beach Optimal 0.019276851 2016 -20.78527239 115.4645364
Terminal Beach Optimal 0.046218277 2016 -20.78527239 115.4645364
Terminal Beach Optimal 0.112568531 2016 -20.78527239 115.4645364
Terminal Beach Optimal 0.575526492 2016 -20.78527239 115.4645364
Terminal Beach Sub-optimal 3.27E-05 2016 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.00755861 2016 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.011014527 2016 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.014698906 2016 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.015692598 2016 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.036824367 2016 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.037982768 2016 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.039256626 2016 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.074068506 2016 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.106501593 2016 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.174934273 2016 -20.78527239 115.4645364
Terminal Beach Unsuitable 1.27E-05 2016 -20.78527239 115.4645364
Terminal Beach Unsuitable 1.79E-05 2016 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.00092624 2016 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.003105937 2016 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.004690795 2016 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.007630752 2016 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.008374154 2016 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.008687455 2016 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.009839309 2016 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.016663484 2016 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.018602122 2016 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.023723475 2016 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.088209733 2016 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.099668694 2016 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.706980961 2016 -20.78527239 115.4645364
Terminal Beach Optimal 0.841127935 2017 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.112913377 2017 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.33836844 2017 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.109154493 2017 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.253805582 2017 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.002500325 2017 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.012095418 2017 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.021929754 2017 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.001398007 2017 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.024423224 2017 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.02433609 2017 -20.78527239 115.4645364
Terminal Beach Unsuitable 5.50E-05 2017 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.026608938 2017 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.005885972 2017 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.169990452 2017 -20.78527239 115.4645364
Terminal Beach Unsuitable 1.47E-06 2017 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.39586888 2017 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.003911139 2017 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.001345895 2017 -20.78527239 115.4645364
Terminal Beach Unsuitable 7.07E-06 2017 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.0002 2017 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.001997036 2017 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.0002 2017 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.0002 2017 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.0002 2017 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.0007 2017 -20.78527239 115.4645364
Terminal Beach Unsuitable 4.50E-05 2017 -20.78527239 115.4645364
Terminal Beach Unsuitable 5.83E-05 2017 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.00074798 2017 -20.78527239 115.4645364
Terminal Beach Unsuitable 1.19E-05 2017 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.018025299 2017 -20.78527239 115.4645364
Terminal Beach Optimal 0.740679834 2018 -20.78527239 115.4645364
Terminal Beach Sub-optimal 3.10E-05 2018 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.000468702 2018 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.000966255 2018 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.00132665 2018 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.001594347 2018 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.002786778 2018 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.003256272 2018 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.005089722 2018 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.005982548 2018 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.00702702 2018 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.026179257 2018 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.048082182 2018 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.048610657 2018 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.066107307 2018 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.077910109 2018 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.087937477 2018 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.12919101 2018 -20.78527239 115.4645364
Terminal Beach Sub-optimal 0.20270017 2018 -20.78527239 115.4645364
Terminal Beach Unsuitable 1.02E-06 2018 -20.78527239 115.4645364
Terminal Beach Unsuitable 1.19E-05 2018 -20.78527239 115.4645364
Terminal Beach Unsuitable 2.64E-05 2018 -20.78527239 115.4645364
Terminal Beach Unsuitable 4.43E-05 2018 -20.78527239 115.4645364
Terminal Beach Unsuitable 7.66E-05 2018 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.000129728 2018 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.000163997 2018 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.000167221 2018 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.000309532 2018 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.000475583 2018 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.000555443 2018 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.000756326 2018 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.0014645 2018 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.002072054 2018 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.002795491 2018 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.008569444 2018 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.013923516 2018 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.241887342 2018 -20.78527239 115.4645364
Terminal Beach Unsuitable 0.539169009 2018 -20.78527239 115.4645364
YCS Beach Optimal 1.677693965 2009 -20.81977078 115.4481556
YCS Beach Optimal 0.0007 2009 -20.81977078 115.4481556
YCS Beach Sub-optimal 0.000218478 2009 -20.81977078 115.4481556
YCS Beach Optimal 1.765721868 2009 -20.81977078 115.4481556
YCS Beach Sub-optimal 0.318368109 2009 -20.81977078 115.4481556
YCS Beach Sub-optimal 0.721067462 2009 -20.81977078 115.4481556
YCS Beach Optimal 1.51207637 2010 -20.81977078 115.4481556
YCS Beach Optimal 0.033748447 2010 -20.81977078 115.4481556
YCS Beach Optimal 1.19E-05 2010 -20.81977078 115.4481556
YCS Beach Optimal 0.059547928 2010 -20.81977078 115.4481556
YCS Beach Optimal 0.09804988 2010 -20.81977078 115.4481556
YCS Beach Sub-optimal 0.019915126 2010 -20.81977078 115.4481556
YCS Beach Optimal 1.833477422 2010 -20.81977078 115.4481556
YCS Beach Sub-optimal 0.317770184 2010 -20.81977078 115.4481556
YCS Beach Sub-optimal 0.0006 2010 -20.81977078 115.4481556
YCS Beach Sub-optimal 0.0001 2010 -20.81977078 115.4481556
YCS Beach Sub-optimal 0.000588664 2010 -20.81977078 115.4481556
YCS Beach Sub-optimal 0.656964262 2010 -20.81977078 115.4481556
YCS Beach Optimal 0.0002 2011 -20.81977078 115.4481556
YCS Beach Optimal 1.877484468 2011 -20.81977078 115.4481556
YCS Beach Sub-optimal 0.307540074 2011 -20.81977078 115.4481556
YCS Beach Optimal 1.804230978 2011 -20.81977078 115.4481556
YCS Beach Sub-optimal 0.589916582 2011 -20.81977078 115.4481556
YCS Beach Optimal 3.60E-05 2012 -20.81977078 115.4481556
YCS Beach Optimal 1.73E-05 2012 -20.81977078 115.4481556
YCS Beach Optimal 1.685598 2012 -20.81977078 115.4481556
YCS Beach Optimal 2.017920965 2012 -20.81977078 115.4481556
YCS Beach Sub-optimal 0.375587307 2012 -20.81977078 115.4481556
YCS Beach Sub-optimal 0.470293772 2012 -20.81977078 115.4481556
YCS Beach Optimal 1.804417891 2013 -20.81977078 115.4481556
YCS Beach Sub-optimal 0.24604519 2013 -20.81977078 115.4481556
YCS Beach Optimal 1.751204522 2013 -20.81977078 115.4481556
YCS Beach Sub-optimal 0.685392111 2013 -20.81977078 115.4481556
YCS Beach Optimal 1.558465637 2014 -20.81977078 115.4481556
YCS Beach Optimal 1.770594508 2014 -20.81977078 115.4481556
YCS Beach Sub-optimal 0.427173921 2014 -20.81977078 115.4481556
YCS Beach Sub-optimal 0.798449363 2014 -20.81977078 115.4481556
YCS Beach Optimal 1.637737169 2015 -20.81977078 115.4481556
YCS Beach Optimal 1.740624668 2015 -20.81977078 115.4481556
YCS Beach Optimal 0.000197545 2015 -20.81977078 115.4481556
YCS Beach Sub-optimal 0.756915728 2015 -20.81977078 115.4481556
YCS Beach Sub-optimal 0.373136894 2015 -20.81977078 115.4481556
YCS Beach Optimal 8.71E-07 2017 -20.81977078 115.4481556
YCS Beach Optimal 1.590408032 2017 -20.81977078 115.4481556
YCS Beach Optimal 1.500559707 2017 -20.81977078 115.4481556
YCS Beach Sub-optimal 0.521522508 2017 -20.81977078 115.4481556
YCS Beach Sub-optimal 2.34E-07 2017 -20.81977078 115.4481556
YCS Beach Sub-optimal 5.07E-06 2017 -20.81977078 115.4481556
YCS Beach Sub-optimal 0.000835223 2017 -20.81977078 115.4481556
YCS Beach Sub-optimal 0.03768211 2017 -20.81977078 115.4481556
YCS Beach Sub-optimal 0.746178358 2017 -20.81977078 115.4481556
YCS Beach Sub-optimal 0.000342256 2017 -20.81977078 115.4481556
YCS Beach Sub-optimal 0.000257744 2017 -20.81977078 115.4481556
YCS Beach Unsuitable 0.0008 2017 -20.81977078 115.4481556
YCS Beach Unsuitable 0.0014 2017 -20.81977078 115.4481556
YCS Beach Unsuitable 0.0005 2017 -20.81977078 115.4481556
YCS Beach Unsuitable 0.0002 2017 -20.81977078 115.4481556
YCS Beach Unsuitable 0.02186897 2017 -20.81977078 115.4481556
Mushroom Beach Optimal 0.0001 2012 -20.77001978 115.4689299
Mushroom Beach Optimal 0.0001 2012 -20.77001978 115.4689299
Mushroom Beach Optimal 3.211100893 2012 -20.77001978 115.4689299
Mushroom Beach Sub-optimal 0.459044811 2012 -20.77001978 115.4689299
Mushroom Beach Optimal 3.256596685 2013 -20.77001978 115.4689299
Mushroom Beach Sub-optimal 0.467117972 2013 -20.77001978 115.4689299
Mushroom Beach Optimal 2.36E-05 2014 -20.77001978 115.4689299
Mushroom Beach Optimal 0.0001 2014 -20.77001978 115.4689299
Mushroom Beach Optimal 3.229805317 2014 -20.77001978 115.4689299
Mushroom Beach Sub-optimal 0.453528377 2014 -20.77001978 115.4689299
Mushroom Beach Optimal 3.213917436 2015 -20.77001978 115.4689299
Mushroom Beach Optimal 0.040405687 2015 -20.77001978 115.4689299
Mushroom Beach Sub-optimal 0.211038232 2015 -20.77001978 115.4689299
Mushroom Beach Sub-optimal 0.012069489 2015 -20.77001978 115.4689299
Mushroom Beach Sub-optimal 0.006419261 2015 -20.77001978 115.4689299
Mushroom Beach Optimal 3.40E-05 2016 -20.77001978 115.4689299
Mushroom Beach Optimal 0.0001 2016 -20.77001978 115.4689299
Mushroom Beach Optimal 0.0001 2016 -20.77001978 115.4689299
Mushroom Beach Optimal 0.148636459 2016 -20.77001978 115.4689299
Mushroom Beach Optimal 3.1581453 2016 -20.77001978 115.4689299
Mushroom Beach Sub-optimal 0.036544423 2016 -20.77001978 115.4689299
Mushroom Beach Sub-optimal 0.214757377 2016 -20.77001978 115.4689299
Mushroom Beach Unsuitable 0.005523402 2016 -20.77001978 115.4689299
Mushroom Beach Unsuitable 0.155202402 2016 -20.77001978 115.4689299
Mushroom Beach Optimal 3.426501096 2017 -20.77001978 115.4689299
Mushroom Beach Optimal 0.004832563 2017 -20.77001978 115.4689299
Mushroom Beach Sub-optimal 0.229308736 2017 -20.77001978 115.4689299
Mushroom Beach Unsuitable 2.12E-05 2017 -20.77001978 115.4689299
Mushroom Beach Unsuitable 0.005822199 2017 -20.77001978 115.4689299
Mushroom Beach Unsuitable 3.62E-05 2017 -20.77001978 115.4689299
Mushroom Beach Unsuitable 0.001887391 2017 -20.77001978 115.4689299
Mushroom Beach Unsuitable 1.58E-05 2017 -20.77001978 115.4689299
Mushroom Beach Unsuitable 0.077387868 2017 -20.77001978 115.4689299
Mushroom Beach Unsuitable 0.0001 2017 -20.77001978 115.4689299
Mushroom Beach Unsuitable 0.121684519 2017 -20.77001978 115.4689299
Mushroom Beach Unsuitable 0.000270477 2017 -20.77001978 115.4689299
Mushroom Beach Optimal 3.367063226 2018 -20.77001978 115.4689299
Mushroom Beach Sub-optimal 0.276784645 2018 -20.77001978 115.4689299
Mushroom Beach Unsuitable 0.013505737 2018 -20.77001978 115.4689299
Mushroom Beach Unsuitable 0.073961669 2018 -20.77001978 115.4689299
Mushroom Beach Unsuitable 0.138012204 2018 -20.77001978 115.4689299
<!--<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">-->
<!DOCTYPE html>
<html lang="en">
<head>
<title>BMT-Ecology</title>
<link rel="shortcut icon" href="https://bmt.cloud.databricks.com/media/bmt-favicon.24e70a2e.ico">
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.css">
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/dc/3.0.6/dc.css"/>
<link type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.3.4/leaflet.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.3.4/images/marker-icon.png" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.3.4/images/marker-icon-2x.png" />
<link type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet.markercluster/1.4.1/MarkerCluster.Default.css" rel="stylesheet"/>
<link type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet.markercluster/1.4.1/MarkerCluster.css" rel="stylesheet"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<!--<script src="https://gist.github.com/xhinking/9341806.js"></script>-->
<style>
#monthly-volume-chart g.y {
display: none;
}
#container{width:100%;}
#left{float:left;width:20px;}
#right{float:right;width:20px;}
#center{margin:0 auto;width:800px;}
#paging {
text-align: right;
}
#data-table th span { /*Glyphicon style*/
float: right;
font-size: 1em;
color: #0080bf;
display: inline-block;
}
#dc-table-graph th {
cursor: pointer;
}
.dc-chart g.row text {fill: black;}
#holder>div {
padding:30px 0;
clear:both;
}
.map {
width:600px;
height:350px;
}
</style>
</head>
<body>
<div id="container">
<div id="left"></div>
<div id="right">
</div>
<div id="center"></div>
</div>
<div class="container">
<h2>Turtle Nesting Study Area</h2>
<div class="row">
<div id="demo1" align="center">
<!--<strong>Average Values (Top 20)</strong>-->
<a class="reset" href="javascript:marker.filterAll();dc.redrawAll();" style="display: none;">reset</a>
<div class="map"></div>
<div class="clearfix"></div>
</div>
</div>
<div class="row">
<div id="search-chart"></div>
<!--<div style="clear:both;">-->
<div id="year-chart" align="center">
<strong>Year</strong>
<a class="reset" href="javascript:yearChart.filterAll();dc.redrawAll();" style="display: none;">reset</a>
<div class="clearfix"></div>
</div>
<div id="name-chart" align="center">
<strong>Name</strong>
<a class="reset" href="javascript:nameChart.filterAll();dc.redrawAll();" style="display: none;">reset</a>
<div class="clearfix"></div>
</div>
<div id="descriptor-chart" align="center">
<strong>Descriptor</strong>
<a class="reset" href="javascript:descriptorChart.filterAll();dc.redrawAll();" style="display: none;">reset</a>
<div class="clearfix"></div>
</div>
<div id="hectares-chart" align="center">
<strong>Hectares by Location</strong>
<a class="reset" href="javascript:hectaresChart.filterAll();dc.redrawAll();" style="display: none;">reset</a>
<div class="clearfix"></div>
</div>
<div class="row">
<div>
<div class="dc-data-count" align="center">
<span class="filter-count"></span> selected out of <span class="total-count"></span> records | <a
href="javascript:dc.filterAll(); dc.renderAll();">Reset All</a>
</div>
</div>
<table class="table table-hover dc-data-table">
</table>
</div>
<div class="clearfix"></div>
</div>
</div>
<!--<script type="text/javascript" src="js/d3.js"></script>-->
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.5.0/d3.js"></script>
<!--<script src="https://d3js.org/d3-time.v1.min.js"></script>
<script src="https://d3js.org/d3-time-format.v2.min.js"></script>-->
<!--<script type="text/javascript" src="js/crossfilter.js"></script>-->
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/crossfilter/1.3.12/crossfilter.js"></script>
<!--<script type="text/javascript" src="js/dc.js"></script>-->
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/dc/3.0.6/dc.js"></script>
<!--<script type="text/javascript" src="js/d3.js"></script>-->
<!--<script type="text/javascript" src="js/crossfilter.js"></script>-->
<!--<script type="text/javascript" src="js/dc.js"></script>-->
<!--<script type="text/javascript" src="../dc.leaflet.js-master/web/js/leaflet.js"></script>-->
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.3.4/leaflet.js"></script>
<!--<script src="../dc.leaflet.js-master/web/js/colorbrewer.js"></script>-->
<!--<script type="text/javascript" src="../dc.leaflet.js-master/web/js/leaflet.markercluster.js"></script>-->
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/leaflet.markercluster/1.4.1/leaflet.markercluster.js"></script>
<!--<script type="text/javascript" src="../dc.leaflet.js-master/web/js/dc.leaflet.js"></script>-->
<script type="text/javascript" src="dc.leaflet.js"></script>
<script type="text/javascript" src="turtleAreas.js"></script>
</body>
</html>
//# dc.js Getting Started and How-To Guide
'use strict';
// dc.config.defaultColors(d3.schemeCategory10);
dc.config.defaultColors(d3.schemePaired);
// Note: It is often a good idea to have these objects accessible at the global scope so that they can be modified or
// filtered by other page controls.
var yearChart = dc.pieChart('#year-chart');
var nameChart = dc.pieChart('#name-chart');
var descriptorChart = dc.pieChart('#descriptor-chart');
var hectaresChart = dc.barChart('#hectares-chart');
var sampleCount = dc.dataCount('.dc-data-count');
var samplesTable = dc.dataTable('.dc-data-table');
var groupname = "marker-select";
// var marker = dc_leaflet.markerChart("#demo1 .map",groupname);
var marker = dc_leaflet.markerChart("#demo1 .map");
var pie = dc.pieChart("#demo1 .pie",groupname);
var searchChart = dc.textFilterWidget("#search-chart");
d3.csv('finalResult1.csv').then(function (data) {
var numberFormat = d3.format('.2f');
data.forEach(function (d) {
d.Year = +d.Year;
// d.Lab_Detection_Limit = (d.Lab_Detection_Limit==="NAN")? 1e-9:+d.Lab_Detection_Limit;
d.Hectares = +d.Hectares;
d.geo = +d.Latitude+","+d.Longitude;
});
//### Create Crossfilter Dimensions and Groups
var xf = crossfilter(data);
var all = xf.groupAll();
var searchDimension = xf.dimension(function (d) {
return d.Year + ' ' + d.Name + ' ' + d.Descriptor + ' ' + d.Hectares;
});
// Create categorical dimension
var nameDim = xf.dimension(function (d) {
return d.Name;
});
// Produce counts records in the dimension
var nameGroup = nameDim.group();
var nameDescDim = xf.dimension(function (d) {
return d.Name;
});
// var nameDescriptorGroup = nameDescDim.group().reduce(reduceAdd, reduceRemove, reduceInitial);
// print_filter(nameDescDim);
// Create categorical dimension
var descriptor = xf.dimension(function (d) {
return d.Descriptor;
});
// Produce counts records in the dimension
var descriptorGroup = descriptor.group();
var yearDim = xf.dimension(function (d) {
return d.Year;
});
var yearGroup = yearDim.group();
var location = xf.dimension(function(d) { return d.geo; });
var locationGroup = location.group().reduceCount();
nameChart /* dc.pieChart('#gain-loss-chart', 'chartGroup') */
// (_optional_) define chart width, `default = 200`
.width(250)
// (optional) define chart height, `default = 200`
.height(250)
// Define pie radius
.radius(100)
// Set dimension
.innerRadius(30)
.dimension(nameDim)
// Set group
.group(nameGroup);
descriptorChart /* dc.pieChart('#gain-loss-chart', 'chartGroup') */
// (_optional_) define chart width, `default = 200`
.width(250)
// (optional) define chart height, `default = 200`
.height(250)
// Define pie radius
.radius(100)
// Set dimension
.innerRadius(30)
.dimension(descriptor)
// Set group
.group(descriptorGroup);
yearChart /* dc.pieChart('#quarter-chart', 'chartGroup') */
.width(250)
.height(250)
.radius(100)
.innerRadius(30)
.dimension(yearDim)
.group(yearGroup)
.render();
var nameDimension = xf.dimension(function(d) {return d.Name;});
var hectaresGroup = nameDimension.group().reduce(function (p, v) {
p[v.Descriptor] = (p[v.Descriptor] || 0) + v.Hectares;
return p;
}, function(p, v) {
p[v.Descriptor] = (p[v.Descriptor] || 0) - v.Hectares;
return p;
}, function() {
return {};
});
function sel_stack(i) {
return function(d) {
return d.value[i];
};
}
var desc = ['Optimal', 'Sub-optimal', 'Unsuitable'];
hectaresChart
.width(768)
.height(480)
.x(d3.scaleBand())
.xUnits(dc.units.ordinal)
.margins({left: 80, top: 20, right: 10, bottom: 20})
.brushOn(false)
.clipPadding(10)
.title(function(d) {
console.log(this);
return d.key + '[' + this.layer + ']: ' + d.value[this.layer];
})
.dimension(nameDimension)
.group(hectaresGroup, desc[0], sel_stack(desc[0]))
.renderLabel(true);
hectaresChart.legend(dc.legend());
dc.override(hectaresChart, 'legendables', function() {
var items = hectaresChart._legendables();
return items.reverse();
});
for(var i = 1; i<desc.length; ++i)
hectaresChart.stack(hectaresGroup, desc[i], sel_stack(desc[i]));
hectaresChart.render();
sampleCount /* dc.dataCount('.dc-data-count', 'chartGroup'); */
.dimension(xf)
.group(all)
// (_optional_) `.html` sets different html when some records or all records are selected.
// `.html` replaces everything in the anchor with the html given using the following function.
// `%filter-count` and `%total-count` are replaced with the values obtained.
.html({
some: '<strong>%filter-count</strong> selected out of <strong>%total-count</strong> records' +
' | <a href=\'javascript:dc.filterAll(); dc.renderAll();\'>Reset All</a>',
all: 'All records:<strong>%total-count</strong>'
});
samplesTable /* dc.dataTable('.dc-data-table', 'chartGroup') */
.dimension(yearDim)
// (_optional_) max number of records to be shown, `default = 25`
.group(function () {
return 'Parameters';
})
.size(50)
.columns([
'Year',
'Name',
'Descriptor',
'Hectares'
])
// (optional) sort using the given field, :default = function(d){return d;}
.sortBy(function(d){ return -d.Value; })
// (optional) sort order, :default ascending
// .order(d3.descending())
;
searchChart.dimension(searchDimension);
marker.dimension(location)
.group(locationGroup)
.width(1200)
.height(300)
.center([-20.79647816005, 115.457927070833])
.zoom(12)
// .cluster(true);
.renderPopup(false)
.filterByArea(true);
//#### Rendering
//simply call `.renderAll()` to render all charts on the page
// dc.renderAll();
dc.renderAll();
});
//#### Versions
//Determine the current version of dc with `dc.version`
d3.selectAll('#version').text(dc.version);
// Determine latest stable version in the repo via Github API
d3.json('https://api.github.com/repos/dc-js/dc.js/releases/latest').then(function (latestRelease) {
/*jshint camelcase: false */
/* jscs:disable */
d3.selectAll('#latest').text(latestRelease.tag_name);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment