|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Description : Aim of the module The aim of the cartogram (or anamorphosis, meaning distortion) is the explanation of a phenomenon by distorting the areas constitutive of a map. To do so, it is necessary that the areas of the final map be recognizable by the user. You particularly need to keep the vicinities between regions while avoiding the "typological aberrations", which means the overlapping of two polygons after the distortion. Principle Our cartogram consists in proportioning the surface of a territory to a numerical data (population, distances, etc.) Hence, the final map is composed with territories ideally balanced (density = date/surface). The data of origin must thus be an absolute data (counting but no percentage). The distortion method We choose the J.A. Dougenik, N.R. Chrisman and D.R. Niemeyer’s algorithm, which works with iteration to get closer to this ideal situation. Each iteration homogenizes the density but consequently distorts the map, making it less and less recognizable. The principle of distortion is to calculate, for each point of the map, the strength that will move it. The strength exerted on a point is the consequence of the strengths exerted by each one of the polygons on it. A polygon which surface is to increase will push back the points close to it, and if it is to be reduced, it will attract them. The calculations integrate corrections to limit the typological aberrations. Settings
As it has been pointed out earlier, the cartogram must account for a phenomenon by distorting a surface while keeping it enough shape to conserve its legibility. If you ask a significant amount of iterations to your algorithm, it will improve the digital precision of the displaying but might lessens the legibility of the map. Stop criteria by proportionality Initialy we had chosen the surface/data regression as stop criteria (see below). The regression is an approximation of a scatter diagram by an affine linear. Despite the generally good results, there are 2 two main disadvantages :
1) Proportionality The linear that crosses the scatter diagram centroid and the origin point is a linear approximation of the scatter diagram :
The quality indicator which determines if the distortion is sufficient will be :
2) Taking into account of the small and the big values To allow the user to evaluate if an object is far or near from the optimal surface, we calculate the angle between the two linears :
Script : 2 module untyped_list "" 3 mod_type integer "104" 3 mod_subtype integer "614" 3 mod_name string "Cartogramme" 3 mod_dads integer_list "" 4 ? integer "4" 3 delay_sec integer "10" 3 coeff_stop double "0.97" 3 dens_stddev double "0.223402" 3 mean_density double "0.429078" 3 out_time boolean "F" 3 iter_stop integer "5" 3 regression untyped_list "" 4 data_count integer "277" 4 unavail_count integer "0" 4 xsum double "553747" 4 ysum double "4588.071563" 4 xavg double "1999.086643" 4 yavg double "16.563435" 4 xvar double "71307426.158558" 4 yvar double "1779.121704" 4 coeff double "0.978722" 4 xst_dev double "8444.372455" 4 yst_dev double "42.179636" 4 covariance double "348601.639186" 4 areglin double "0.004889" 4 breglin double "6.790472" 3 dens_stddev_array double_list "" 4 ? double "0.210394" 4 ? double "0.096969" 4 ? double "0.12711" 4 ? double "0.160331" 4 ? double "0.19479" 4 ? double "0.223402" 3 mean_density_array double_list "" 4 ? double "0.062089" 4 ? double "0.060254" 4 ? double "0.119889" 4 ? double "0.201657" 4 ? double "0.306295" 4 ? double "0.429078" 3 coeff_array double_list "" 4 ? double "0.045839" 4 ? double "0.502585" 4 ? double "0.83564" 4 ? double "0.934458" 4 ? double "0.965265" 4 ? double "0.978722" Samples
|