""" Try combining the functions in custom labels for two grids with 1000 meter interval lines. first: if(left(right( @grid_number , 4),1) = 0, if( @grid_axis = 'x', longNumber( @grid_number ), ''), shortNumber( @grid_number )) second: if(left(right( @grid_number , 4),1) = 0, if( @grid_axis = 'y', longNumber( @grid_number ), ''), '' ) Klas Karlsson """ from qgis.core import * from qgis.gui import * @qgsfunction(args='auto', group='Custom') def shortNumber(gridNumber, feature, parent): """ Converts coordinates to "kilometer grid index".

Example:

shortNumber(123456) -> '23'

Tips

Try: shortNumber( @grid_number ) """ gridString = str(int(gridNumber)) return gridString[len(gridString)-5:len(gridString)-3] @qgsfunction(args='auto', group='Custom') def longNumber(gridNumber, feature, parent): """ Converts coordinates to "kilometer grid index" with superscript characters to create a "full" coordinate.

Example:

longNumber(123456) -> '123456'

Tips

Try: longNumber( @grid_number )

Unicode Font

You need to select a font that supports unicode for this to work. """ gridString = str(int(gridNumber)) fullString = '' supScr = (u'\u2070',u'\u00B9',u'\u00B2',u'\u00B3',u'\u2074',u'\u2075',u'\u2076',u'\u2077',u'\u2078',u'\u2079') charNumber = len(gridString) for char in gridString: if charNumber == 5 or charNumber == 4: fullString += char else: fullString += supScr[int(char)] charNumber -= 1 return fullString