Sunday, 12 January 2020

qgis - Display numeric scale in two different units, eg 1 inch = 1000 feet


How do I display a numeric scale for a map in two units, for example 1 in = 1000 ft ?


I know it's possible to display a scale bar as "Numeric," which provides only a ratio, in this example 1:12,000.


It seems like it should be possible to insert an expression into a label, only I can't figure out how to reference a map item in the expression builder. The map item has a variable "map_scale" but when I put this variable into a text item, it just displays as a string. enter image description here




Answer



Use the custom python function provided in the answer to this question, then divide by 12 to get inch:feet ratio.


Step 1: Add a text label to the print composer


Step 2: Insert an expression into the label


enter image description here


Step 3: Create a custom function In the "Insert Expression" window, click the "Function Editor" tab. Click "New File," enter the file name get_composer_map_scale, click OK. Copy and paste the code on this page, then click "Load" to register the custom function. enter image description here


Step 4: Use the custom function to display the scale as the ratio [inches on the page]:[feet in real life]


enter image description here


Copy/paste into your label:




1 inch = [%round(get_composer_map_scale( 'Composer 1')/12, 0)%] feet



Substituting the name of your print composer where it says Composer 1.


Note: I added the function round(value, places) to round to an integer value of feet. To display more digits, substitute the number of digits for the zero.


EDIT: This answer only works for QGIS 2. For QGIS 3, see this answer: gis.stackexchange.com/a/332759/35561. Thanks to @MrChe for the suggestion.


No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...