1 / 31

How robust is your spatial query ?

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?

glyn
Download Presentation

How robust is your spatial query ?

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. What is an intersection taxonomy? • Why do we need this taxonomy? • How was the taxonomy created? • How was the taxonomy validated

  3. 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

  4. A list of binary predicates • Equal • Disjoint • Intersects • Touches • Crosses • Within • Contain • Overlap

  5. Java Topology Suite Test Builder

  6. Adding another test case

  7. Adding another test case

  8. Adding more cases …

  9. 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?

  10. 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

  11. How was the taxonomy created? To search and define a path to decompose a geometry

  12. Geometry Object Model(as defined by OGC SFS)

  13. Combinations of Geometric Subtypes between Geometry A and B

  14. Dimensionally Extended Nine-Intersection Model (DE-9IM) B Source: Egenhofer and Clementini

  15. B A B A

  16. Geometry Decomposing Geometry Instantiable Geometry Types Interior Boundary Exterior Dimensions Intersection Component

  17. Intersection components in BNF

  18. Examples of Interior Intersection Components in BNF

  19. Examples of boundary intersection components in BNF

  20. Examples of polygon boundary intersection component in BNF

  21. Terminal Definitions

  22. Examples of Intersection Components

  23. Hierarchy of taxonomy intersection components Geometry Decomposing Intersection Components

  24. Examples of Intersection Components

  25. Examples of Intersection Components in one dimension

  26. Taxonomy examples on Intersections

  27. 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

  28. 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

  29. 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 ; ……

  30. 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), …?

  31. 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

More Related