310 likes | 411 Views
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?
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