{'fraction_non_alphanumeric': 0.018875192604006163, 'fraction_numerical': 0.0023112480739599386, 'mean_word_length': 5.081967213114754, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
QGIS Support for Map Projection Distortions Visualization

Most important properties of a map projection, i.e. reference coordinate system for spatial data are size and distribution of angle, distance and area distortions. If performed in an inappropriate way, without consideration of map projection distortions, calculations in plane reference coordinate system can lead to unreliable results and analysis. GIS software usually have support for these problems, for example, it is possible to get distances, azimuths or areas on sphere or ellipsoid. It can be assumed that awareness of these facts is not widely accepted by regular GIS users. Expert users acquainted with theory of Earth's shape and its projection into the plane are exception to this assumption. Usual way for visualisation of map projection distortions are Tissot's indicatrices which are not usually supported by GIS and are not easy to understand by regular GIS user. In this work, different way to visualize these distortions is proposed to be implemented into QGIS. Map projections distortions can be interpreted as field which mean that raster representation of its values is appropriate. When raster is calculated it can be visualised by known methods for thematic maps, or contours can be extracted as vector representation. Having this, GIS user has convenient and easy way to estimate impact of map projection distortions and subsequently to decide whether is it important to take then into account. PROJ4 has function pj_factors which calculates scales (meridian, parallel, areal), convergence, meridian-parallel angle, angle distortion, max and min scale (Tissot's indicatrix axes) for a given point. Verbose output for a projected point is controlled by –V option of PROJ4 executable. Function pj_factors is not included in PROJ4 API. The proposed way to include calculations and visualizations in QGIS is to include pj_factors in PROJ4 API in a such way that data structure can be changed in future. Next step is to bind this function into QGIS core and its class QgsCoordinateTransform. This way output from pj_factors is available for core functions or plugin development. Later is chosen as solution for adding this functionality to QGIS. Alternative approach is also implemented which calls PROJ4 executable and parse distortion values from its output. This has advantage that plugin can be used without modifying existing PROJ4 API or QGIS core at the expense of speed. Since raster can have large number of points, first approach is far better solution, and alternative can only be useful for limited usage.