Blog

  • The End of GIS

    So yea, link bait title, sue me.  But I felt like it needed to be there.  But before I go into what that all means, I’m going to continue blogging over on Medium but with a new focus. The RSS feed, email blasts, and Twitter account will cease to produce original content.

    So why is there an end to anything?  I’ve been working toward this end for some time, the focus has been to move away from proprietary stacks and toward open source.  But there is a more significant theme to this.  Pivoting away from specialized software that is good at one thing, towards libraries to get things done.  Regardless I’m now working at a company that specializes in aggregating, analyzing and visualizing 3D data.  GIS has been useful at many things, but 3D was never one of it.

    The start of Spatially Adjusted happened over the course of a family vacation to my wife at the time’s in-laws in rural Texas.  I can’t recall exactly what made me start, but it was the intersection of Esri and Open Source.  This was pre-OSGeo, things in my life were still ArcGIS and mostly ArcIMS.  There was a ton about me being excited about EDN when that first arrived and unboxing ArcGIS 9.1.  But I was getting into open source.  In fact, the first time I blogged about PostGIS, Sean Gillies was quick to put me in my place.  Because of course I was a big Esri supporter, and all he saw was someone complaining about the quality of the software.

    My blog has a big story arc in it.  I go from “Esri blogger” to “Esri hater.”  Early on I used to get Esri passing me info to get the word out.  The reality of this was there was no Twitter or Facebook yet, so the only place people could be open was my comments on my blog posts.  But over the years I grew bitter about the software.  I grew tired of competing against Esri on contracts.  I became angry at software being half-baked and having to rewrite things every few years.  Look, there was a ton to like about the Esri Web ADF…  No wait, there wasn’t.  I’m sure people worked very hard on it, and they probably take it personally when I call it a POS but it was.  Engineers aren’t at fault for creating the Web ADF, Esri marketing is at fault for choosing to push it.

    I honestly could write pages on why I dislike things about Esri but I won’t.  I’m honestly over it.  I look back at ArcObjects, MapObjects, Web ADF and the rest and I feel like it was a different person.  I cannot picture myself doing that work anymore, and that’s OK, we all grow up and grow into what we enjoy.  That’s the big picture through this journey, being open to change.  The “threat” of Google Earth, the “threat” of open source, the “threat” of the ELA.  All irrelevant in the end.  The most prominent part of our professional lives is our ability to handle change.  Don’t assume anything, just look for ways to improve your workflows, provide better service toward others and be proud of your career.

    Throughout this journey, there have been a couple people who have affected great change in me.  Early on I can only think of two people; Howard Butler and Sean Gillies.  Both forced me to look at how I perceived open tools such as GDAL, UMN MapServer, and PostGIS.  Sean more than anyone called out my proprietary bullshit and while I didn’t agree with everything he said, it did open my eyes.  Later on, blogging brought me into contact with more developers.  People such as Bill Dollins, Dave Bouwman, and Brian Flood.  The work they were doing, even in the Esri ecosystem really helped me grow.  Even inside Esri, the creation of EDN and the DevSummit introduced me to Brian Goldin, Steve Pousty and Rob Elkins who basically made the first DevSummit my Woodstock.

    I also can’t stress enough how many people I’ve met over the years because of this blog.  Not a conference goes by where someone introduces themselves to me and tells me they follow me.  That means a ton as personal networks is what drives us all.  It has been those who introduce me to the fantastic stuff they are working on that inspires my passion.  But that is why I think my story arc went from “Esri blogger” to the intersection of 3D BIM and GIS.

    I really can’t think of anyone I’ve met over these years I don’t have a ton of respect for.  From Art Haddad pushing ArcGIS Server to be something more than a hacked together project to Jim Barry always making sure I could find the right documentation or developer help, I’ve always been lucky enough to find the right person to help out.  I really could go, but everyone should know what a great asset you are and still will be.

    So what now for me?  At Cityzenith I’m focused on building the platform that the real estate and AEC industries can use to make a better world.  This blog has been on so many different platforms over the years.  Best I can recall the progress went; Blogger -> MovableType -> WordPress -> Octopress -> WordPress -> Github Pages -> WordPress and rather than port it over to yet another platform I think it has earned the right to relax.  Just like PlanetGS.com got to retire in dignity, so will Spatially Adjusted.

    So follow me over at Medium where I’ll be talking about Elastic, Unity, Mapbox, Turf.js, Tippecanoe, Safe FME, 3D formats, AWS (including Lex, Lambda and Comprehend) and using Unity inside web browsers and mobile devices.  Should be a blast!

    So I think I’ll just leave this here because it is how I feel.

    GIS has been won!
  • 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.

  • 25 years of Geospatial

    I was just thinking about this on my plane flight back from Cityzenith HQ. Spring of 1993 I was first exposed to what I later learned was called GIS because some guy in Canada had the smarts to label what we were all learning to do. My exposure in college was mostly because pen and paper cartography I was learning didn’t work out for me, a computer geek since my Dad brought home a TI-99/4a and I discovered you could write applications.

    Of course, I bought my stupid pen set for some considerable amount of money (at least to a college student back then) and tried to draw the Puget Sound with any degree of accuracy. Seriously though, if you’ve ever seen me draw even a circle or a square you can pretty much guess how this “puget sound” looked like (I recall it looked like an eggplant crossed with a maple leaf). I recall sitting in the computer lab for the statistics class and seeing that on the Macintosh computer a copy of Aldus Freehand was there. I fired that up, drew a damn good looking Puget Sound and submitted it to the teacher. So I didn’t even get an F, he gave me an incomplete which was to be expected back then. Computers were for spreadsheets and reports, not cartography.

    `

    But while this was going on, I had zero idea that this problem had already been solved by many people, including those Canadians I mentioned earlier. But it took two more years for me to be connected to the mid-decade US census and my internship at the City of Mesa, AZ planning department until I was exposed to Arc/INFO 5 and ArcView 2 on Unix to see how the world of points, polylines and polygons existed. But there I was creating maps in Freehand and throwing SPSS tables on top of them. GIS as we know it today, but I had zero idea what the heck I was doing. Originally being an Economics major I had the concept of table + pie chart/line graph down pat. I just replaced the chart with a hand-drawn map.

    This week has been about sun angles, shadow analysis and time sliders in Unity, but it’s hard not to think back to a time where my struggle against drawing a map by hand introduced me to computer maps and eventually a career for basically 25 years. I can see an alternate universe where 1993 James sucked it up, worked hard to draw the water body by hand and became a city planner in some small midwestern city. Thank god that didn’t happen, and I was able to grow from Arc/INFO -> ArcView -> PC ArcInfo -> ArcInfo Workstation -> ArcGIS Desktop -> FME Desktop -> uDIG -> QGIS and then on to the multitude of open source libraries I use in my day to day workflows.

    While that is a fun path to think of, I get excited to my next 25 years in spatial. Working with Unity, OSM, Elastic and AWS Lambda I can see how what we do has such a great exciting future ahead of us. The world loves what we do, and we’re lucky enough to be able to do it every day. Don’t let anyone make you feel bad for using software or products because it’s not “hipster” or “open.” If you’re pushing the bar forward, that’s good enough.

  • The Matrix of Spatial Data

    I was thinking this morning about how much of my professional life has been about vector data. From the moment I started using Macromedia Freehand in college in the early 90s (before I had heard about GIS) to make maps to the 3D work, I’m doing with Unity and Cityzenith I’ve used vector data. I wasn’t genuinely introduced to raster data until I started using ArcInfo 5 at my first internship and working with grids and even then it was still about coverages and typing “build” or “clean” again and again. We did a bunch of raster analysis with Arc, but mostly it was done in Fortran by others (I never was able to pick up Fortran for some reason, probably best in the long run).

    It’s easy to see and use vectors in professional spatial work for sure. I always feel like Neo from the Matrix, I look at features in the world and mentally classify them as vectors:

    • Bird -> point
    • Electrical transmission line -> line
    • House -> polygon

    Heck or how you might think of a bird as a point (sighting), line (migratory pattern) or polygon (range). So damn nerdy and my wife fails to see the fun in any of this. Again, like Neo when he finally sees the world like the Matrix truly is we see things as the basic building blocks of vector data.

    As I’m flying to Chicago this morning and I stare out the window of the airplane, I can’t help but think of rasters though. Sort of like that hybrid background we throw on maps, the world beneath me is full of opportunities to create vectors. Plus I bet we could run some robust agriculture analysis (assuming I even knew what that was) to boot. The world is not full of 1s and 0s but full of rasters and vectors.

    As I’m a point, traveling a line on my way to a polygon, I can’t help but appreciate the spatial world that has been part of my life for over 20 years. I can’t help but think the next 20 is going to be amazing.

  • Plus Codes; Another Attempt at Addressing Places Without Street Addresses

    Yes everyone knows about What3Words.  It was an attempt to come up with an easy way to assign addresses for places where there are none.  In the end, a proprietary addressing system will never gain traction, and of course the inevitable eventually happened. My personal feeling is that What3Words never really got us beyond x/y numbering and the logic behind an addressing system was not there.  Enter Plus codes which comes at this problem from a different perspective.  There is a very detailed analysis of existing methods and why they choose to go this direction that I’ll leave it up to you to read.

    Probably the biggest reason to pay attention is that this open addressing system was developed by Google.  In fact, they are already implementing it in India as we speak which goes a very long way to making this happen.

    All these systems are built on the idea the world is a grid, and how deeply you drill down into that grid is your address so things need not be a single point, they can be an area which opens up many exciting ideas for addressing, especially outside of North America and Europe.  Check out the Github project to learn more.

  • Mapbox’s Map Madness

    So this time of year nothing says March more than March Madness (well maybe Easter when Easter is in March).  Lots of companies play off the theme, and it appears Mapbox is jumping on that sports bandwagon themselves with Map Madness.

    I’ve clicked the play button myself, and I’m waiting for the start.  I have no idea what the challenge will be, but I’m up for any of the prizes.  The Mapbox team is full of brilliant people so I can only assume the challenges will be more than just guess where a satellite photo was taken.

    Side note, my Sun Devils somehow made the tourney.  Forks up!

  • Elasticsearch 6.2.0 Released with WKT

    Good news for us Elastic users:

    Several geospatial systems use Well Known Text (WKT) as their preferred/only format for geospatial objects.  What if you wanted to use Elasticsearch for your geospatial data though?  Until 6.2, Elasticsearch has only provided the option of providing shapes in GeoJSON format.   To get your WKT data into Elasticsearch, you may have to go through a complicated export + conversion process.  No longer!  You can now index a shape in a WKT string directly to Elasticsearch.

    I’ve been using WKT quite a bit because it supports curves and now I can load WKT natively into Elasticsearch without converting it beforehand.  There is much here to think about for sure!

  • Cityzenith Smart World Professional IoT

    I know, I used the buzzword IoT in my title above.  Stay with me though!  We think about IoT as a link between a physical device (your Nest thermostat for example) and the digital world (your Nest app on your iPhone), but it is so much more.  While we have been working with many IoT providers such as Current by GE we’ve also fundamentally changed how our backend APIs work to embrace this messaging and communication platform.

    Using AWS IoT Services everything that happens in our backend API can alert our front end apps to their status.  This ties very nicely into our Unity front-end Smart World Professional application because it can tell you exactly what is happening to your data.  Uploading a detailed Revit model?  The conversion to glTF occurs in the background, but you know exactly where the process is and exactly what is going on.  Those throbber graphics web apps throw up while they wait for a response from the API are worthless.  Is the conversion process two thirds the way through or just 10%?  Makes a big difference don’t you think?

    Where this really starts to matter is our analytics engine, Mapalyze.  If I’m running a line of sight analysis for a project in downtown Chicago, there is a ton that is going on from the 3D models of all the buildings to trees, cars and the rest that can affect what you can see and can’t see.  Or detailed climate analysis where there are so many variables from the sun, weather (wind, temperature, rain) and human impacts that these models can take a very long time to run.  By building the AWS IoT platform into our backend, we can provide updates on the status of any app, not just ours.  So if you want to call Smart World Professional Mapalyze from within Grasshopper or QGIS, you won’t get a black box.

    In the end what this means is Smart World Professional is “just another IoT device” that you will be able to bring into your own workflows.  Really how this is all supposed to work, isn’t it?  For those who want to get deeper on how we’re doing this, read up on MQTT, there is a standard under here that everyone can work with even if you’re not on the AWS platform.

  • Cityzenith Named in GovTech 100

    The GovTech 100 is an annual list compiled and published by Government Technology as a compendium of 100 companies focused on, making a difference in, and selling to state and local government agencies across the United States.  We were excited to find this month that GovTech has put Cityzenith on this list.

    There are a lot of spatial companies on that list which just shows how important this space is.  We’re getting ready to release our Smart World Professional tools later this quarter which are built on Unity and the Mapbox Unity SDK.  It’s been a crazy 6 months from being part of Dreamit to now being on the GovTech 100 and then on to Smart World Professional.

  • Thoughts on Cesium.js

    If 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.

    Why did Cityzenith choose 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.