During this past summer I was lucky enough to have the chance of working with one of my professors to build a "simple GIS-like application." In a nutshell, a GIS (Geographic Information System) is a broad term that encompasses systems capable of storing, visualizing, and analyzing spatial data. Typically, we see them used for maps, as the word "geographic" in GIS implies, but there’s no reason to believe that they couldn’t be useful for analyzing other spatial things. Things like how bacteria move around on a petri dish for instance.
I picked the name (wSIS) for several reasons. The "wall" portion of the name refers to the fact that it is supposed to run on the video wall at JMU. This has not come to being yet. The remainder of the name, SIS, was chosen for two reasons. First to correct the misnomer that geographic information systems are somehow intrinsically "geographic." As far as I can tell they are spatial analysis systems. Second, I didn’t want to hint to the users that my application was somehow a full-blown GIS (it was developed in 3 months by an inexperienced sophomore!).
To make the project more than plain application development, I researched and experimented with multi-threading. wSIS stores all of the feature data in a quadtree. This has become the basis for my honors thesis, so I’ll have to write more about it later. For what it’s worth, tests I ran showed a 40-50% speed up in quadtree creation.
Screenshots are available here.
- Written in Java 6
- Reads ESRI Shapefiles (.shp)
- Reads attribute files (.csv)
- Draws features based on attributes (choropleth)
- Ability to chose between several map projections
- Simple analysis (add up the population along a road)
- Analysis plugins written in Python
- Saves map details (theme/zoom/projection/data) in custom XML schema
- Reads these XML files
- Supports printing maps