<div dir="ltr">Yes, this is a problem I noticed when experimenting with styles for the version of the georeferencer I am working on.<div><br></div><div>The goal was to to show a circle of 1 meter around a point</div><div>- thus 2 Map-Units</div><div><br></div><div>Changing the MapCanvas to a non-metric Unit showed that these was no dynamic 'switching' being done based on the srid being used.<br><div><br></div><div> I worked out a Spatialite specific solution for this</div></div><div>- retrieving the srid being used by the MapCanvas and extracting the needed information:</div><div><br></div><div>SELECT SridIsGeographic(%1), SridGetUnit(%1)<br></div><div>- found return if degrees and what type (meters,degrees, foot, yard, chain,link and fathom [international, us, indian])</div><div><br></div><div>In the case of degrees, extra work must be done (as mentioned in the previous post)</div><div>- using the center of the MapCanvas extent, calculate the length of a line for a given meter value [using 1]:</div><div><br></div><div>SELECT  ST_Length</div><div>(</div><div> MakeLine</div><div> (</div><div>  MakePoint(13.3934162138589,52.51751576264239,4326),</div><div>  ST_Project</div><div>  (</div><div>   MakePoint(13.3934162138589,52.51751576264239,4326),1,PI()/2</div><div>  )</div><div> )</div><div>):<br></div><div><br></div><div>Returns 0.000015 for the above point (in Berlin)</div><div>or 0.000009 for Greenwich/Equator.</div><div><br></div><div>This value would (for degrees) have to be recalculated each time the extent/center of MapCanvas has changed.</div><div><br></div><div>The when a gui using a MapUnit be being rendered</div><div>- it would retrieved this value, multiply by the meter value set and use the result when rendering.</div><div><br></div><div>----</div><div>For QGIS 3.0, I believe, implementing such a solution would be a good idea.</div><div><br></div><div>Inside a MapCavas, when the srid is set (or changed) </div><div>- which srid as number (different deggres type bring different results)</div><div>- what type of Unit is it</div><div>-- here srs.db could contain the basic values of 1 meter for</div><div>--> foot, yard, chain,link and fathom [international, us, indian]</div><div>- when degrees, recalculating the value upon extent change</div><div><br></div><div>When rendering using MapUnit</div><div>- retrieve the 1 meter value</div><div>- multiply by the meter value set in the MapUnit property and use that result</div><div><br></div><div>This would be an API break that should be done now.</div><div><br></div><div>Mark Johnson, Berlin Germany</div><div><br></div><div><br></div><div><br></div><div><br></div></div>