For this year’s ESRI International User Conference we offered to compile new maps for the pocket agendas that are distributed to all attendees. This quickly mushroomed into a project that included the compilation of a number of additional maps for a mix of media. Print maps included 3.5” by 6” page maps showing multiple floor levels of the three buildings used for the conference. We then created A size (8.5” by 11”) versions of these, as well as maps at this size for two special events held during the conference. We also compiled a map of nearby restaurants offering discounts that was posted on the Web in PDF format so it could be downloaded and printed.We then began work on a Web map application that allowed users to find rooms and route between them. This was mashed up onto the world topographic map that is available on ArcGIS Online. The Web map application included scale ranges from ~1:18,000 to ~1:1,000, with interior building views at ~1:4,000, ~1:2,000 and ~1:1000 for each of the floor levels. Additionally, a 3D interior building model was created for the convention center, and an iPhone application for routing and room finding was developed in conjunction with our work.This rich set of maps in such diverse formats provided an excellent learning opportunity for us. In this presentation, we will share some of the lessons we learned about the data compilation, routing application development, Web map application creation, 3D building model construction, and more.
Spectacle, showy, extravagant, vaudevillian, exciting, awe-inspiring, excessive – an extravaganza!
The layers were also made available on arcgis.com and so were easily accessible on the iPhone via the ArcGIS application.
You may have seen the app developed for the 2008 UC. Impressive functionality, but not very usable or beautiful. We wanted to create something that was both usable and beautiful.
We laid out the functionality for our application as follows:
I’ll give a quick demo of the app, then explain a bit more how we made it.
Under the hood, the app consumes 8 map services, 1 for each floor of the UC, and 1 each for labels, topobasemap, basemap additions, and a minimal locator map. For the routing functionality, we built a GP service on top of a cartographic-quality 3d network dataset. The room-finding functionality was built into the client itself.
The old network, routed to the center of rooms
Here you can see a bit better what the network actually looks like. I connected every possible path between doors using nice curved paths. Our routing engine is unique in that it finds the optimal starting and end doors for a set of rooms, then routes between them. To create the network, we digitized hallway centerlines (or other better paths along hallways), then used the advanced editing tools in ArcGIS (endpoint arc and/or fillet) to add curves where appropriate. Curve radius was dependent on the available width of the hallway and other connected paths.
Input: Room IDsOutput: Best route between those rooms, including doorway optimization, route infoUses VBA in-memory network traversal layer hackAny failed route crashes the servicePython script to output RoomID file for reading by the app (impossible to send bad inputs to the service)OD Cost matrix to check network traversability (no routes will fail)
We wrote a python script to automate the network checking process. The script takes two inputs, a feature class (doors) and a network dataset. It then computes all possible routes between the input features (doors) along the specified network using an Origin Destination cost matrix and summary statistics. I can answer more questions about these details later if there’s interest. If any orphaned nodes (doors) are found, the script adds a “Valid_Node” field to indicate which nodes are disconnected. The user can then symbolize or select by this attribute to find and fix any problematic nodes.
Diverse Opportunities to Compile and Share Maps:Lessons Learned through the Esri User Conferenceblah, blah, blah…<br />Aileen Buckley, Alex Yule, Andrew Skinner, and Craig McCabe<br />Esri Mapping Center Team<br />
The UC 2010 Map Extravaganza!<br />Aileen Buckley, Alex Yule, Andrew Skinner, and Craig McCabe<br />Esri Mapping Center Team<br />
Outline<br />Print maps<br />Products<br />Pocket agenda maps<br />Large-format agenda maps<br />EdUC and Homeland Security Summit maps<br />Lunch map<br />Image map<br />(Hotel map)<br />(Hallway maps)<br />(Downtown San Diego map)<br />Cartographic data model for interior spaces<br />CAD to ArcGIS<br />Multiple floor levels<br />Functional space<br />Online maps<br />Products<br />Maps<br />Map services<br />Cached map service for each floor level<br />Integration with topo basemap<br />Application<br />Room and Route Finder<br />Room finding functionality (client-side)<br />Routing service<br />Rooms -> doors<br />Routes connecting all doors<br />Floor transitions<br />QC – error-sensitive GP task leads to a service crash<br />Bells and whistles – functionality for overview map, legend, scale indicators, email, etc…<br />3rd party iPhone app<br />Consumed our routing service<br />Future work<br />Link to conference agenda/personal scheduler<br />Enhanced network<br />Map of exhibitor space<br />Automated network QC<br />Time-sensitive<br />Adding amenities<br />Exterior space (downtown San Diego)<br />Mobile client app – fully functional<br />Mapping Center Team<br />
A plethora of maps…<br />Pocket agenda maps<br />Large-format agenda maps<br />Education UC and Homeland Security Summit maps<br />Lunch map<br />Image map*<br />Hotel map**<br />Hallway maps**<br />Downtown San Diego map*** in production** for 2011<br />Mapping Center Team<br />
Additional online maps…<br />Map services<br />Cached map service for each floor level<br />Integration with topo basemap service<br />Application<br />Room and Route Finder<br />Room finding functionality<br />Routing service<br />Bells and whistles<br />ArcGIS for iPhone (via ArcGIS.com)<br />Mapping Center Team<br />
3rd party iPhone app<br />Consumed our routing service<br />Replace with different graphic – from Mansour?<br />Mapping Center Team<br />
Our solution…<br />Replace with different graphic from Andrew<br />Gutter<br />
A closer look…<br />Numbers for persistent features/ events<br />Letters for temporary features/ events<br />Symbols explained in legend<br />(legend continued on secondpage)<br />No superflous detail<br />Inaccessible areas <br />Legible labels<br />Legible icons<br />
App flow<br />Rudimentary de-coupled, event-driven architecture, some model/controller/command elements<br />Classes<br />Route Command<br />A command class to build, issue and handle the results from our magical gp task<br />StopsManager<br />Parses the route segments into “stops” to display in the RouteNavigatorusing Floor/Building combinations<br />MapViewController<br />Listens for MapView events and responds by setting the map extent and active floor layer <br />DrawRouteCommand<br />Handles drawing the route segments on the proper floors, as well as route symbology (start, end floor transition points)<br />FindRoomCommand<br />Waits for a FindRoomEvent, then zooms the map to the room passed by event.data<br />FloorManager<br />Responds to FloorChangeEvents by setting the current floor and fading the overlay layer out and in to hide load delays<br />Components<br />FloorChooser<br />Legend<br />LocatorMap<br />RouteChooser<br />Where you input your desired route or room to find<br />RouteNavigator<br />Displays the route “stops”<br />