Not bad, right? Well it took me a couple months to figure out the geometry to make the roads intersect cleanly. I'm no expert in linear algebra and making two dimensional shapes intersect cleanly is difficult without any good understanding of the subject. As you can see, both roads and foot paths are rendered, and the roads are rendered according to the data provided by the life-saving openstreetmap.org. Openstreetmap.org contains a wealth of other data, including building footprints, which I'm leaving alone for now.
It happens that I have a homework project in my transportation class that asks me to improve upon the plan for redevelopment of Union Square in Somerville, MA. Union Square is receiving a light rail station and needs a little face lift. Unfortunately for the city of Somerville that means as of now a copy/paste solution of the successful Davis Square a couple miles away. Davis is chalk full of restaurants, bars, and has great transit, but the streets tear it up like some sort of perverse inverted pretzel:
This six or seven way intersection is the pride of Somerville. It was revitalized in the 1980s when the red line T subway was extended from Harvard Square. To be fair, it does look pretty good from certain angles, especially when you have ice cream.
I'm determined to make Union Square a better story than Davis Square. It's my first opportunity to try out my software, and so far my software hasn't done be much good. I was able to load all the streets I needed with some error in the intersections that I had to correct. After a hour or more of edits I got the Sketchup model into this primitive state:
If I were an inexperienced Sketchup user I'd already be out of luck. The white areas are the streets that I want to work on. Union Square is the top area and Inman Square is below. I want to pedestrianize Prospect Street which connects the two squares and will host the Green Line light rail station (about 1/3 of the way from Union Square down to Prospect Street, where the faint railroad track passes through.) Had I been a user trying to decide which streets I wanted to focus on, I wouldn't have known how to change the color of the of certain streets. That's because each road segment is actually a separate object that needs to be edited and recolored separately. I haven't been able to decide if I want to make all the streets a single object, for ease of editing by the user, or leave them as separate objects. The former is more intuitive for the user, but is more prone to error. If one segment of the unified streets were missing or deleted, it would make all the streets lose their "face" meaning the surface that holds the color.
Unfortunately, there will be many times were the users wants to edit the shape of the street, either because it didn't render correctly from the downloaded street data, or because they want to expand the street surface, as I did for Union Square on top. So, from this early vantage point, it appears that I need a few helpful tools for the user:
- A highlight road segment tour. The user simple clicks or rolls over the roads of interest and the tool highlights them a different color than the others. This only works if the roads are different segments, since a unified road would be the same color unless demarcation lines were drawn.
- An expand or contract road tool. I always knew I would need this, but now it's that much more obvious. The user should be able to draw a line around any piece of road to expand the road surface. This is standard behavior if the road segments aren't groups, but needs to be done programatically if they are.
No comments:
Post a Comment