LPISQA 3.b.ii LPISQA portal automatic screening

From Wikicap - European Commission

Automatic screening procedure

After the successful xml/gml format validation carried out in the portal, packages data go through two other types of validation tests.

The first step, Package Item Consistency Test (former A test), consists in the validation of the xml/gml files header attributes and of the gml files geometries. Data is then extracted from gml/xml files and loaded inside JRC database.

In the second step, Package Consistency Test (former B test), data is screened for the correctness of the attributes content.

Package Item Consistency Test

In the header validation tests, files are checked against:

  • invalid file format, i.e.: “.doc” or “.xls” instead of “.xml”/”.gml”; “.xml” instead of “.gml”
  • invalid lpis_code, i.e.: lpis_code=“LPIS_TEST”
  • invalid reporting_year, i.e.: reporting_year=“2020”
  • invalid lpis_lot, i.e.: lpis_lot=“0”
  • invalid xmlns:cap, i.e.: xmlns:ns1=“http://ec.europa.eu/dgagri/cap”
  • invalid xsi:schemaLocation, i.e.: xsi:schemaLocation=“http://ec.europa.eu/dgagri/cap ftp://anonymous@mars.jrc.ec.europa.eu/lpis/Schemas/4_3_LpisSamplePreselectionStatus_20101221.xsd”
  • invalid xmlns:xsi
  • invalid xmlns:gml
  • invalid xmlns


In the geometry validation tests, spatial features are evaluated according to OGC Simple Feature Access standard (http://www.opengeospatial.org/standards/sfa).

Specifically, geometry validation is carried out on JRC server by FME GeometryValidator transformer:

FME geometry validator.jpg


There can be several reasons why a feature may fail this geometry check, as described on FME website. Some examples are provided below:

  • Hole Outside Shell
Hole outside shell.jpg
WKT Example: POLYGON((0 0, 10 0, 10 10, 0 10, 0 0), (15 15, 15 20, 20 20, 20 15, 15 15))
  • Nested Hole
Nested hole.jpg
WKT Example: POLYGON((0 0, 10 0, 10 10, 0 10, 0 0), (2 2, 2 8, 8 8, 8 2, 2 2), (3 3, 3 7, 7 7, 7 3, 3 3))
  • Disconnected Interior
Disconnected interior.jpg
WKT Example: POLYGON((0 0, 10 0, 10 10, 0 10, 0 0), (5 0, 10 5, 5 10, 0 5, 5 0))
  • Self Intersection
Self intersection.jpg
WKT Example: POLYGON((0 0, 10 10, 0 10, 10 0, 0 0))
  • Ring Self Intersection
Ring self intersection.jpg
WKT Example: POLYGON((5 0, 10 0, 10 10, 0 10, 0 0, 5 0, 3 3, 5 6, 7 3, 5 0))
  • Nested Shells
Nested shells.jpg
WKT Example: MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0)),(( 2 2, 8 2, 8 8, 2 8, 2 2)))
  • Duplicated Rings
WKT Example: MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0)),((0 0, 10 0, 10 10, 0 10, 0 0)))
  • Too Few Points
WKT Example: POLYGON((2 2, 8 2))
  • Invalid Coordinate
WKT Example: POLYGON((NaN 3, 3 4, 4 4, 4 3, 3 3))
  • Ring Not Closed
WKT Example: POLYGON((0 0, 0 10, 10 10, 10 0))


Open source GIS software QGIS and OpenJUMP both have tools for geometry validation:

QGIS TopologyChecker.jpg


OpenJUMP ValidateSelectedLayers.jpg



Package Consistency Test

In the following phase, data inside database is automatically screened for consistency of package attributes. So far, 24 tests have been developed.

They evaluate the following:

  • Test b01: if the number of imported parcels in LpisSamplePreselectionStatus.xml equals the optimal pre-selection size.
  • Test b02: if there are differences in rpid between the original sample pre-selection provided by JRC and the LpisSamplePreselectionStatus.xml file delivered in the ETS report package.
  • Test b03: check correctness of reporting inspected and skipped parcels in the LpisSamplePreselectionSatus.xml.
  • Test b04: if the reference area declared by the MS in the sample pre-selection (LpisPointZeroState.gml) equals area in the ETS package (LpisPolygonZeroState.gml).
  • Test b05: if the rpid is unique (if there are no multipolygons).
  • Test b06: if all inspected parcels belonging to the QC sample are present in the PolygonZeroState.gml.
  • Test b07: if reference area in the ETS package (LpisPolygonZeroState.gml file) is in hectares.
  • Test b08: if RP_FSI (rp_fsi_skipped_occ) attribute in LpisSamplePreselectionStatus.xml is correct.
  • Test b09: if all parcels flagged as feasible for inspection in LpisSamplePreselectionStatus.xml file have only one corresponding record in EtsObservations.xml file.
  • Test b10: if all parcels flagged as feasible for inspection in LpisSamplePreselectionStatus.xml file have only one corresponding polygon in LpisPolygonZeroState.gml file.
  • Test b11: if reference area in the ETS package (LpisPolygonZeroState.gml file) has 4 decimal precision.
  • Test b12: if all parcels flagged as “feasible for measurement” in EtsObservations.xml have reference polygon in EtsInspectionMeasurements.gml, and “not feasible for measurement” have no polygon entry.
  • Test b13: if RP_CNF_observedToRecordedAreaPercentage in Observations.xml file is correctly calculated.
  • Test b14: if RP_CNF_observedRecordedAreaDifference in Observations.xml file is correctly calculated.
  • Test b15: if all “userDefinedLegendCode” used in EtsObservation.xml match the ones defined in EligibilityProfile.xml.
  • Test b16: if all “userDefinedLegendCode” used in InspectionMeasurement.gml match the ones defined in EligibilityProfile.xml.
  • Test b17: if the zoneid names defined in OrthoimagerySet.xml file are unique.
  • Test b18: if all reference parcels reported as skipped in LpisSamplePreselectionStatus.xml file are consistent.
  • Test b19: if all reference parcels in EtsObservations.xml file are conformant to 3% area purity test.
  • Test b20: if all reference parcels in EtsObservations.xml file are conformant to 5% area purity test.
  • Test b21: if all reference parcels in EtsObservations.xml file are conformant to 7% area purity test.
  • Test b22: if all reference parcels in EtsObservations.xml file have consistent contamination reporting.
  • Test b23: if all inspected parcels that are not feasible for measurement have assigned cause of non-conformities.
  • Test b24: if all inspected parcels that are contaminated have a category of non-conformities assigned.

A more detailed description of the above tests is available here (ETS v5.3).



Go forward to schemas change log .

Return to table of contents.