Shadow Analysis Using Mapbox, Unity and OpenStreetMap

We’ve been pushing along with our latest release of Smart World Professional, and we’ve got some elegant tools coming online that will showcase why we went the route we did.  One of the biggest requests from the AEC industry is Shadow/Solar analysis.  There are tons of tools that do this, but they can be expensive, hard to use and even hard to get data for.  That’s why I really like the Mapbox Unity SDK and its 3D buildings.

You can, of course, load your own buildings into Smart World Professional but this is a great way to see how your projects will impact the surrounding city out of the box with our tools.  The Unity SDK really shines with this kind of work.

Thoughts on Cesium.js

cesiumlogoIf you’ve ever seen Cityzenith before, you would know that the basic premise is a 3D Google Earth like world in the browser. The way we accomplish this is using a JavaScript library called Cesium. There is much to like about Cesium and if you’ve never checked it out I highly encourage you to do so. Not only is Cesium we’ll supported/developed, it has a great community around it and lots of great documentation. Cityzenith had been on Cesium for years and you’ll see our screenshots on the Cesium webpages as a use case. When our customers first see Cesium running in the browser they’re all very excited and impressed with how well it works, how good it looks, and we’ve built a business around it. But in August we decided to go another direction and move to Unity3D. I’ll write more about that move later but this is a post on what worked for us with Cesium, where we had problems and what you can expect if you use it. If people ask me about a 3D solution in the browser, I can still equivocally say that I would recommend Cesium.

The choice of Cesium predates me, so I was not involved with the decision. That said those who made the decision have explained why they went that way. Cesium was probably not the original choice but at the time in 2014/2015 it was the best solution of a “game engine” for our product. We did look at other engines such as Unreal but the 64-bit support and the ease of use in the browser, Cesium won out. In implementing Cesium what were we able to do?

  1. We were able to implement a cross platform 3D world in a browser. That’s not an insignificant accomplishment. Our Cesium team really did an amazing job of making Smart World feel like a regular desktop application even if it was in a browser. No extensions to load, Java or Flash to configure. In a modern browser it basically just worked (more on this though later).
  2. While normally a pain in the rear, the fast updates and quick support for new features on the Cesium project gave us access to new features regularly. We were able to continually update our support for better graphics, performance and features almost by just loading up a new version of Cesium. Of course, in reality it is not that easy but the feature improvements were regular and powerful.
  3. JavaScript is an accessible language. Yes, it has its problems but finding people to code in JavaScript is not difficult. Plus it made it easy to combine other JS libraries we needed into the application.
  4. Open source is very liberating on many levels. Not having to fight a licensing battle and focus on the product is a nice change from other development libraries and SDKs. Also having direct access to the developers. If you don’t follow Patrick Cozzi yet you should. Amazing work and they listen to feedback.
  5. glTF support is second to none. I’ll be talking about glTF soon as well and why we absolutely love it.

OK, so what didn’t work with Cesium? Why leave it?

There are really only two reasons we have left. Most of everything else we get with Unity we would either have with Cesium very soon or it’s being implemented today. But the two reasons have been killer for Smart World. I don’t think everyone runs into the same problem we have with their apps so this is more of a specific issue with what we are doing rather than a problem with Cesium.

  1. Cross browser support. Remember when I said that we had cross platform support? Well that really only works if you use Google Chrome. Other browser support is poor at best. Microsoft Edge? Yea not going to happen. Being an enterprise app, we don’t always have the latest and greatest browsers that our customers can use. It’s not an IE8 problem but Edge and Firefox support really killed it for us. It got so bad that we had to put up a modal dialog box that basically said you couldn’t use Smart World without Google Chrome. That’s just unacceptable to us and while we tried to work on solving this the reality of support in other browsers was not coming quick enough and I’m not sure it was a problem that Cityzenith could have solved throwing money at the problem.
  2. Performance in the browser. Chrome is many things and one of them is that it is a memory hog. Loading up cities in Chrome really would put a strain on our user’s computers. The browser is great for simpler 3D mapping but streaming gigabytes of data into a browser really tasked computers. We worked on a ton of LOD workarounds but the compromises to make the application work on a typical enterprise desktop or laptop really left a bad taste in our mouths.

Roadmap for Cityzenith

We want to provide the best 3D analytical tools and we’ll continue to do so. Combined with AWS Lambda and AWS IoT services, we’re making a huge leap in how people perform spatial analysis. Not only are we working on our own planning tools such as rooftop solar analysis, LEED-ND analysis and traffic analysis, we’re integrating Rhino Grasshopper plugin support, so anyone can use their existing workflows. As I said above, we’re moving our 3D engine to Unity. In fact we’ll be having a closed beta very soon for our customers to try it out. One of the biggest reasons we went with Unity was Mapbox’s Unity SDK. We are already a big user of Mapbox and thus moving to the SDK made a ton of sense. I’ll go more into this in another article.

 

BIM Database Long Tail

In the GIS world the database part of GIS files is the power. I would wager the average GIS Analyst spends more time editing, calculating, transforming the GIS database more than they do the editing of the points/lines/polygons. The first thing I did working with GIS files is open the table to see what I have (or don’t have) for data.

One of the key aspects to BIM is the database. In the hands of an Architect, the database takes a back seat but tools such as Revit make sure that everything that is placed has detailed information about it stored in a database. It isn’t Revit though, IFC, CityGML and other formats treat the database as an important part of a BIM model. But when we share BIM models, the focus is always on the exterior of the model and not the data behind it.

Aqua Tower, Chicago, IL inside Cityzenith Smart World

One thing I’ve focused on here at Cityzenith since I joined as the CTO is pulling out the power from BIM models and expose them to users. As someone who is used to complex GIS databases I’m amazed at how much great data is locked in these BIM formats unable to be used by planners, engineers and citizens. I talked last week about adding a command line to Cityzenith so that users can get inside datasets and getting access to BIM databases is no exception.

That’s why we’re going to expose BIM databases the same way we expose SQL Server, Esri ArcGIS and other database formats. When you drag and drop BIM models into Cityzenith that have databases attached them you will be prompted to transform them with our transformation engine. BIM has always been treated as a special format that is locked up and kept only in hands of special users. That’s going to change, we are going to break out BIM from its protected silo and expose the longest of long tails in the spatial world, the BIM database.

I’ve always said Spatial isn’t Special and we can also say BIM isn’t Special.

The Launch of Cityzenith

As I mentioned in my last post, Cityzenith launched last week in Chicago. Thanks to everyone who turned out to see us move out of beta and into a full blown data platform for BIM and GIS. We were lucky enough to have many special guests speaking including State of Illinois CIO Hardik Bhatt, City of Chicago Chief Data Officer Tom Schenk, John Kizior of AECOM, Tom Coleman of WSP-USA, and Gordon Feller of Meeting of the Minds. Michael Jansen, our CEO, lead the discussion and talked about the road to where we are today and how we’re going to change how things are done.

A warm thanks to attendees from Arup, HOK, HKS, CannonDesign, Foursquare, Perkins+Will, SOM, AECOM , Gensler, DeWalt, CallisonRTKL, WSP USA, BuiltWorlds, the University of Illinois at Chicago, the Illinois Institute of Technology, Argonne National Laboratory and many more who attended. The hard work has begun for us and we’re looking forward to helping companies connect with each other around the world.

If you’d like to give Cityzenith a spin free of change, sign up now. Let us know if you’d like to see a demo first. There is so much more to come, stay tuned!

The Command Line Revisited

I’ve talked repeatedly about GIS command line tools being powerful. During the launch last week of Cityzenith, I was describing our Asq query tool to the audience and described it as the command line of Cityzenith.

Presenting Cityzenith Smart World to the world…

Asq is simple, a query tool to search through our indexed data stores in Elastic. But is also much more, a way to manipulate what you see in your view. Using the GUI to add and work with files and layers is of course how must people will work with the product but being able to stack together commands to perform the same action is where the power is. Much like Automator on Mac OS X or similar scripting tools, the idea is to batch functions together in building blocks.

Back in the 90s I used AutoCAD for much of my data creation because it made it simple to model the built environment. Before the madness of AutoCAD 13, the DOS based approach of having a command line at the bottom of the window made its use so much better than having to navigate toolbars and menus. Windows 95 and Mac OS destroyed the command line tools to the point we have things like Ribbon Interfaces and stackable toolbars. Its so much at this point that I try and do most of my GIS processes in the command line using Python or Javascript.

I don’t want users of Cityzenith to feel constrained by buttons, dialogs and options. Start typing and autocomplete takes care of your next decision. In showing our development team how you perform a Definition Query on ArcGIS Desktop, they were speachless at how many right clicks, OKs and other UI madness one must complete before getting something as simple as [PARK_NAME] = “Grant”. I want to type:

SHOW -> FILE -> PARK -> WHERE -> PARK_NAME -> IS -> “Grant”

That’s not even including all the spatial query functions we can do.

We just launched so this is the beginning of command line City Information Modeling (CIM). Cityzenith can help manage the built environment but taking control of all the aggregated data is critical. Hence Asq being the command line of Cityzenith.

If you’re interested in signing up, we’ve got a page to do that.