QGIS Expressions: Concatenated Values to Array and Sort
In Geographic Information Systems (GIS), data cleaning often involves dealing with "One-to-Many" relationships. For example, a single land parcel might have multiple 'Owner' names listed in a single cell, separated by commas. To perform professional analysis, you need to transform these concatenated values into a sorted array. Using the QGIS Expression Engine, you can automate this process without complex Python scripting.
1. The Logic: From String to Array
The transformation involves three primary steps within a single QGIS expression:
- Split: Convert the string into an array based on a delimiter (e.g., a comma).
- Sort: Order the elements of that array alphabetically or numerically.
- Join (Optional): Convert the sorted array back into a clean string for display.
2. The Formula: Step-by-Step
Open the Field Calculator and use the following expression structure. Replace "YourField" with your actual column name:
Basic Alphabetical Sort:
array_to_string(
array_sort(
string_to_array("YourField", ',')
)
)
Advanced: Removing Duplicates and Trimming Spaces
Often, concatenated strings contain leading spaces or duplicate entries. We can wrap the expression to clean the data as we sort it:
array_to_string(
array_sort(
array_distinct(
array_foreach(
string_to_array("YourField", ','),
trim(@element)
)
)
)
)
3. Key Functions Explained
| Function | Operation | Why use it? |
|---|---|---|
| string_to_array | Splits text into an array. | Turns "B,A,C" into ['B','A','C']. |
| array_sort | Reorders elements. | Turns ['B','A','C'] into ['A','B','C']. |
| array_distinct | Removes duplicates. | Essential for cleaning "Join" results. |
| array_to_string | Converts back to text. | Required to save the result in a String field. |
4. When to Keep Data in Array Format
In QGIS 3.x and beyond, you don't always have to convert your array back into a string. You can store data in an Array Map Layer or use the array directly in Layer Styling.
- Rule-Based Labeling: You can check if a specific value exists in the sorted array using
array_contains(). - Dynamic Formatting: Use
array_get()to only display the first (alphabetically first) value from a list in your map labels.
Conclusion
Transforming concatenated values to a sorted array in QGIS is a fundamental skill for data integrity. Whether you are managing property records, ecological sightings, or utility assets, using array_sort and string_to_array ensures your attributes are organized and searchable. In 2026, leveraging these built-in array functions is the most efficient way to maintain a "Super User" level of database cleanliness within your GIS projects.
Keywords
QGIS string to array, QGIS array_sort expression, concatenated values QGIS, GIS data cleaning, QGIS field calculator arrays, alphabetical sort QGIS attributes, remove duplicates QGIS array, GIS technical workflow 2026.
