Editor’s Note: The following is a summary of notes from GISinc’s developers at the Esri Developer Summit in Palm Springs. Be sure to stop by tomorrow for 3rd-day notes from the event.
In the “Web AppBuilder for ArcGIS: Building 3D Apps” session they showed us several great things, but my favorite was a visualization using a cluster of points loosely forming concentric polygons around a city (Beijing I think) with each point projecting what looked like a light saber from the surface bouncing (changing their height) to act as a music visualizer.
I also attended the “Latest Innovations from Esri’s Application Prototype Lab” session and was thoroughly impressed as they showed numerous amazing apps. My favorites included:
- A web based application for creating custom styles for your vector tile maps in ArcGIS Online
- A satellites map that not only shows all the known satellites orbiting the earth, but allows the user to project orbital paths
- A demo using Amazon’s Alexa Skill Kit to integrate with Esri 380 and ArcGIS Earth … “Alexa, Open Earth” … “Hello World!”
Today I attended the session called “Esri’s zLAS I/O Library and API for Lidar Data” presented by Clayton Crawford. The C++ library is used for reading and writing Esri optimized Las files. There are three primary components to the utility: Reader, Writer and Filter. The reader reads ZLas and it can give you a Las format memory buffer. The writer will write Las or ZLas based off of input. The filter object is used for queries and can pull out certain point classes and subsets.
ZLas files are a compressed version of the Las format, which then can be imported into a Las dataset for viewing in ArcGIS. The compressed ZLas file is normally half the size of the original Las file. An index file is embedded into zLas file that allows you to query and navigate through the point cloud efficiently and easily. For example, if you would like to only work with tree data and the las file had the different classifications embedded you can query out everything but the vegetation points within the point cloud. This would be a much more usable dataset to work with. If you would like to identify a specific point within the zLas, you can uncompress that point while the rest of the dataset remains compressed for efficient processing. In addition, you have complete control of memory allocation.
The utility allows you to project your point data into a different coordinate system within the zLas format. Although, the utility cannot read existing spatial reference information from the previous format. The tools have been in production for the last year and can be obtained from the Esri website for free. State and local governments could utilize the library and API to cut back on storage space and to have faster performance.
Drones are everywhere (well, not like Big Brother everywhere, but yeah…). According to the marketing and investment firm Kleiner Perkins Caufield & Press, in 2015 drone sales throughout the world hit 4.3 million – a 167% jump in sales over two years (1). So many business sectors are using drones to obtain high quality imagery and other air-to-ground data, that there’s become a need for streamlined services to process such data into vital information. In addition to processing data, the information needs to be scalable and work with other technologies (like GIS).
Enter Drone2Map for ArcGIS by Esri. This beta program is designed to take the legwork out of processing imagery data collected by drones, and create GIS-ready datasets (with a few bells and whistles for good measure of course). The big benefit of the Drone2Map application is how it stages the post-process data for other ArcGIS platforms. Post-process data includes a mosaic dataset of input imagery, a digital surface model and hillshade representation, and a point-cloud computed from the GPS device on the drone. What’s awesome though is since imagery collection took place, the point-cloud comes populated with RGB values. This makes it very easy to create an accurate 3D model of the area. What may be the best feature of Drone2Map is the speed performance of the software. The sample shown by Esri at the Dev Summit used data collected over a half square kilometer, and included 1200 images. From start to finish of processing the data, creating the various datasets, and applications (hosted tile package, web scene, and web map), it took merely 4 hours. This is very promising for those who have experienced the lengthy time delays that take place when having to process imagery from aerial devices in the past.
Being in beta, Esri is definitely asking for input on the product. Esri has also named some updates they plan on including once version 1 rolls out in June. Some of these updates include the ability to publish a web scene directly from Drone2Map, view the point cloud directly in Drone2Map, and also include Ground Control accuracy in a preprocess to improve the accuracy of the collected data.
- Internet Trends 2015. Kleiner Perkins Caufield & Press, 2015, http://www.kpcb.com/internet-trends, slide 82
Today at the Esri Developer Summit I was able to catch some great sessions about the Web Application Builder. The two in particular that I attended were the Web AppBuilder for ArcGIS: Customizing Themes and Web AppBuilder for ArcGIS: In-Depth Enterprise Deployment. These sessions really helped me to answer some of my questions about the use cases of and the deployment of the Web Application Builder. As I have deployed an application already in an enterprise setup, I was curious as to how themes could be leveraged at more than a simple branding level of customization and any tips and tricks for deploying into an enterprise environment. The themes are much more flexible than I originally thought, as the theme can also change your controller widget in order to completely modify the way widgets are handled, grouped and docked. The layout allows for a complete customization of the UI at the top level and panel themes give you control over the view in which widgets are presented to the users. For enterprise deployments, the node server running Web Application Builder can host configurable apps through the Portal, taking the place of the embedded version after it is removed with a configuration option shown to us. These apps, after being registered with the portal, could then use authentication to reach out to map services correctly even running from the node server. All along the way, the staff were throwing in little tips and helpful tricks such as keeping your map layout right to 0 when using custom positioning, using grunt tasks to keep your widgets and themes in your repo up to date and updating your certificate for the deployment to prevent the dreaded invalid SSL certificate message really helped make these sessions useful to not only beginners but developers already working with the Web Application Builder.
There’s no doubt that Esri does some very innovative things in the geospatial world, and this was on full display today in the talk entitled Latest Innovations from Esri’s Applications Prototype Lab.
Yesterday in the plenary session, they talked about how important the developer experience is to Esri, because they have to eat their own dog food, and actually develop custom applications with their own platforms, and if it’s hard for non-Esri developers to extend and use, then it’s also hard for Esri’s internal developers to extend and use.
This was evident in the session today, where a team of Esri’s top-notch developers demonstrated a mix of real world and prototype apps that they have created. This was a fast-paced session, with many apps shown across all of Esri’s platform, but here are some of the highlights:
- Vector Tiles Basemap Editor:
- A JS 4.0 demo that had thousands of points automatically redrawing as the filter criteria or the map extent changed.
- Severe weather and assets map
- Ocean current analysis
- Terrain Analysis
- Routing services in 3D
- ArcScene demo of an oil spill analysis. They could slice the data into horizontal and vertical planes of just about any shape and display it in 3D.
- A browser-based 3D flight simulator, with four viewports all in sync.
- Sub-marine cable maps
- Satellite maps showing satellites and space junk
- A very cool physics demo of fake balls rolling down the side of Mount Saint Helens.
- A demo using Amazon’s Alexa SDK to ask Alexa geographical questions where it would get the data from ArcGIS.
There were many more demonstrations as well. In addition to showing what Esri products can do, the apps also showed the focus on a great user experience and pushing the limits of what is possible in the browser and the desktop.
During the Keynote Crockford discussed how developers have a responsibility to write error free software and the difficulty in doing so. This statement was used to reinforce why we should only use the "good parts" of a language and avoid the "bad parts", despite being attracted to shiny new language features, personal biases or entitlement. He gave some insights into the good parts of ES6 including but not limited to proper tail call recursion, modules, let and const, and destructing. He also suggested some bad parts by saying he no longer uses new orobject.create to create objects, he always uses undefined rather than null to avoid ambiguity, and he uses recursion instead of loops for iteration.
Overall, it was a very interesting talk. In particular Crockford demonstrated his approach to object oriented programming without classes in JS! Here's an example:
What do I think of this pattern? Well, I've primarily been a Flex and .NET developer and so I have developed a strong appreciation for strong typing and this approach is very loosely typed. I feel strong typing helps me to avoid errors by catching the most egregious ones at compile time rather than at runtime. It also enables smarter tooling to help with refactoring your code base. These are some of the reasons I'm so interested in TypeScript. However, this object construction pattern would seem to be the polar opposite of what TypeScript is trying to provide. It's yet to be seen if I'll be a fan of this pattern, time (and experience) will tell.
Today’s highlights were split amongst three different topics: stream services, scene services, and Dojo TypeScript support. Stream services haven’t changed much with the latest release but the session with James Cardona was a very useful and well-delivered review of real-time GIS. Stream services are a type of service available with the GeoEvent extension and enable web-socket connections that push real-time data into a consuming application. The session reviewed how applications, including Web App Builder, can easily consume the service and customize the rendering of features using symbology, geometry filters, and definition expressions.
The 3D session was a deep-dive on the new format specification from Esri for streaming 3D data. The Indexed 3D Scene format (*.i3s) is the default format for ArcGIS Server Scene Services and Scene Packages are a way to transfer or share those services in a single file. Packages can be consumed in clients such as ArcGIS Pro or uploaded to ArcGIS Online. Additionally, packages will eventually enable offline support of 3D data. The full specification can be found at https://github.com/Esri/i3s-spec
Today I went into a session at the Esri Developer conference that was over using Xamarin for native cross platform mobile development and leveraging the ArcGIS Runtime. I went in to this talk skeptical of the notion that this was a solution to write code once and getting native performance and looks on Android, iOS, and Windows. The presentation by James Montemango was awesome! He demonstrated two ways of using Xamarin for truly native cross platform development.
The first app had a shared library consisting of the majority of the apps functionality and then there was a project for each platform to design the UI in the native form. XML for Android, Storyboards for iOS, and XAML for Windows. The second application was utilizing the Xamarin Forms product that allows you to write one UI and it just work for all platforms! The cool thing is the UI components for each platform are abstracted in such a way so that you can write XAML and on each device the appropriate UI control is put into the interface making the app follow the look and feel of the platform unlike a lot of other cross platform frameworks. All of the Native APIs of the device platforms are stubbed out in the Xamarin API and the demonstration definitely made me want to dive in and learn more.
Leveraging the ArcGIS Runtime with this with this powerful mobile framework could greatly reduce the complexity of maintaining awesome mapping applications with native performance and looks for each mobile platform and is definitely something to get excited about!