Changes

950 bytes added ,  01:27, 6 February 2017
Line 1: Line 1: −
The idea of the MeeshQuest project is to emulate some of the functionality of map sites like [http://www.mapquest.com/ MapQuest] or [http://maps.google.com/ Google Maps].  We will need a database of cities, which are just named points in the plane.  From this, we want to be able to draw pictures of a given region showing the cities contained in that region.  We will get cities from the database and insert them into a spatial datastructure that can be used to draw a picture.  The basic spatial datastructure we will use is a [[quadtree]] -- a sort of 2-dimensional binary search tree.  
+
The idea of the MeeshQuest project is to emulate some of the functionality of map sites like [http://www.mapquest.com/ MapQuest] or [http://maps.google.com/ Google Maps].  We will need a database of cities, which are just named points in the plane.  From this, we want to be able to draw pictures of a given region showing the cities contained in that region.  We will get cities from the database and insert them into a spatial data structure that can be used to draw a picture.  The basic spatial data structure we will use is a [[quadtree]] -- a sort of 2-dimensional binary search tree.  
   −
The operations you will need to support can be gleaned from the [http://www.cs.umd.edu/users/meesh/420/spr07/part1/p11/node26.html input specification]:
+
The project is divided into 4 parts:
 +
*[[Part 1]]
 +
*[[Part 2]]
 +
*[[Part 3]]
 +
*[[Part 4]]
   −
* [[createCity]] and [[deleteCity]]: You will need to be able to register cities with and remove them from the database.  No two cities can have the same coordinates or name.
+
(Remember: if you think this page could be better -- you can change it!  Click the "edit" tab up top to get started.)
* [[mapCity]] and [[unmapCity]]: These take a city that's already registered in the database and add it to or remove it from the spatial datastructure.
  −
* [[listCities]]: Output a sorted (XML) list of cities in the (database? spatial datastructure? graph?).
  −
* [[rangeCity]]: This searches the spatial datastructure for all cities within a given radius of a given point.
  −
* [[nearestCity]]: This finds the nearest city to a given point (in the database ?).
  −
* [[printPRQuadtree]]: This outputs an XML (textual) representation of the spatial datastructure.
  −
* [[saveMap]]: This outputs a visual representation (an image) of the spatial datastructure.  See [[CanvasPlus]].
  −
* [[clearAll]]: Clears all of the datastructures, removing all elements.
     −
Since this is a visual project, it will help to be able to visualize your datastructures.  A nice graphics library called [[CanvasPlus]] [http://www.cs.umd.edu/users/meesh/420/spr07/part1/p11/node24.html (spec)] makes this visualization easy.
+
== Data Structures ==
 +
There are three main concepts for this project:
 +
# Data Dictionary (TreeMaps and TreeSets for part 1, B-tree for parts 2 and 3)
 +
# Spatial Map ([[PR Quadtree]] for part 1, [[PM Quadtree#PM3 Quadtree | PM3 Quadtree]] for part 2)
 +
# Road Adjacency List
 +
 
 +
An important concept to remember is that the data dictionary is not the same as the spatial map. If you create a city, it is not automatically mapped in the spatial map.
 +
 
 +
== Input ==
 +
 
 +
The input comes in the form of [http://en.wikipedia.org/wiki/XML XML]; a handy [https://www.cs.umd.edu/users/meesh/420/ProjectBook/cmsc420util.jar XmlUtility] for parsing the input is provided. If you are not familiar with XML, w3schools has a great tutorial that can be found [http://www.w3schools.com/xml/ here]. The spec also has a decent amount of information on how to parse the XML.
 +
 
 +
== Output ==
 +
 
 +
Output is stored in a DOM object that represents an XML file. A DOM document consists of a root Element that has any number of child Elements, each of which can have any number of child Elements. The DOM document building is handled by [http://java.sun.com/j2se/1.4.2/docs/api/org/w3c/dom/Document.html org.wc3.dom.Document]. When required to print [http://en.wikipedia.org/wiki/XML XML] for output, you can use the same handy [https://www.cs.umd.edu/users/meesh/420/ProjectBook/cmsc420util.jar XmlUtility]. The spec has a decent amount of information on how to use the utility to write to the DOM object.
 +
 
 +
== City Objects ==
 +
 
 +
You will want to create a <code>City</code> object to store basic information about cities; the spec recommends extending <code>[http://java.sun.com/j2se/1.5.0/docs/api/java/awt/geom/Point2D.Float.html java.awt.geom.Point2D.Float]</code>.
 +
 
 +
== Visualization ==
 +
 
 +
Since this is a visual project, it will help to be able to visualize your data structures.  A nice graphics library called [http://wam.umd.edu/~bzoller/cmsc420/doc/cmsc420/drawing/CanvasPlus.html CanvasPlus] [http://www.cs.umd.edu/users/meesh/420/spr07/part1/p11/node24.html] makes this visualization easy.
editor
32

edits