310 likes | 419 Vues
This presentation by Yao Cui, Michael Ross, and Martin Davis explores the formal taxonomy established to express spatial intersections, vital for spatial query robustness in GIS applications. Originating from the development of the Java Topology Suite (JTS), the taxonomy assists in defining intersection components, organizing test cases, and validating binary predicates in spatial analysis. We discuss the creation, validation, and practical implications of the taxonomy, including a grammar for categorizing intersections and examples of intersection components for enhanced geometric understanding.
E N D
How robust is your spatial query? Yao Cui and Michael Ross Integrated Land Management Bureau Victoria, BC Martin Davis Refractions Research Inc. Victoria, BC A formal taxonomy to express spatial intersections FOSS4G 2007, Victoria, BC, Canada
What is an intersection taxonomy? • Why do we need this taxonomy? • How was the taxonomy created? • How was the taxonomy validated
Why do we need a taxonomy? • Started when the first version of Java Topology Suite (JTS) was developed by Martin Davis right here in Victoria, BC, back in 2001… • One of the objectives: to test JTS binary predicates
A list of binary predicates • Equal • Disjoint • Intersects • Touches • Crosses • Within • Contain • Overlap
Now the questions: • How many more test cases? • How do we know if we have enough test cases? • How do we know if important representative test cases are not missing? • How are we going to define the different categories of spatial intersects? • How to organize these test cases?
We need four things • Taxonomy to define and express intersection components • Taxonomy to express intersections • Taxonomy to help organizing the test cases • A grammar to define the taxonomy
How was the taxonomy created? To search and define a path to decompose a geometry
Dimensionally Extended Nine-Intersection Model (DE-9IM) B Source: Egenhofer and Clementini
B A B A
Geometry Decomposing Geometry Instantiable Geometry Types Interior Boundary Exterior Dimensions Intersection Component
Hierarchy of taxonomy intersection components Geometry Decomposing Intersection Components
In summary • Defined an intersection taxonomy and equivalent formal language with a validator • Generated a list of over 60,000 potential test cases by enumerating through intersection components • Compiled 400 representative test cases and organized them by following the taxonomy
IntersectionTalk Validator • Built a parser to validate the grammar of the predicate taxonomy • Written in GNU SmallEiffel usingGobo Eiffel Yacc and Gobo Eiffel Lex • Yacc takes a BNF grammar as input and generates a parser • Took only two hours to build • Most of that time was spent typing in the grammar
Yacc Input Grammar FormatVery Similar to EBNF Intersection_Component: Interior_Component | Boundary_Component | Exterior_Component ; Interior_Component: Interior_Component_0D | Interior_Component_1D | Interior_Component_1D SEPARATOR REVERSE | INTERIOR ; Interior_Component_0D: INTERIOR SEPARATOR CLOSE_POINT | INTERIOR SEPARATOR Vertex_Choice | INTERIOR SEPARATOR CLOSE_POINT Multipass | INTERIOR SEPARATOR Vertex_Choice Multipass ; Interior_Component_1D: INTERIOR SEPARATOR START_POINT TO END_POINT | INTERIOR SEPARATOR END_POINT TO Vertex_Choice | INTERIOR SEPARATOR CLOSE_POINT TO Vertex_Choice | INTERIOR SEPARATOR Vertex_Choice TO Vertex_Choice | INTERIOR SEPARATOR END_POINT TO Vertex_Choice Multipass | INTERIOR SEPARATOR CLOSE_POINT TO Vertex_Choice Multipass | INTERIOR SEPARATOR Vertex_Choice TO Vertex_Choice Multipass | INTERIOR SEPARATOR END_POINT Multipass TO Vertex_Choice | INTERIOR SEPARATOR CLOSE_POINT Multipass TO Vertex_Choice | INTERIOR SEPARATOR Vertex_Choice Multipass TO Vertex_Choice | INTERIOR SEPARATOR END_POINT Multipass TO Vertex_Choice Multipass | INTERIOR SEPARATOR CLOSE_POINT Multipass TO Vertex_Choice Multipass | INTERIOR SEPARATOR Vertex_Choice Multipass TO Vertex_Choice Multipass ; ……
Future work and the challenge • More rigorous decomposing of intersection components? • Adding taxonomy for spatial operations and functions? • Automatically “grow” specific geometries: taxonomy grammar, rewriting rules (Koch and Mandelbrot), Chomsky grammars, L-systems (Lindenmayer), …?
Thank you! Link to JTS and JTS Validation Suite: http://www.vividsolutions.com/jts/jtshome.htm Fore more information, contact Yao Cui E-mail: yao.cui@gov.bc.ca Telephone: (250) 387-9310