Remove some of series' labels in chart - echarts

I'm using echarts to display a stacked bar chart. There are 2 series of 360 data points. I'd like to show the series labels, there are 360 labels and they overlap and make it impossible to read the labels. Is there a way to automatically adjust how many labels are displayed? For example for 360 data points, it should only show 10 of those labels. The number of data points changes, so this has to be a dynamic solution based on the number of data points.
Currently, the labels look like this:
highcharts renders the same data like this:
My chart options:
chartOptions: {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
yAxis: {
type: 'value'
},
xAxis: {
type: 'category',
data: Array.from(Array(360).keys())
},
series: [
{
name: 'Direct',
type: 'bar',
stack: 'total',
label: {
show: true
},
emphasis: {
focus: 'series'
},
data: [
180.80271365259728,
181.78206168488214,
182.76671451900847,
183.75670088931975,
184.75204968580374,
185.752789954935,
186.7589509005245,
187.7705618845689,
188.78765242811028,
189.81025221209597,
190.83839107824474,
191.87209902991867,
192.91140623299748,
193.95634301675955,
195.00693987476689,
196.0632274657553,
197.12523661452815,
198.19299831285684,
199.2665437203848,
200.3459041655367,
201.4311111464333,
202.52219633180994,
203.61919156194062,
204.72212884956775,
205.83104038083616,
206.9459585162324,
208.0669157915288,
209.193944918733,
210.32707878704264,
211.46635046380584,
212.61179319548478,
213.76344040862705,
214.9213257108404,
216.08548289177406,
217.25594592410448,
218.4327489645268,
219.6159263547513,
220.80551262250606,
222.00154248254466,
223.20405083765854,
224.41307277969577,
225.62864359058585,
226.85079874336816,
228.07957390322804,
229.3150049285373,
230.5571278719001,
231.80597898120618,
233.0615947006877,
234.32401167198304,
235.59326673520627,
236.86939693002205,
238.15243949672617,
239.44243187733332,
240.739411716669,
242.04341686346766,
243.35448537147818,
244.67265550057357,
245.9979657178685,
247.33045469884019,
248.67016132845902,
250.01712470232144,
251.37138412779234,
252.73297912515113,
254.10194942874568,
255.47833498815135,
256.86217596933716,
258.25351275583773,
259.65238594993195,
261.0588363738275,
262.47290507085233,
263.89463330665274,
265.32406257039713,
266.7612345759868,
268.20619126327347,
269.6589747992829,
271.1196275794456,
272.58819222883426,
274.0647116034071,
275.54922879125877,
277.0417871138782,
278.54243012741165,
280.0512016239352,
281.56814563273144,
283.09330642157545,
284.6267284980256,
286.1684566107233,
287.71853575069804,
289.277011152681,
290.8439282964247,
292.41933290803036,
294.00327096128217,
295.59578867898915,
297.19693253433377,
298.8067492522281,
300.42528581067756,
302.0525894421522,
303.68870763496375,
305.33368813465313,
306.98757894538244,
308.65042833133657,
310.3222848181314,
312.00319719422953,
313.693214512365,
315.3923860909737,
317.10076151563305,
318.8183906405094,
320.54532358981226,
322.2816107592571,
324.02730281753645,
325.78245070779803,
327.54710564913205,
329.32131913806484,
331.1051429500627,
332.8986291410422,
334.7018300488895,
336.5147982949877,
338.33758678575225,
340.17024871417505,
342.01283756137684,
343.8654070981677,
345.7280113866161,
347.600704781627,
349.4835419325274,
351.376577784662,
353.27986758099553,
355.1934668637259,
357.1174314759046,
359.0518175630657,
360.99668157486565,
362.9520802667296,
364.91807070150765,
366.89471025114085,
368.88205659833443,
370.8801677382421,
372.88910198015765,
374.90891794921686,
376.93967458810846,
378.98143115879395,
381.03424724423735,
383.0981827501437,
385.1732979067069,
387.2596532703682,
389.3573097255827,
391.46632848659624,
393.5867710992319,
395.7186994426862,
397.8621757313341,
400.01726251654554,
402.18402268851014,
404.36251947807284,
406.55281645857906,
408.7549775477297,
410.9690670094466,
413.1951494557478,
415.4332898486331,
417.68355350198,
419.9460060834491,
422.2207136164011,
424.50774248182336,
426.80715942026654,
429.1190315337931,
431.44342628793447,
433.78041151366085,
436.1300554093599,
438.4924265428273,
440.8675938532675,
443.2556266533061,
445.65659463101144,
448.07056785192935,
450.49761676112723,
452.93781218525,
455.3912253345868,
457.8579278051492,
460.33799158076044,
462.8314890351563,
465.33849293409673,
467.85907643748976,
470.39331310152613,
472.9412768808261,
475.50304213059724,
478.07868360880457,
480.66827647835214,
483.2718963092766,
485.8896190809519,
488.52152118430706,
491.16767942405534,
493.82817102093566,
496.5030736139656,
499.1924652627081,
501.8964244495478,
504.6150300819828,
507.34836149492685,
510.0964984530243,
512.8595211529782,
515.6375102258902,
518.4305467396138,
521.23871220112,
524.0620885588761,
526.9007582052368,
529.7548039788485,
532.6243091670672,
535.5093575083888,
538.4100331948925,
541.3264208746982,
544.2586056544361,
547.206673101731,
550.1707092476987,
553.150800589457,
556.14703409265,
559.1594971939851,
562.1882778037859,
565.2334643085564,
568.2951455735612,
571.373410945418,
574.4683502547057,
577.5800538185853,
580.708612443436,
583.8541174275047,
587.0166605635703,
590.196334141623,
593.3932309515568,
596.6074442858777,
599.8390679424263,
603.0881962271143,
606.3549239566778,
609.6393464614432,
612.9415595881093,
616.2616597025449,
619.5997436926003,
622.9559089709353,
626.3302534778612,
629.7228756841996,
633.1338745941557,
636.5633497482073,
640.0114012260101,
643.4781296493177,
646.9636361849182,
650.4680225475864,
653.9913910030526,
657.5338443709858,
661.0954860279953,
664.6764199106469,
668.2767505184962,
671.8965829171381,
675.5360227412725,
679.1951761977878,
682.8741500688591,
686.5730517150655,
690.2919890785221,
694.0310706860307,
697.7904056522468,
701.5701036828632,
705.370275077812,
709.1910307344835,
713.032482150962,
716.8947414292796,
720.7779212786883,
724.6821350189477,
728.6074965836337,
732.5541205234617,
736.5221220096305,
740.5116168371826,
744.5227214283841,
748.5555528361211,
752.6102287473168,
756.6868674863647,
760.7855880185825,
764.9065099536832,
769.0497535492657,
773.2154397143241,
777.4036900127767,
781.6146266670127,
785.848372561459,
790.1050512461669,
794.3847869404169,
798.6877045363442,
803.0139296025827,
807.3635883879301,
811.7368078250314,
816.1337155340836,
820.5544398265599,
824.9991097089539,
829.467854886544,
833.9608057671794,
838.4780934650851,
843.0198498046875,
847.586207324463,
852.1772992808037,
856.7932596519081,
861.4342231416894,
866.1003251837069,
870.7917019451186,
875.5084903306547,
880.2508279866124,
885.0188533048732,
889.8127054269413,
894.6325242480038,
899.478450421014,
904.3506253607944,
909.2491912481654,
914.1742910340929,
919.126068443861,
924.1046679812653,
929.1102349328304,
934.1429153720499,
939.2028561636484,
944.2902049678682,
949.4051102447775,
954.5477212586034,
959.7181880820875,
964.9166616008655,
970.1432935178702,
975.3982363577586,
980.6816434713631,
985.9936690401664,
991.3344680808007,
996.7041964495716,
1002.1030108470068,
1007.5310688224281,
1012.9885287785496,
1018.4755499761001,
1023.9922925384706,
1029.5389174563873,
1035.1155865926094,
1040.7224626866528,
1046.3597093595388,
1052.0274911185695,
1057.7259733621286,
1063.4553223845066,
1069.2157053807562,
1075.0072904515685,
1080.8302466081811,
1086.6847437773088,
1092.5709528061025,
1098.4890454671356,
1104.439194463416,
1110.4215734334261,
1116.4363569561906,
1122.48372055637,
1128.5638407093836,
1134.6768948465594,
1140.8230613603116,
1147.0025196093466,
1153.2154499238973,
1159.462033610985,
1165.742452959711,
1172.0568912465762,
1178.4055327408284,
1184.7885627098412,
1191.2061674245197,
1197.6585341647358,
1204.1458512247948,
1210.668307918929,
1217.2260945868234,
1223.8194025991686,
1230.4484243632473,
1237.1133533285483,
1243.8143839924114,
1250.5517119057035,
1257.3255336785262
]
},
{
name: 'Direct2',
type: 'bar',
stack: 'total',
label: {
show: true
},
emphasis: {
focus: 'series'
},
data: [
1083.3333333333333,
1082.3539853010484,
1081.369332466922,
1080.3793460966108,
1079.3839973001268,
1078.3832570309955,
1077.377096085406,
1076.3654851013616,
1075.3483945578203,
1074.3257947738346,
1073.2976559076858,
1072.2639479560119,
1071.224640752933,
1070.179703969171,
1069.1291071111636,
1068.0728195201752,
1067.0108103714024,
1065.9430486730737,
1064.8695032655457,
1063.7901428203938,
1062.7049358394972,
1061.6138506541206,
1060.51685542399,
1059.4139181363628,
1058.3050066050944,
1057.1900884696981,
1056.0691311944017,
1054.9421020671975,
1053.808968198888,
1052.6696965221247,
1051.5242537904458,
1050.3726065773035,
1049.2147212750901,
1048.0505640941565,
1046.880101061826,
1045.7032980214037,
1044.5201206311792,
1043.3305343634245,
1042.1345045033859,
1040.931996148272,
1039.7229742062348,
1038.5074033953447,
1037.2852482425624,
1036.0564730827025,
1034.8210420573932,
1033.5789191140304,
1032.3300680047244,
1031.0744522852428,
1029.8120353139475,
1028.5427802507243,
1027.2666500559085,
1025.9836074892044,
1024.6936151085972,
1023.3966352692615,
1022.0926301224629,
1020.7815616144524,
1019.463391485357,
1018.138081268062,
1016.8055922870903,
1015.4658856574715,
1014.1189222836091,
1012.7646628581382,
1011.4030678607794,
1010.0340975571849,
1008.6577119977792,
1007.2738710165934,
1005.8825342300928,
1004.4836610359986,
1003.077210612103,
1001.6631419150782,
1000.2414136792778,
998.8119844155334,
997.3748124099437,
995.9298557226571,
994.4770721866477,
993.0164194064849,
991.5478547570963,
990.0713353825234,
988.5868181946718,
987.0942598720524,
985.5936168585189,
984.0848453619953,
982.5679013531991,
981.0427405643551,
979.5093184879049,
977.9675903752072,
976.4175112352325,
974.8590358332495,
973.2921186895059,
971.7167140779002,
970.1327760246484,
968.5402583069414,
966.9391144515968,
965.3292977337024,
963.710761175253,
962.0834575437783,
960.4473393509668,
958.8023588512774,
957.1484680405481,
955.485618654594,
953.8137621677992,
952.132849791701,
950.4428324735655,
948.7436608949569,
947.0352854702975,
945.3176563454211,
943.5907233961183,
941.8544362266734,
940.1087441683941,
938.3535962781325,
936.5889413367985,
934.8147278478657,
933.0309040358678,
931.2374178448883,
929.434216937041,
927.6212486909428,
925.7984602001783,
923.9657982717555,
922.1232094245537,
920.2706398877629,
918.4080355993144,
916.5353422043036,
914.6525050534032,
912.7594692012685,
910.856179404935,
908.9425801222046,
907.0186155100259,
905.0842294228648,
903.1393654110649,
901.183966719201,
899.2179762844229,
897.2413367347897,
895.2539903875961,
893.2558792476884,
891.2469450057729,
889.2271290367137,
887.1963723978221,
885.1546158271366,
883.1017997416932,
881.0378642357869,
878.9627490792236,
876.8763937155624,
874.7787372603478,
872.6697184993343,
870.5492758866986,
868.4173475432443,
866.2738712545964,
864.118784469385,
861.9520242974204,
859.7735275078577,
857.5832305273515,
855.3810694382008,
853.166979976484,
850.9408975301827,
848.7027571372975,
846.4524934839505,
844.1900409024814,
841.9153333695294,
839.6283045041072,
837.328887565664,
835.0170154521375,
832.6926206979961,
830.3556354722697,
828.0059915765706,
825.6436204431033,
823.268453132663,
820.8804203326245,
818.4794523549191,
816.0654791340012,
813.6384302248033,
811.1982348006806,
808.7448216513437,
806.2781191807813,
803.7980554051701,
801.3045579507742,
798.7975540518338,
796.2769705484408,
793.7427338844044,
791.1947701051045,
788.6330048553333,
786.057363377126,
783.4677705075784,
780.8641506766539,
778.2464279049786,
775.6145258016235,
772.9683675618752,
770.3078759649949,
767.6329733719649,
764.9435817232225,
762.2396225363827,
759.5210169039477,
756.7876854910037,
754.0395485329062,
751.2765258329523,
748.4985367600403,
745.7055002463168,
742.8973347848105,
740.0739584270544,
737.2352887806937,
734.381243007082,
731.5117378188634,
728.6266894775417,
725.726013791038,
722.8096261112323,
719.8774413314944,
716.9293738841995,
713.9653377382318,
710.9852463964735,
707.9890128932806,
704.9765497919454,
701.9477691821446,
698.9025826773741,
695.8409014123694,
692.7626360405126,
689.6676967312249,
686.5559931673453,
683.4274345424946,
680.2819295584259,
677.1193864223602,
673.9397128443076,
670.7428160343737,
667.5286027000528,
664.2969790435043,
661.0478507588163,
657.7811230292527,
654.4967005244873,
651.1944873978213,
647.8743872833857,
644.5363032933302,
641.1801380149952,
637.8057935080693,
634.4131713017309,
631.0021723917748,
627.5726972377232,
624.1246457599204,
620.6579173366129,
617.1724108010123,
613.6680244383441,
610.1446559828779,
606.6022026149448,
603.0405609579352,
599.4596270752836,
595.8592964674343,
592.2394640687925,
588.600024244658,
584.9408707881428,
581.2618969170715,
577.562995270865,
573.8440579074085,
570.1049762998998,
566.3456413336837,
562.5659433030673,
558.7657719081185,
554.945016251447,
551.1035648349686,
547.2413055566509,
543.3581257072423,
539.4539119669828,
535.5285504022968,
531.5819264624688,
527.6139249763,
523.6244301487479,
519.6133255575464,
515.5804941498094,
511.52581823861374,
507.44917949956584,
503.350458967348,
499.2295370322473,
495.08629343666485,
490.9206072716064,
486.73235697315386,
482.5214203189179,
478.28767442447156,
474.0309957397636,
469.7512600455136,
465.44834244958633,
461.1221173833478,
456.7724585980004,
452.3992391608991,
448.0023314518469,
443.5816071593706,
439.1369372769766,
434.6681920993865,
430.1752412187511,
425.65795352084547,
421.116197181243,
416.54983966146756,
411.9587477051268,
407.34278733402243,
402.7018238442412,
398.03572180222363,
393.34434504081196,
388.62755665527584,
383.8852189993181,
379.1171936810573,
374.3233415589892,
369.5035227379267,
364.6575965649165,
359.7854216251361,
354.88685573776513,
349.96175595183763,
345.0099785420696,
340.03137900466527,
335.02581205310014,
329.9931316138807,
324.9331908222821,
319.8458420180623,
314.7309367411531,
309.5883257273272,
304.417858903843,
299.21938538506504,
293.9927534680603,
288.7378106281719,
283.4544035145674,
278.1423779457641,
272.8015789051299,
267.431850536359,
262.03303613892376,
256.60497816350244,
251.14751820738093,
245.66049700983046,
240.14375444745997,
234.59712952954328,
229.02046039332117,
223.41358429927777,
217.77633762639175,
212.10855586736102,
206.41007362380196,
200.6807246014239,
194.92034160517437,
189.12875653436208,
183.3058003777494,
177.45130320862177,
171.56509417982807,
165.64700151879492,
159.69685252251452,
153.7144735525044,
147.69969002973994,
141.65232642956062,
135.57220627654692,
129.4591521393711,
123.31298562561892,
117.13352737658397,
110.92059706203327,
104.67401337494562,
98.39359402621949,
92.07915573935429,
85.73051424510209,
79.34748427608929,
72.92987956141087,
66.47751282119475,
59.99019576113574,
53.4677390670015,
46.90995239910717,
40.316644386761936,
33.68762262268319,
27.022693657382206,
20.321662993519112,
13.584335080226992,
6.810513307404335
]
},
]
}

Here is my solution, not sure if there is a built-in option
Modify char option, to use a custom formatter:
label: {
show: true,
formatter: myFormatter
},
Implement a custom formatted, this assumes you want a total of 10 labels + a label for the very last data point. size is the size of the series (in my case 360).
function myFormatter(params, size) {
if (params.dataIndex % Math.floor(size / 10) == 0 ||
params.dataIndex == size - 1) { // make sure we have a label for the last datapoint
return params.data
}
return ""
}

Related

Adding and triggering a transition within on_enter state callback

I want to store a previous state A when entering state B using a state history. Later 'on_enter' of another state X, add a transition X->A, trigger it and return to state A.
A -> B (store A) -> C -> X (add transition from X to A) -> A
from transitions.extensions import HierarchicalGraphMachine
class Matter(HierarchicalGraphMachine):
def __init__(self, states):
# self.separator = '/'
self.history = []
self.stored = []
HierarchicalGraphMachine.__init__(
self,
states=states,
initial='root',
show_state_attributes=True
)
#property
def state(self):
return self.history[-1]
#state.setter
def state(self, value):
self.history.append(value)
def store_last(self):
self.stored.append(self.history[-2])
def to_stored(self):
stored = self.stored.pop()
temp_transition = {
'trigger': 'jump',
'source': self.state,
'dest': stored
}
self.add_transition(**temp_transition)
self.trigger('jump')
self.remove_transition(**temp_transition)
TRANSITIONS = [
['walk', 'standing', 'walking'],
['stop', 'walking', 'standing'],
['drink', '*', 'caffeinated'],
['walk',
['caffeinated', 'caffeinated_dithering'],
'caffeinated_running'],
['relax', 'caffeinated', 'standing']
]
STATES = [{
'name': 'root',
'initial': 'standing',
'transitions': TRANSITIONS,
'children': [
{
'name': 'standing',
},
{
'name': 'walking',
'on_enter': 'store_last',
},
{
'name': 'caffeinated',
'children': [
'dithering',
{
'name': 'running',
'on_enter': 'to_stored'
}
]
}
]
}]
If I run the code skipping on_enter the transition is added, triggered and removed as expected.
# this works
lump = Matter(states=STATES)
lump.trigger('walk')
assert lump.history == ['root', 'root_standing', 'root_walking']
assert lump.stored == ['root_standing']
lump.trigger('drink')
# set state manually to skip on_enter
lump.state = 'root_caffeinated_running'
# run on_enter method manually works
lump.to_stored()
assert lump.state == 'root_standing'
assert lump.stored == []
assert lump.get_nested_transitions(trigger='jump') == []
lump.get_graph().draw('my_state_diagram.pdf', prog='dot')
If I run it within on_enter I get an error "MachineError: "Can't trigger event 'jump' from state(s) root_caffeinated_running!"
# cannot do the jump using on_enter
lump = Matter(states=STATES)
lump.trigger('walk')
lump.trigger('drink')
lump.trigger('walk')
# Can't trigger event 'jump' from state(s) root_caffeinated_running!
lump.get_graph().draw('my_state_diagram.pdf', prog='dot')
By default transitions will add auto transitions which can be used to reach every state directly without the need to add transitions temporarily. In combination with Machine.trigger that can be used to call events by their name, your to_stored method could be simplified to:
def to_stored(self):
stored = self.stored.pop()
self.trigger(f"to_{stored}")

How to provide a Leaflet GeoJSON feature collection to turf.centroid?

I would like to find the centroid of a group of polygons, where each polygon represents a farm field. Currently, my code looks like this:
$('#field-group').multiselect({
nonSelectedText: 'Choose Field(s):',
onChange: function(option, checked, select) {
var fieldList=[];
$('option:selected', $('#field-group')).each(function() {
// fieldList.push({value:$(this).val(),text:$(this).text()});
fieldList.push($(this).val());
});
var queryString = $.param({field_name__exact:fieldList}, true);
var centroid;
fields = new L.GeoJSON.AJAX("{% url 'fields' %}?"+queryString, {
style: { color: 'blue', fillOpacity: 0.0},
onEachFeature: function (feature, layer) {
//layer.bindPopup(feature.properties.description.toString());
centroid = turf.centroid(feature);
var lon = centroid.geometry.coordinates[0];
var lat = centroid.geometry.coordinates[1];
map.setView([lat, lon], 14)
}
}).addTo(map);
}
});
The map pans to the centroid of last field added, which is not what I want. However, I can't seem to get it to pan to the centroid of the Feature Collection. I have tried using this:
$('#field-group').multiselect({
nonSelectedText: 'Choose Field(s):',
onChange: function(option, checked, select) {
var fieldList=[];
$('option:selected', $('#field-group')).each(function() {
// fieldList.push({value:$(this).val(),text:$(this).text()});
fieldList.push($(this).val());
});
var queryString = $.param({field_name__exact:fieldList}, true);
var centroid;
fields = new L.GeoJSON.AJAX("{% url 'fields' %}?"+queryString, {
style: { color: 'blue', fillOpacity: 0.0},
onEachFeature: function (feature, layer) {
//layer.bindPopup(feature.properties.description.toString());
}
}).addTo(map);
var test = fields.toGetJSON() // make a Feature Collection
centroid = turf.centroid(test); // takes a Feature Collection
var lon = centroid.geometry.coordinates[0];
var lat = centroid.geometry.coordinates[1];
map.setView([lat, lon], 14)
}
});
But with this code, I get a 'Uncaught Error: coordinates must contain numbers'. I don't know what I'm doing wrong. Can someone advise please?
Here is the GeoJSON feature collection I would like to get the centroid of:
{"type": "FeatureCollection", "crs": {"type": "name", "properties": {"name": "EPSG:4326"}}, "features": [{"type": "Feature", "properties": {"client_nam": "MSFF", "farm_name": "Lauderdale", "field_name": "064", "polygontyp": 0, "shape_leng": 6403.54792475, "shape_area": 2500990.45035, "area_ac": 618.008199278, "farm": 0, "grower": 1, "pk": "2"}, "geometry": {"type": "MultiPolygon", "coordinates": [[[[-89.89392924524434, 35.69692900010964], [-89.89397896493877, 35.69693891373261], [-89.89399774773102, 35.69694972946372], [-89.89406293561315, 35.696974063403445], [-89.89413475280982, 35.69698578042825], [-89.89513577562231, 35.69707680953917], [-89.89515787422303, 35.69707861278143], [-89.89561750436316, 35.69710655119105], [-89.89564402249842, 35.69710835519184], [-89.89579207576386, 35.69712637962693], [-89.89683398047805, 35.69721831004002], [-89.89686712670081, 35.69721831021136], [-89.89709252256554, 35.697246250628424], [-89.8971245633863, 35.697247151586424], [-89.8973676380404, 35.697264275799874], [-89.89740520383717, 35.69726607824239], [-89.89792891817353, 35.69731384653144], [-89.89795101564596, 35.69731384584378], [-89.89899291882548, 35.697400368743054], [-89.89901501694698, 35.697401270013415], [-89.89909346354239, 35.69741659245474], [-89.89916749031224, 35.69741839419948], [-89.89928350312223, 35.6974310129386], [-89.8994691231003, 35.69744362987771], [-89.89949453575302, 35.697442728829], [-89.89985583120854, 35.697479680993375], [-89.90027679129888, 35.69751483098848], [-89.90191533231281, 35.697651826118836], [-89.90193963914663, 35.69765272673085], [-89.90422674478353, 35.69785371257284], [-89.90425105193212, 35.69785641614321], [-89.90649727673167, 35.69804388296781], [-89.9065392630568, 35.698042079694346], [-89.90702651593764, 35.69807182205378], [-89.90705082254311, 35.698073624700754], [-89.90739886149775, 35.69810607067188], [-89.90742427341385, 35.69810697229438], [-89.90794798698916, 35.69814662845909], [-89.90845954718644, 35.69817637118887], [-89.90850153345474, 35.69817727192989], [-89.90887387745295, 35.69818898792924], [-89.90890039505622, 35.6981880870011], [-89.90891807295093, 35.69820160653022], [-89.9089700030801, 35.69824937398365], [-89.90895563914198, 35.69827370860559], [-89.90894238118688, 35.698378257112324], [-89.90894238083057, 35.69839718371234], [-89.90893354203203, 35.69844044467485], [-89.90891144476537, 35.69861529394119], [-89.90886503945832, 35.69892262963565], [-89.9087655989153, 35.69959858878641], [-89.90876338976926, 35.699622924129216], [-89.9085711413809, 35.70084776272312], [-89.90856782604114, 35.70087480067237], [-89.9080419019526, 35.70429605630674], [-89.90803748178027, 35.7043248982493], [-89.90795461558803, 35.70478364910501], [-89.90789384742043, 35.705188323173424], [-89.90762757091309, 35.70710534475526], [-89.90762315211987, 35.7071278768855], [-89.9075844808395, 35.70730362587183], [-89.90758779569457, 35.707324355947996], [-89.90758448133349, 35.70739375422304], [-89.9075634882039, 35.70754607097185], [-89.90746073472926, 35.70823464732061], [-89.9072905826364, 35.70928193439962], [-89.9072894773355, 35.70930266318926], [-89.90715136819534, 35.710229179069685], [-89.90714915672828, 35.71024990846188], [-89.90647959977048, 35.71453368916356], [-89.90645860599905, 35.71454360310321], [-89.90640336149664, 35.71454360271376], [-89.90632712584683, 35.714532787955854], [-89.90593489302691, 35.7145039465292], [-89.90542664711816, 35.71447510585435], [-89.90435601582725, 35.71441021411642], [-89.90021270870528, 35.71415244792596], [-89.90016851292069, 35.714148842590795], [-89.89414138257374, 35.71376399734617], [-89.89411597010145, 35.71376309483678], [-89.89221004898428, 35.713653139423826], [-89.89217690311492, 35.713648632668345], [-89.89169075409323, 35.71360807501945], [-89.89167639026059, 35.71359185240414], [-89.89167639091588, 35.71355399909158], [-89.89168743993552, 35.713508033647635], [-89.89172832058478, 35.7132592800101], [-89.8917305295669, 35.713233143263324], [-89.8917614668002, 35.71295915435798], [-89.8918940526648, 35.711935301224926], [-89.89221225899834, 35.709628927164225], [-89.89220010485218, 35.70961090208179], [-89.8923072780561, 35.708815972655245], [-89.89238351477313, 35.70817606467339], [-89.89238351461397, 35.70814632278711], [-89.89241334681158, 35.7079858949243], [-89.89246306712592, 35.7076434090494], [-89.89246306734469, 35.70762358021529], [-89.89250615691903, 35.70744602838808], [-89.89250615777065, 35.70742169409251], [-89.89252162582412, 35.7072783906253], [-89.89252825393596, 35.70725675935841], [-89.89256250652191, 35.707026032463844], [-89.89256361186202, 35.70699719139074], [-89.89259565271125, 35.70670878235815], [-89.89266084029182, 35.706156298066496], [-89.89266194606505, 35.706135568406005], [-89.89277574909512, 35.70528025432009], [-89.89277795814698, 35.705260425525275], [-89.89343536294747, 35.700285363804724], [-89.89343757236203, 35.70026643715484], [-89.89388284038843, 35.696993891451505], [-89.89388615396734, 35.69697406308933], [-89.89390493749985, 35.69693711149333], [-89.89392924524434, 35.69692900010964]]]]}}, {"type": "Feature", "properties": {"client_nam": "MSFF", "farm_name": "Lauderdale", "field_name": "053", "polygontyp": 0, "shape_leng": 10388.1939987, "shape_area": 2702155.83411, "area_ac": 667.729728166, "farm": 0, "grower": 1, "pk": "1"}, "geometry": {"type": "MultiPolygon", "coordinates": [[[[-89.86060511911957, 35.686488718320284], [-89.8606946589609, 35.6865061205794], [-89.86077092887423, 35.686534997107344], [-89.86087390624193, 35.68664136043166], [-89.86102641730923, 35.68679397718338], [-89.86111563659816, 35.68686107158934], [-89.8612449626168, 35.68687261691992], [-89.86134725883414, 35.686866848883355], [-89.86146301554896, 35.686868199721594], [-89.86162415600155, 35.68687257522511], [-89.86178529752841, 35.686876949584985], [-89.86195678568744, 35.68688928641177], [-89.86209560024024, 35.68690240131702], [-89.86227860687073, 35.68695550607839], [-89.86241215506962, 35.68703236092858], [-89.86254155652192, 35.68713393996], [-89.86272166334875, 35.68724662450333], [-89.8629468636845, 35.68735413289169], [-89.86298551522484, 35.6873798899144], [-89.86309778566167, 35.68742441589675], [-89.8632101295819, 35.687470993135705], [-89.86347346959133, 35.687589904132544], [-89.86371240996301, 35.68772991664179], [-89.86378742280553, 35.687787642222624], [-89.86391519401468, 35.68791388505358], [-89.86396551336874, 35.68798451080842], [-89.86399743335353, 35.688033002094436], [-89.86402188652336, 35.68808372246544], [-89.8640685924546, 35.68812365373161], [-89.86412520526521, 35.68815924376366], [-89.86420739113244, 35.68820653811011], [-89.86418743525888, 35.688256082508744], [-89.86427064148921, 35.68828758193634], [-89.86437023451838, 35.68829916037972], [-89.86450380015556, 35.68830434990677], [-89.86469505641104, 35.68829700483276], [-89.86486922772414, 35.688290067268724], [-89.86505806410379, 35.68831068013206], [-89.86517202532495, 35.688341446382026], [-89.86525543262334, 35.68837852014156], [-89.86535350416558, 35.68844314540221], [-89.86547931338545, 35.6885182712439], [-89.8655983876962, 35.688596345949776], [-89.86564712438954, 35.68862029629761], [-89.86569224517979, 35.68863875205435], [-89.86574419973047, 35.688657044082575], [-89.86584429344377, 35.68868256024541], [-89.86601302768106, 35.68871481104317], [-89.86613674200389, 35.68873139398575], [-89.8662567394727, 35.688739694295286], [-89.86636960267423, 35.688739795221956], [-89.86649321615366, 35.68875358984033], [-89.8665897940502, 35.6887763997012], [-89.86666938459017, 35.68880240378432], [-89.86674645723576, 35.68885357742887], [-89.86681981308108, 35.68889647033742], [-89.86687558590815, 35.68892583138897], [-89.86695497702469, 35.68894626021764], [-89.86702803462599, 35.688980789032556], [-89.86712169355553, 35.68901761800925], [-89.8672890420594, 35.68907419396012], [-89.86737364640419, 35.68908591266296], [-89.8674644881373, 35.68908374713922], [-89.86757532002876, 35.689075610798945], [-89.86769683632293, 35.689083702201785], [-89.86775076611491, 35.689085163558424], [-89.8677984597358, 35.68910050994574], [-89.86784605387861, 35.68911310978824], [-89.8680155589152, 35.689144781461344], [-89.8681347914951, 35.68918314580819], [-89.86820940096827, 35.68919784933195], [-89.86832576682083, 35.68921490714187], [-89.86859116407138, 35.689232699074594], [-89.86898727174238, 35.68929193020028], [-89.86935081628141, 35.68938215571749], [-89.86954050809182, 35.68941334365991], [-89.86968606821152, 35.6894345939997], [-89.8697972938299, 35.68943743548149], [-89.86987121499494, 35.689432924730504], [-89.86995829771003, 35.68941985772478], [-89.87003172793251, 35.68940162312501], [-89.8701323669081, 35.68939098053155], [-89.87030366306867, 35.68937865181604], [-89.87051285300379, 35.689390142388305], [-89.87065158595384, 35.689408809187455], [-89.87089586942255, 35.68945213014719], [-89.87108069323645, 35.68945608888516], [-89.87126591699914, 35.68947119830231], [-89.87135877831247, 35.68948572193019], [-89.87147626070762, 35.68951918839368], [-89.8715831908285, 35.689544536499824], [-89.87173494355137, 35.68957997400866], [-89.87186177637118, 35.68958810728184], [-89.87201926297726, 35.68959271725387], [-89.8721765495315, 35.68959175109087], [-89.87239876115058, 35.68958923432663], [-89.87254609761568, 35.68959687634379], [-89.87282448361059, 35.68963486893609], [-89.87321833639378, 35.68974543417038], [-89.87403276179028, 35.68999828346813], [-89.87421970655774, 35.69001167799909], [-89.87440180920525, 35.69003141306212], [-89.87461213669195, 35.69005058867938], [-89.8747733537813, 35.6900790040906], [-89.87485698458303, 35.69009475231329], [-89.87495345485259, 35.690137623024874], [-89.87506172470056, 35.69017859743398], [-89.87515238336009, 35.69022483345893], [-89.87523926407296, 35.69027599957123], [-89.87542605448324, 35.69030057621788], [-89.8756556723272, 35.69036123691002], [-89.87585826429216, 35.69044029214132], [-89.87597350507605, 35.6905101408395], [-89.87603021724192, 35.6906023633716], [-89.87639217533429, 35.69065824493519], [-89.8765886672787, 35.69073260402028], [-89.8768280456112, 35.69084465854801], [-89.87708096826725, 35.69094832129559], [-89.877280132745, 35.69104197738382], [-89.87740450167269, 35.69109063092339], [-89.87764388883825, 35.69114782835269], [-89.87795778699251, 35.691187106985794], [-89.87826168898012, 35.69122339832955], [-89.87859220739821, 35.69128486532512], [-89.87885414915937, 35.69130925128496], [-89.87973389238896, 35.6914091989683], [-89.88010742133278, 35.69145672574608], [-89.88085698051509, 35.69156623540072], [-89.881567983484, 35.69168288100922], [-89.88218226943944, 35.69173616411603], [-89.8823475598165, 35.69176769816228], [-89.88264960431174, 35.69180724846502], [-89.8831265893698, 35.6918716474421], [-89.88369587013536, 35.69191769627419], [-89.8839266618043, 35.69195572592516], [-89.88408003861157, 35.6919859299263], [-89.88446304586341, 35.69202192189544], [-89.88497165016888, 35.69203069831448], [-89.88545479897394, 35.69210139233426], [-89.88595177983892, 35.692171754310614], [-89.88645050476903, 35.692235617439245], [-89.8869671900793, 35.6923038881254], [-89.88732956832847, 35.692371020095266], [-89.88812133698858, 35.69249883181376], [-89.88851312494694, 35.692558801774545], [-89.8886778382622, 35.69257420628703], [-89.8903451362773, 35.69284876897063], [-89.89097778041891, 35.69295134366992], [-89.89123850951746, 35.69299670591291], [-89.89173730478555, 35.69311701520721], [-89.89272246137278, 35.69334179285705], [-89.89335313993615, 35.6934992579868], [-89.89389087978094, 35.693602486786126], [-89.89406193156724, 35.69362902605112], [-89.8942591378404, 35.693667843707864], [-89.89430186065628, 35.693700697114416], [-89.8943086044927, 35.69372312247514], [-89.89430412258174, 35.69375420519145], [-89.89430724750487, 35.69384062222175], [-89.89431135513112, 35.69390859904202], [-89.89428638104589, 35.694209409603864], [-89.8943033808118, 35.69434441370987], [-89.89430246620124, 35.694483189007734], [-89.89421406168962, 35.69530409526072], [-89.89419310338371, 35.69566543308508], [-89.89416706885885, 35.69601744052072], [-89.89414327458262, 35.69669901199647], [-89.89413932864902, 35.69675396366155], [-89.89411137475365, 35.69684184412398], [-89.8940889651422, 35.69688423384472], [-89.89404544665035, 35.69691039129965], [-89.89367552318956, 35.69689096953977], [-89.89289266115796, 35.69684687897401], [-89.89285110359684, 35.69684626526559], [-89.89272422072922, 35.696838023213154], [-89.89263500169629, 35.69683210174333], [-89.89214281458212, 35.69678585483037], [-89.89050629764746, 35.69665417363725], [-89.88803060864572, 35.69645227256077], [-89.88640026308855, 35.6963268408669], [-89.88606902191083, 35.69630090727561], [-89.88605373743238, 35.69648036405855], [-89.88598965775927, 35.6970391403147], [-89.88588405035371, 35.69773459679528], [-89.88581753065476, 35.69821971641829], [-89.88571466436643, 35.69899125272329], [-89.8856338790951, 35.69959854665558], [-89.88556529887127, 35.699897159430535], [-89.88550467451857, 35.70028695585259], [-89.88549726746831, 35.700340434791286], [-89.88543252759746, 35.700357216814105], [-89.88535165212551, 35.70034457002918], [-89.88417653504946, 35.700216016129154], [-89.88324585782865, 35.70009374541399], [-89.88212761700775, 35.699960553260865], [-89.8811246961461, 35.69984752099631], [-89.88110228135318, 35.699838208839665], [-89.88075463712201, 35.69981069805273], [-89.87977517296646, 35.69970089954987], [-89.87752533769222, 35.69943874533986], [-89.8767612227664, 35.6993466132033], [-89.87650322559399, 35.69931090446271], [-89.87643394265905, 35.69946104553885], [-89.87642673687841, 35.69965437630385], [-89.87638106345948, 35.70000143543319], [-89.8761928580837, 35.70123635166785], [-89.8761067531427, 35.70179084238757], [-89.87602507629799, 35.70227826607298], [-89.87594964364176, 35.70265393649595], [-89.87592862554759, 35.70273535189654], [-89.87589001853567, 35.70280323617053], [-89.87582698658173, 35.702857753668226], [-89.87573279500025, 35.70290185753599], [-89.87567891378627, 35.70292546686227], [-89.8752026446677, 35.70299823440624], [-89.87467470801424, 35.7030610764057], [-89.87416054257581, 35.7031263755334], [-89.87384741740627, 35.70317013013691], [-89.8735884742579, 35.7031986375995], [-89.87348292666135, 35.70321231996372], [-89.87341115562828, 35.70321403475685], [-89.87332873114326, 35.703204843549486], [-89.87318919313171, 35.703216048984125], [-89.87303573951904, 35.70322391038958], [-89.87303849169238, 35.7031705423457], [-89.8730749127264, 35.70303398353932], [-89.87310538619468, 35.70287309899705], [-89.87312222422784, 35.70277258492997], [-89.87315420599927, 35.70262333765406], [-89.87318020642765, 35.70254310779182], [-89.87318489101851, 35.702515155494424], [-89.87320434217992, 35.702432152045425], [-89.87322127829238, 35.702340282452184], [-89.87325847158523, 35.70217296625936], [-89.87327381834152, 35.7020395461986], [-89.87327827150342, 35.70193923876493], [-89.87326976074037, 35.70187045219974], [-89.87325133931384, 35.70177808260826], [-89.87322900789022, 35.70171701757577], [-89.87317619310404, 35.701508022682084], [-89.87314702962287, 35.70142494497338], [-89.87310914546966, 35.701295260655336], [-89.8730501729076, 35.70111105184439], [-89.8730140008475, 35.701001038372915], [-89.87297256053392, 35.70091250464662], [-89.8729469472724, 35.700844126583625], [-89.8729273349139, 35.70080270741235], [-89.87290278235469, 35.70076387123315], [-89.87285420647572, 35.700700968931336], [-89.87259383305899, 35.70043204685169], [-89.87250297980721, 35.70034140889306], [-89.87247292014251, 35.70031748686476], [-89.87243860195663, 35.700287096238995], [-89.87240150230123, 35.70026334323129], [-89.87237046645221, 35.70024026645311], [-89.87233235887528, 35.70021653659359], [-89.87228505034899, 35.70018892024843], [-89.87224197316563, 35.700166952969425], [-89.8721915274811, 35.70013612545617], [-89.87213507698236, 35.70010626328361], [-89.87209699901284, 35.70008335460208], [-89.8720517326649, 35.700056511355974], [-89.87198339027896, 35.7000039361421], [-89.87195155508887, 35.699986627574106], [-89.87187800312785, 35.6999571736435], [-89.87180726112415, 35.6999219033337], [-89.87173965523432, 35.699889843247846], [-89.87165968300405, 35.69984986596781], [-89.87155184088974, 35.69979084225292], [-89.87149962096257, 35.69976662799813], [-89.87144216414863, 35.699736789512635], [-89.87138680828768, 35.699709365828475], [-89.87134884848807, 35.699689739227956], [-89.8713179614712, 35.69967076482287], [-89.87129189804536, 35.69964592601531], [-89.8711827737717, 35.699548102901794], [-89.8710754312201, 35.699511605016866], [-89.87093311088823, 35.699453620080185], [-89.87057553113117, 35.69926797348102], [-89.87052730521194, 35.69924284149631], [-89.87040626944994, 35.699180847353944], [-89.8701745469748, 35.69909274657892], [-89.8698490515185, 35.698888613875106], [-89.86962724892263, 35.69876824394774], [-89.86940343563202, 35.698647923366465], [-89.86921772770108, 35.698551331506096], [-89.86904630930796, 35.698460147719224], [-89.86890459616583, 35.698383039649784], [-89.86873613893881, 35.698290141740856], [-89.86867661284323, 35.698258709108956], [-89.8686221480164, 35.69822797679316], [-89.86861288748801, 35.69822244842243], [-89.86857892464482, 35.69820190451671], [-89.86837253924905, 35.69809019976166], [-89.86834280517296, 35.698075303277115], [-89.8681159479975, 35.69795422992337], [-89.86791646002106, 35.6978382536539], [-89.86779930400341, 35.69777205624534], [-89.86777546061641, 35.69775291293969], [-89.86774735704473, 35.69772730180029], [-89.86772863148565, 35.69771050054819], [-89.86771085280478, 35.69769203368864], [-89.86769286943141, 35.697667823363034], [-89.86767828539627, 35.697654208509704], [-89.86765165911581, 35.69764170183836], [-89.86761612421881, 35.69763351468301], [-89.86755126942586, 35.697621919443726], [-89.867457540738, 35.6975913016322], [-89.86742496638304, 35.69758140171008], [-89.86738316102537, 35.69756679276729], [-89.8673273902921, 35.69755580280083], [-89.86726567137735, 35.69754741779979], [-89.86712364606831, 35.697569599659325], [-89.86700605961994, 35.69758925023644], [-89.86632531278472, 35.69771728344671], [-89.8657487978597, 35.69781985489848], [-89.8653681701784, 35.69788712437757], [-89.86511070256313, 35.69793307999877], [-89.86499874293723, 35.6979525954916], [-89.86491845726916, 35.697965228623794], [-89.8648045751316, 35.69795082598911], [-89.86471828311664, 35.69793323801275], [-89.86468336396334, 35.69790190583287], [-89.86467117685322, 35.697876159097966], [-89.86465711300173, 35.69785045616023], [-89.86464652763088, 35.6978170131166], [-89.86463610656484, 35.69778815997025], [-89.86463136937861, 35.6977607045196], [-89.86461338891102, 35.69773050014675], [-89.86454834397817, 35.69769682289794], [-89.86450062216127, 35.69767498500607], [-89.86443155112791, 35.69763374542281], [-89.86437457200925, 35.6975631155679], [-89.86434263868684, 35.69751026987413], [-89.86418566982698, 35.69726895058513], [-89.86408462505375, 35.697121257993864], [-89.86401132538826, 35.697014259770555], [-89.86397553071825, 35.69695844246894], [-89.86398911493251, 35.69691829694096], [-89.86399712600591, 35.69687981539087], [-89.86401970703722, 35.69682873492618], [-89.86398677374714, 35.696800417776615], [-89.86395781186009, 35.69677813383982], [-89.86392107268561, 35.696748376024566], [-89.86387378969012, 35.696738780288484], [-89.86380510309043, 35.69670825186162], [-89.86377195201142, 35.69667381384934], [-89.86373863562069, 35.69663478594943], [-89.86361471286088, 35.69642484198917], [-89.86359292609353, 35.696393196794915], [-89.86354538352731, 35.696323874000356], [-89.86349414355865, 35.696256171384015], [-89.86341130119781, 35.69614480522062], [-89.86336982476877, 35.6960875908068], [-89.86334975063086, 35.69605131007502], [-89.86334319208699, 35.696025429186946], [-89.86332891000811, 35.695993604377215], [-89.86330298912091, 35.69595133683786], [-89.86325836287784, 35.69591104585858], [-89.86317945980763, 35.69583559089987], [-89.86311313300448, 35.695798109294316], [-89.86302981024312, 35.69576791978707], [-89.86292868611963, 35.69572284663535], [-89.86246712722729, 35.695523317878155], [-89.86225369660266, 35.69543411978586], [-89.86196384125064, 35.69530929891882], [-89.86162632190641, 35.695164168132834], [-89.86157656157125, 35.69513778280074], [-89.86151560046518, 35.69511319609828], [-89.86147753341915, 35.6950987854126], [-89.86143190836762, 35.695083023248884], [-89.86138435304974, 35.69506577481427], [-89.86131765486437, 35.69503826104596], [-89.86124720451379, 35.6950108364985], [-89.86122623965245, 35.69500214488318], [-89.86119181663148, 35.694984584873104], [-89.86111662947742, 35.69492970370925], [-89.86108089249335, 35.694875415363875], [-89.86105950794588, 35.694802406727064], [-89.86106615167162, 35.694725668831786], [-89.86106964596178, 35.69466585165464], [-89.86112763026817, 35.694502122300314], [-89.86124307466567, 35.69426503820185], [-89.86131699483035, 35.694126966717604], [-89.8613972547171, 35.694008654522534], [-89.86146597004209, 35.693935033748645], [-89.8615238117596, 35.69387239324121], [-89.86162844309372, 35.69380557607418], [-89.86191019314339, 35.693703912855234], [-89.86214360676887, 35.693615651182974], [-89.8625598919899, 35.69344339372394], [-89.86345386678384, 35.69308362772079], [-89.86392350744754, 35.69288099405233], [-89.86473983238862, 35.69255523237398], [-89.8649749504176, 35.692462330016355], [-89.86514794455759, 35.69236478105542], [-89.86525024178607, 35.69233783759723], [-89.86612451894143, 35.69211024137098], [-89.86652851891287, 35.6920148438869], [-89.86729094636996, 35.69180981495863], [-89.86754966645421, 35.69174697675232], [-89.86832234126229, 35.69156655521116], [-89.868335436368, 35.6915245579568], [-89.86835285873794, 35.691468679682345], [-89.86831823369812, 35.69145143025808], [-89.86826361393003, 35.691446605856], [-89.86822973832246, 35.69144435111216], [-89.86805787035414, 35.69146836034496], [-89.86788649569274, 35.69150614170977], [-89.86741314745123, 35.69160472906885], [-89.86691000192506, 35.69171014988814], [-89.86615762386117, 35.691881242661836], [-89.86554086810995, 35.692012339423705], [-89.86523027707, 35.69209478694316], [-89.86473936094082, 35.69219943069315], [-89.86442598870602, 35.69227959727711], [-89.86426934482412, 35.69232085227511], [-89.86413010106256, 35.69236638299504], [-89.86393985224709, 35.69242476261949], [-89.86355623252355, 35.69255828788751], [-89.86320811275817, 35.69271198291985], [-89.86247918311864, 35.69298965955626], [-89.8619778722306, 35.693200938242974], [-89.86155743113977, 35.69334227775058], [-89.86140220639012, 35.693423363389904], [-89.86108781386781, 35.69358355583695], [-89.86094675466802, 35.69370270023701], [-89.86088895158831, 35.69376126937999], [-89.86080269265968, 35.69383586319231], [-89.86078288628738, 35.693855864994404], [-89.86072157401813, 35.69386290307783], [-89.8606598621256, 35.693858790997474], [-89.8606079050913, 35.69384049598703], [-89.86056921914668, 35.69381072479323], [-89.86054814679359, 35.69369962416474], [-89.86048310809659, 35.693367831943085], [-89.86043541404206, 35.693239975112625], [-89.86018230925231, 35.692673743891206], [-89.86002698781708, 35.69226935773696], [-89.85991093657569, 35.691917978292146], [-89.85988469215071, 35.6918271368496], [-89.85985245093441, 35.691729400789434], [-89.85985247565722, 35.69164966039979], [-89.85987974635637, 35.691447317369374], [-89.85992257611747, 35.69119769909976], [-89.85993509665592, 35.69114580495295], [-89.85993333853386, 35.6910965954337], [-89.85992287995367, 35.691045247651815], [-89.85990700960134, 35.69100341086113], [-89.8598782281226, 35.690922009338394], [-89.85985460521724, 35.69082406925046], [-89.85980387429404, 35.69069159401691], [-89.85975398068688, 35.690582551947635], [-89.85969733824075, 35.6904455269446], [-89.85967650422461, 35.690345174472235], [-89.85964917136383, 35.69022386942834], [-89.85964169521482, 35.69009505691436], [-89.8596203591496, 35.689980644679295], [-89.85958795175215, 35.689878222192434], [-89.8595714980613, 35.689819980596496], [-89.85956332514327, 35.689752162518495], [-89.85953691456123, 35.68965663373923], [-89.85951184219205, 35.68959859792382], [-89.859466999234, 35.68955041171571], [-89.85936336889455, 35.68946609998077], [-89.85931015845163, 35.68942514980973], [-89.8592630294423, 35.689393436477054], [-89.85915811635293, 35.6893537152267], [-89.85906765020194, 35.68931599562497], [-89.85898817073921, 35.689263942233254], [-89.85891064417727, 35.6891860450327], [-89.85887890754695, 35.68910236922181], [-89.85886973221913, 35.689006430628396], [-89.85889460682114, 35.68889795620487], [-89.85895157845303, 35.688802790589186], [-89.85902807261874, 35.68869074321251], [-89.85907879754221, 35.68858165523103], [-89.8591760648779, 35.688487876858126], [-89.85928794606836, 35.688400787325335], [-89.85940903040718, 35.688329894834], [-89.85956728733649, 35.68825342917391], [-89.85968803640336, 35.6881731638591], [-89.85978859323686, 35.688091034262435], [-89.8598498595411, 35.68803563606246], [-89.85990741652196, 35.687956872918534], [-89.8599511138684, 35.68789251095788], [-89.86000563110773, 35.68780912978191], [-89.8600538157884, 35.68770948233727], [-89.86006321257058, 35.687650626149015], [-89.8600610360617, 35.68758970090654], [-89.8600473710343, 35.68752904792071], [-89.8600371630526, 35.68748473045105], [-89.86001758531364, 35.68741952778284], [-89.85999075550384, 35.687312282484754], [-89.85999697174665, 35.68717558716814], [-89.85998724903769, 35.687094906827525], [-89.8599983293858, 35.687022101158], [-89.86002609500277, 35.686937739126236], [-89.86005495599424, 35.68688404143035], [-89.86008079789453, 35.68684157516081], [-89.86013268198113, 35.68676222037215], [-89.860158324606, 35.686714178099656], [-89.8602446776863, 35.68664237386802], [-89.8604053084906, 35.68654369096356], [-89.8604692358199, 35.686514270777465], [-89.86054712910862, 35.68649288772706], [-89.86060511911957, 35.686488718320284]]]]}}]}

Sails.js afterCreate() is passed the newlyCreatedRecord without instance methods

The newlyInsertedRecord in afterCreate(newlyInsertedRecord, cb) {} is missing all instance methods.
1 /**
2 * Dog.js
3 *
4 * #description :: TODO: You might write a short summary of how this model works and what it represents here.
5 * #docs :: http://sailsjs.org/documentation/concepts/models-and-orm/models
6 */
7
8 module.exports = {
9
10 attributes: {
11 tail: 'string',
12 wag: function() {
13 console.log('wagging ', this.tail, 'tail')
14 }
15 },
16
17 afterCreate: function(dog, cb) {
18 dog.wag()
19 }
20 };
When executing Dog.create({tail:'green'}).exec(console.log), the following error and stack trace occurs:
sails> TypeError: dog.wag is not a function
at module.exports.afterCreate (/tmp/afterCreateTest/api/models/Dog.js:18:7)
at fn (/home/user/.npm-packages/lib/node_modules/sails/node_modules/waterline/lib/waterline/utils/callbacksRunner.js:60:10)
at /home/user/.npm-packages/lib/node_modules/sails/node_modules/waterline/node_modules/async/lib/async.js:181:20
at iterate (/home/user/.npm-packages/lib/node_modules/sails/node_modules/waterline/node_modules/async/lib/async.js:262:13)
at Object.async.forEachOfSeries.async.eachOfSeries (/home/user/.npm-packages/lib/node_modules/sails/node_modules/waterline/node_modules/async/lib/async.js:281:9)
at Object.async.forEachSeries.async.eachSeries (/home/user/.npm-packages/lib/node_modules/sails/node_modules/waterline/node_modules/async/lib/async.js:214:22)
at Object.runner.afterCreate (/home/user/.npm-packages/lib/node_modules/sails/node_modules/waterline/lib/waterline/utils/callbacksRunner.js:63:9)
at after (/home/user/.npm-packages/lib/node_modules/sails/node_modules/waterline/lib/waterline/query/dql/create.js:243:17)
at /home/user/.npm-packages/lib/node_modules/sails/node_modules/waterline/lib/waterline/query/dql/create.js:230:68
at wrapper (/home/user/.npm-packages/lib/node_modules/sails/node_modules/lodash/index.js:3592:19)
at applyInOriginalCtx (/home/user/.npm-packages/lib/node_modules/sails/node_modules/waterline/lib/waterline/utils/normalize.js:421:80)
at wrappedCallback (/home/user/.npm-packages/lib/node_modules/sails/node_modules/waterline/lib/waterline/utils/normalize.js:324:18)
at callback.success (/home/user/.npm-packages/lib/node_modules/sails/node_modules/waterline/node_modules/switchback/lib/normalize.js:33:31)
at _switch (/home/user/.npm-packages/lib/node_modules/sails/node_modules/waterline/node_modules/switchback/lib/factory.js:58:28)
at afterwards (/home/user/.npm-packages/lib/node_modules/sails/node_modules/waterline/lib/waterline/adapter/dql.js:89:19)
at wrapper (/home/user/.npm-packages/lib/node_modules/sails/node_modules/lodash/index.js:3592:19)
Not sure if the answer to Sails.js model saved to session loses custom instance methods? applies?
afterCreate() Lifecycle callback only returns the value added in database, i.e. the JSON. Example:
{
tail: "green",
createdAt: "...",
updatedAt: "...",
id: "173c69cbdc4810b70dd4fb73"
}
In this moment you have only access to JSON, not object with methods.

for each group by date in coffeescript

which pulls data from and reformats it.
Promise = require "bluebird"
request = Promise.promisify require "request"
moment = require "moment"
cdn = require('config').server.cloudFrontDomain
toTitleCase = require "titlecase"
exports.getStocks = (path) ->
return new Promise (resolve, reject) ->
request path
.then (body) ->
germanStock = []
germanStocks = JSON.parse body.body
germanStocks.forEach (stock) ->
obj = {}
this.parsePart = (remaining) ->
value = remaining.value
dashIndex = value.lastIndexOf '-'
if dashIndex != -1
remaining.value = value.substring 0, dashIndex - 1
return value.substring(dashIndex + 1).trim()
else
return ''
remaining =
value: stock.name
size = parsePart remaining
colour = parsePart remaining
name = remaining.value
sku = stock.sku
styleId = sku.split(/-/)[0]
colorcode = /^(.*)-(.*)([0-9])$/.exec(sku)?[2]
bgStyle = "url(//#{cdn}/assets/product_shots/thumbs/#{styleId}-#{colorcode}.jpg)"
obj.id = sku
obj.name = name
obj.colorUrl = bgStyle
obj.colour = toTitleCase(colour.toLowerCase())
obj.size = size
obj.stock = stock.stock
obj.inProduction = ''
obj.office = 'DE'
stock.preorders.forEach (i, idx) ->
date = moment(i.date).format('DD-MM-YYYY')
if idx != stock.preorders.length - 1
obj.inProduction = obj.inProduction.concat i.amount + ' due on ' + date + ', '
else
obj.inProduction = obj.inProduction.concat i.amount + ' due on ' + date
germanStock.push obj
resolve germanStock
.catch (err) ->
reject err
where my data is like:
{
"id":1,
"stamp":"2014-09-25T12:55:30Z",
"name":" MENS T-SHIRT - BRIGHT BLUE - XS",
"sku":"SS01-BB0",
"stock":81,
"active":true,
"preorders":[
{
"id":92549,
"amount":160,
"date":"2016-06-19T22:00:00Z"
},
{
"id":92549,
"amount":200,
"date":"2016-06-19T22:00:00Z"
},
{
"id":92549,
"amount":1000,
"date":"2016-06-21T22:00:00Z"
}
],
"discountMatrix":0.0,
"stockNormalized":81,
"preOrdersSum":1360
},
{
"id":2,
"stamp":"2014-09-25T12:55:30Z",
"name":" MENS T-SHIRT - BRIGHT BLUE - S",
"sku":"SS01-BB1",
"stock":339,
"active":true,
"preorders":[
{
"id":92551,
"amount":240,
"date":"2016-06-19T22:00:00Z"
},
{
"id":92438,
"amount":160,
"date":"22016-06-19T22:00:00Z"
}
],
"discountMatrix":0.0,
"stockNormalized":339,
"preOrdersSum":400
},
what is the correct way to group each preorders quantity that is on the same date, so that instead of getting:
160 due on 19-06-2016, 200 due on 19-06-2016, 1000 due on 21-06-2016
i get 360 due on 19-06-2016, 1000 due on 21-06-2016
any advice much appreciated.
You could just use an object with the date as key and the total amount for the date as value.
For each preorder, add it's amount at it's date index in this object. At the end of the iteration print the content of the object:
moment = require "moment"
data = [
{
id:1
stamp: "2014-09-25T12:55:30Z"
name: " MENS T-SHIRT - BRIGHT BLUE - XS"
sku: "SS01-BB0"
stock:81
active:true
preorders:[
{
id:92549
amount:160
date: "2016-06-19T22:00:00Z"
}
{
id:92549
amount:200
date: "2016-06-19T22:00:00Z"
}
{
id:92549
amount:1000
date: "2016-06-21T22:00:00Z"
}
]
discountMatrix:0.0
stockNormalized:81
preOrdersSum:1360
}
]
obj = {}
obj.inProduction = ""
amountByDate = {}
# for each document in your data
for doc in data
# for each preorder in your document
for preorder in doc.preorders
# add it's amount in the index equals to it's date
if amountByDate[preorder.date]
amountByDate[preorder.date] += preorder.amount
else
# or create the index with the value if it doesn't exist
amountByDate[preorder.date] = preorder.amount
for date, amount of amountByDate
if obj.inProduction != ""
obj.inProduction = obj.inProduction.concat ", #{amount} due on #{moment(date).format('DD-MM-YYYY')}"
else
obj.inProduction = obj.inProduction.concat "#{amount} due on #{moment(date).format('DD-MM-YYYY')}"
console.log obj.inProduction
Result:
360 due on 20-06-2016, 1000 due on 22-06-2016

D3 Multi Line Graph with Dots

I am new to D3.js. I love it but I am having real trouble figuring out the best approach to structuring data.
I would ideally like to create a simple multiline graph that has over points over the selected points. Firstly I have the multiple lines created but trying to add the points has stumped me, and I think it has to do with the structure of my data.
Here is my working fiddle. I'm not sure if I should be trying to use d3.nest to re-arrange the data
I have a json object that I am retrieving from a google form which is all nice and smooth. This is what it looks like:
var data = [{
"description": "Global warming is a serious and pressing problem. We should begin taking steps now even if this involves significant costs",
"year2013": 40,
"year2012": 36,
"year2011": 41,
"year2010": 46,
"year2009": 48,
"year2008": 60,
"year2006": 68,
}, {
"description": "The problem of global warming should be addressed, but its effects will be gradual, so we can deal with the problem gradually by taking steps that are low in cost",
"year2013": 44,
"year2012": 45,
"year2011": 40,
"year2010": 40,
"year2009": 39,
"year2008": 32,
"year2006": 24,
}, {
"description": "Until we are sure that global warming is really a problem, we should not take any steps that would have economic costs",
"year2013": 16,
"year2012": 18,
"year2011": 19,
"year2010": 13,
"year2009": 13,
"year2008": 8,
"year2006": 7,
}, {
"description": "Don't know / refused",
"year2013": 1,
"year2012": 1,
"year2011": 1,
"year2010": 1,
"year2009": 1,
"year2008": 0,
"year2006": 1,
}]
Any help would be appreciated, I have been at it for days.
Cheers!
First - I would flatten your data
data = [
{date:"2011",type: "line0", amount:20}
...
]
Then nest your data by type
nested = d3.nest()
.key( (d) -> return d.type )
.entries(data)
Then append your line groups
# Line Groups
groups = container.selectAll('g.full-line')
.data(nested, (d) -> return d.key )
# ENTER
groups.enter().append('svg:g')
.attr( 'class', (d,i) -> "full-line#{i}" )
# EXIT
d3.transition(groups.exit()).remove()
# TRANSITION
d3.transition(groups)
Then append your chart lines
# Individual Lines
lines = groups.selectAll('.line').data (d)-> [d.values]
# ENTER
lines.enter().append("svg:path")
.attr("class","line")
.attr("d", d3.svg.line()
.interpolate(interpolate)
.defined(defined)
.x( (d,i) -> return xScale(d,i) )
.y( (d,i) -> return yScale(d,i) ) )
# EXIT
d3.transition( groups.exit().selectAll('.line') )
.attr("d",
d3.svg.line()
.interpolate(interpolate)
.defined(defined)
.x( (d,i) -> return xScale(d,i) )
.y( (d,i) -> return yScale(d,i) ) )
# TRANSITION
d3.transition(lines)
.attr("d",
d3.svg.line()
.interpolate(interpolate)
.defined(defined)
.x( (d,i) -> return xScale(d,i) )
.y( (d,i) -> return yScale(d,i) ) )
Thanks
I ended up using something similar.
/* Transform Data */
data = data.map(function (d) {
return {
country: d.country,
date: new Date(d.year.toString()),
value: d.value
};
});
/* Nest Data */
data = d3.nest().key(function (d) {
return d.country;
}).entries(data);`