A civil-protection planning team in Luxembourg is replacing the school layer on its dispatch map, so that a crew sent to an alarm at a school is routed to the right building. The team geocoded the Education Ministry's register of public fundamental-school buildings with Geocode Addresses in ArcGIS Pro 3.7. Before the points go live, a technician holds the result to the team's acceptance rules: every record that breaks one goes back for rematching or to the register's owner, and every record that passes goes to dispatch as it is. A point that slips through sends a crew to the wrong street or the wrong village; a false flag costs somebody an afternoon.
The planning team has geocoded the Education Ministry's register of public fundamental-school buildings with Geocode Addresses in ArcGIS Pro 3.7 (Output Fields All), and the points are meant to replace the dispatch map's school layer. Acceptance is yours: hold the result to the team's rules below and flag every record that breaks one, with the rule it breaks. Flag, never fix — what you flag goes back to be rematched or to the register's owner.
Any GIS will do: ArcGIS Pro, QGIS or a script. You are graded on what you hand in.
luxembourg-sites-geocoded holds one record per register entry, as points in WGS 84 (EPSG:4326). It carries a subset of the fields Pro 3.7 writes with Output Fields All. The match results in it are simulated for this exercise, in the shape Pro writes them; the register and its addresses are real. Every record is named by its id: whole numbers, one per record, no two the same.
| field | type | meaning |
|---|---|---|
id | integer | The record's id in the delivery. What a flag names |
Status | text | M matched, U unmatched, T tied — "more than one candidate with the same best match score but at different locations" |
Score | number | The match score of the candidate the record was matched to, 0 to 100, where 100 is a perfect match |
Match_type | text | How the record was matched: A, automatically |
Match_addr | text | The address of the matched candidate, as one line: house number, street, postcode and locality |
Addr_type | text | The level the candidate was matched at: PointAddress, StreetAddress (the house number interpolated from a range), StreetName (a street without the house number), Postal, PostalExt, PostalLoc (a postcode and a place name), Locality |
AddNum | text | The house number of the matched candidate, returned for PointAddress and StreetAddress matches only; empty otherwise |
Postal | text | The postcode of the matched candidate; empty when there is no match |
USER_id_source | text | The register's id for the school (the Ministry's ECO_ID) |
USER_nom | text | The school's name in the register |
USER_rue | text | The street, as the register writes it |
USER_numero | text | The house number in the register; empty where the register gives none |
USER_code_postal | text | The postcode in the register |
USER_localite | text | The locality in the register: the place name of the postal address, which is often a village of a commune named otherwise |
USER_commune | text | The commune the school belongs to, spelled as commune in luxembourg-communes |
The USER_ prefix is how Pro marks the fields of the table you geocoded; the others are what the locator returned. AddNum and USER_numero are written the same way (12, 3A), and so are Postal and USER_code_postal (1234), so each pair compares text against text, exactly as the file holds it. A record with Status U has no geometry.
luxembourg-communes is the country's communes as polygons, with commune (its name), canton and lau2 (its LAU code), in WGS 84. It is what the commune rule reads; it is not under review.
The locator's minimum match score was 85, so Pro matched only candidates scoring 85 or more. The team's acceptance rules are stricter:
| rule | label | broken when |
|---|---|---|
unmatched | Not matched (Status U) | Status is U |
tied | Tied between candidates (Status T) | Status is T |
low-score | Matched with a score below 90 | Status is M and Score is below 90. A score of exactly 90 passes |
coarse-match | Matched no finer than the street | Status is M and Addr_type is StreetName, Postal, PostalExt, PostalLoc or Locality |
other-house | Matched to another house number | Status is M, Addr_type is PointAddress or StreetAddress, and AddNum differs from USER_numero |
other-postcode | Matched to another postcode | Status is M and Postal differs from USER_code_postal |
other-commune | Placed outside the commune the register names | Status is M and the point lies outside the polygon of luxembourg-communes whose commune equals USER_commune. A point on that polygon's boundary is inside it |
duplicate-record | Register id on more than one record | USER_id_source appears on more than one record: flag every one of them, whatever its Status |
The middle five rules read matched records only: a U or T record is flagged for its status and judged on nothing else. Test every record against every rule, and flag a record once for each rule it breaks.
AddNum <> USER_numero compares text with text. For the commune rule, run Spatial Join with the sites as Target Features and luxembourg-communes as Join Features, keeping its defaults (Join one to one, Intersect), then compare commune with USER_commune. For shared ids, Find Identical on USER_id_source, or Summary Statistics with USER_id_source as the case field, whose Frequency field counts each id's records.count("USER_id_source", "USER_id_source") > 1 finds the shared ids.Choose a record on the map or under Features, read what it holds, and tick the rules it breaks; the list searches and filters, and flags every record it shows at once. A review worked out in your own GIS or a script goes under Paste a list, one id, rule a line, the rule by its id or its label. Each rule is graded on its own: every record that breaks it flagged for it, and none that meets it.
These are where the teaching is. Read them twice.
Modelled on the acceptance check a GIS team runs on a batch geocoding before its points reach a dispatch or emergency-planning layer, on the fields ArcGIS Pro 3.7 writes, as its documentation describes them: “What's included in the geocoded results”, “Geocode Addresses (Geocoding Tools)”, “Tips for improving geocoding quality” and “Rematch Addresses (Geocoding Tools)”, and for the review itself “JSON To Features (Conversion Tools)”, “Select Layer By Attribute (Data Management Tools)”, “Spatial Join (Analysis Tools)”, “Find Identical (Data Management Tools)” and “Summary Statistics (Analysis Tools)”, ArcGIS Pro 3.7, read 17 October 2026. It practises two skills the ArcGIS Pro Associate 2025 exam guide lists: evaluating the suitability of a dataset for a given scenario, and applying a query. The register is the Luxembourg Education Ministry's 2021 list of public fundamental-school buildings and the positions are ACT's BD-Adresses, both CC0; the match results are simulated, and the team's rules are illustrative. Kharita is not affiliated with Esri.
Loading the delivery…
8 scored, 0 informational
Records with no match flagged
10%Tied records flagged
10%Matched records scoring below 90 flagged
15%Matches no finer than the street flagged
15%Matches to another house number flagged
10%Matches to another postcode flagged
10%Points outside the register's commune flagged
15%Every record sharing a register id flagged
15%