public class LineCoveredByPolygonValidation extends LinePolygonAbstractValidation
This is an integrity test in which we ensure that every LineString in a FeatureType is contained by a Polygon in a second FeatureType. This needs to be done as an Integrity Test to account for both the LineString and Polygon FeatureTypes being changed in the same Transaction. Further more the test will need to be run if either (or both) FeatureTypes are changed: a new line may be created outside of a polygon, or a polygon may be deleted leaving a line uncovered. If we a bit smarter about these relationship we could run this Validation Test only on LineString insert/modify or Polygon modify/delete but life is too short, and there is always another release.
To do this with any sense of efficiency we will need to take an initial run through the Polygon SimpleFeatureSource to build an Index of FeatureID by BoundingBox. We can use this to selectively query the Polygon FeatureSource as we work through the LineString content.
TODO: David Zweirs Read This! Talk to Justin or any of the JUMP experts who have experence in implementing JTS indexes. You can use the "layers" Map to store the generated index, or make up an API to do so as part of the ValidationProcessor. At the very least your index will last for the current validation "run" - which is all that can be expected. What really needs to be done is punt the index generation off to the database/DataStore anything else won't scale (don't you love GIS problems).
ALL, PRIORITY_COMPLEX, PRIORITY_INVOLVED, PRIORITY_SIMPLE, PRIORITY_TRIVIAL
Constructor and Description |
---|
LineCoveredByPolygonValidation()
No argument constructor, required by the Java Bean Specification.
|
Modifier and Type | Method and Description |
---|---|
int |
getPriority()
The priority level used to schedule this Validation.
|
boolean |
validate(Map layers,
Envelope envelope,
ValidationResults results)
Check that lineTypeRef is convered by polygonTypeRef.
|
getLineTypeRef, getRestrictedPolygonTypeRef, getTypeRefs, setLineTypeRef, setRestrictedPolygonTypeRef
getDescription, getName, setDescription, setName, validate
public LineCoveredByPolygonValidation()
public boolean validate(Map layers, Envelope envelope, ValidationResults results) throws Exception
Detailed description...
layers
- Map of SimpleFeatureSource by "dataStoreID:typeName"envelope
- The bounding box that encloses the unvalidated dataresults
- Used to coallate results informationtrue
if all the features pass this test.Exception
- DOCUMENT ME!public int getPriority()
getPriority
in interface Validation
getPriority
in class DefaultIntegrityValidation
Validation.getPriority()
Copyright © 1996–2019 Geotools. All rights reserved.