1 How robust is your spatial How robust is your spatial query query ? ? A formal taxonomy to express A formal taxonomy to express spatial intersections spatial intersections Yao Cui and Michael Ross Integrated Land Management Bureau Victoria, BC Martin Davis Refractions Research Inc. Victoria, BC FOSS4G 2007, Victoria, BC, Canada
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? - PowerPoint PPT Presentation
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
11
How robust is your spatial queryHow robust is your spatial query??A formal taxonomy to express A formal taxonomy to express
spatial intersectionsspatial intersections
Yao Cui and Michael RossIntegrated Land Management Bureau
Victoria, BC
Martin DavisRefractions Research Inc.
Victoria, BC
FOSS4G 2007, Victoria, BC, Canada
22
1.1. What is an intersection taxonomy?What is an intersection taxonomy?
2.2. Why do we need this taxonomy?Why do we need this taxonomy?
3.3. How was the taxonomy created?How was the taxonomy created?
4.4. How was the taxonomy validatedHow was the taxonomy validated
33
Why do we need a taxonomy?Why do we need a taxonomy?
Started when the first version of Java Started when the first version of Java Topology Suite (JTS) was developed by Topology Suite (JTS) was developed by Martin Davis right here in Victoria, BC, Martin Davis right here in Victoria, BC, back in 2001…back in 2001…
One of the objectives: to test JTS binary One of the objectives: to test JTS binary predicatespredicates
44
A list of binary predicatesA list of binary predicates
Hierarchy of taxonomy intersection componentsHierarchy of taxonomy intersection components
Geometry
Intersection Components
Decom
posing
2424
Examples of Intersection Components Examples of Intersection Components
Geometry Expression Description
Interior intersection components in zero dimension
A.P.Int The interior a Point
A.L.Int.V The interior of a LineString at a vertex
A.L.Int.NV The interior of a LineString at a non-vertex
2525
Examples of Intersection Components in Examples of Intersection Components in one dimensionone dimension
Interior intersection components in one dimension
A.L.Int.SP-EP A Line: from the start point to the end point
A.L.Int.EP-V A LineString: from the end point to a vertex
A.L.Int.EP-NV A LineString: from the end point to a non-vertex
A.LR.Int.EP-NVA closed LineString: from the closing point to a non-vertex
A.L.Int.V-NV A LineString: from a vertex to a non-vertex
A.L.Int.NV-NV A LineString: from a non-vertex to a non-vertex
Interior intersection component in two dimension
A.A.Int A Polygon: in the interior
2626
Taxonomy examples on Intersections Taxonomy examples on Intersections
GeometryIntersection Expression
A B
dim(0){A.P.Int ∩ B.P.Int}
dim(0){A.P.Int ∩ B.L.Bdy.EP}
dim(0){A.L.Int.NV ∩ B.L.Int.VN}
dim(0){A.P.Int ∩ B.A.Ext.h}
dim(1){A.L.Int.EP-SP ∩ B.L.Int.EP-NV}
dim(1){A.L.Int.SP-EP ∩ B.A.Bdy.NV-NV}
dim(2){A.A.Int ∩ B.A.Int}
2727
In summaryIn summary
Defined an intersection taxonomy and Defined an intersection taxonomy and equivalent formal language with a validatorequivalent formal language with a validator
Generated a list of over 60,000 potential Generated a list of over 60,000 potential test cases by enumerating through test cases by enumerating through intersection componentsintersection components
Compiled 400 representative test cases Compiled 400 representative test cases and organized them by following the and organized them by following the taxonomytaxonomy
Built a parser to validate the grammar of Built a parser to validate the grammar of the predicate taxonomythe predicate taxonomy
Written in GNU SmallEiffel usingGobo Written in GNU SmallEiffel usingGobo Eiffel Yacc and Gobo Eiffel LexEiffel Yacc and Gobo Eiffel Lex Yacc takes a BNF grammar as input and Yacc takes a BNF grammar as input and
generates a parsergenerates a parser Took only two hours to buildTook only two hours to build
Most of that time was spent typing in the Most of that time was spent typing in the grammargrammar
2929
Yacc Input Grammar FormatYacc Input Grammar FormatVery Similar to EBNFVery Similar to EBNF