Leap(Motion) Into ArcGIS

by: Christopher Bupp

Esri is hosting a 100 Lines or Less ArcGIS JavaScript Code Challenge … and while that is a mouthful to say, the important word is: “Challenge.” My response of course is: “Accepted.”

For the last few months I’ve been tinkering with a developer model of the Leap Motion device. So for my submission, I decided to put a couple awesome things together.

I experimented with several gestures to interact with the map, but I settled with the following:

  • Circle Gesture – Zoom to Extent
  • Tapping/Poking – Center the map
  • 1-2 finger swipe – Pan the map
  • 3 or more finger swipe – Zoom out
  • Pointing at the screen – display point location with latitude and longitude.

The latest versions of the Leap Motion JS API are pretty good at recognizing gestures. The tapping/poking seems to be the hardest one to recognize. The circle gesture and swiping are almost always recognized.

The current version of the Leap Motion JS API doesn’t recognize a skeleton. So fingers tend to get merged and disappear from view. I’ve heard that the next versions of the SDK will be adding this functionality.

Something that the Leap Motion JS API doesn’t yet support is screen location. So, I used 27 lines (out of 100) to create a “very basic” calibration. The calibration assumes that the leap motion is below and parallel with the screen. A really cool consequence of my basic calibration is that interactions “off screen” still get translated to map points; you’re able to circle or poke off-screen, and the map will still go to the desired extent.

My code is hosted on GitHub. Here is the code break-down (out of 100 lines)

  • Setting up the map (4 lines)
  • Calibration (27 lines)
  • Detecting and drawing the finger tips with lat/lon (17 lines)
  • Detecting Gestures and interacting with the map (24 lines)
  • Creating output messages (10 lines)
  • Detecting leap motion support (2 lines)

Which means 16 lines were used for variable declaration and closing curly braces.

Since the competition ends March 28, the judges will likely not have a Leap Motion by then. I’ve created a demo video of my code in action.



If you happen to have a Leap Motion, you can download my code from GitHub and run it by simply opening /LeapIntoArcGIS/index.html in your browser (doesn’t support IE).

For anyone interested in entering the competition, simply:

  1. Fork the competition repository
  2. Make code changes
  3. Submit with a pull request.
Advertisements

Developer’s Corner: HTML5 Mapping Evolution

By: Danny Bradshaw

It’s upon us.  The re-invention of the web using a little known technology called HTML5.  Well maybe it’s not that obscure, but there’s no doubt it’s upon us.  As a GIS technology firm, the question is how can we leverage these changes in technology to continue to push the envelope for our customers.

Since the adoption of mobile devices has exploded, there is a major advantage in having an application available to both desktop and mobile device markets.  This market is split between several platforms, however, and it is costly to develop native applications for several operating systems.  HTML5 solves this by being a common platform that is accessible for every mobile device with a modern web browser and an internet connection.

To better understand how and why HTML5 adds value in our modern technology stack, we need to understand what this new toolbox offers.  In particular, HTML5 adds many new syntactic features.  These include the new <video>, <audio> and <canvas> elements, as well as better support for SVG content, and MathML for mathematical formulas.  We’re also seeing increasing support for some very exciting new APIs:

  • Offline Web Applications
  • Document Editing
  • Drag-and-Drop
  • Microdata
  • Web Storage
  • Geolocation
  • File Writing
  • Web Sockets

Wow, we’ve only just begun talking about HTML5 capabilities and we’re already describing a GIS system.  Georeferenced videos, added to a sewer or gas network by dragging and dropping captured video files to be stored offline until you get back to the office.  Nice!

Not to mention the capabilities of the canvas.  This one should have all GIS professionals geeked out.  Why so?  Through the use of the canvas element, along with SVG graphics, we can comfortably render dynamic maps that have thousands or even millions of features with an excellent user experience.

Tiles Anyone?

One of the challenges of many of our customers is they have dynamically changing datasets that don’t fit well in a cached (tiled) workflow.  It’s no secret that cached tiles are the de-facto standard for delivering high performance web-content.  With raster mapping technologies, this is a crucial step otherwise the content (and the solutions built on that content) become unusable.  Unfortunately, with large vector datasets this process turns into a long running process that can delay the delivery of your content to those who need it.  Not to mention that moment of panic you’ll feel when you realize the tiles that you’ve been cranking on all week don’t have labels turned on for your waterways layer.

Not only is the HTML5 canvas a great mechanism for rendering thousands of dynamic vectors without even batting an eye, it’s also plugin-free, and more device agnostic than ever before.  For example, the other day I was browsing a dataset with half-a-million features on my iPad!  Not to mention making your data accessible to so many devices/users often justifies your investment in GIS in the first place or opens the possibility for crowdsourcing.

The Golden Trio

It’s not all fun and games however.  Leveraging the full capabilities of a HTML5 can’t be discussed without bringing along its trio, JavaScript and CSS(3).  Staying on the topic of the canvas, what separates this element from being, frankly, a very boring and inflexible element, is that the actual drawing and manipulation of this simple API is done through JavaScript.  This makes it possible to do a lot beyond simple drawings.  Fortunately, new JavaScript libraries and frameworks that ease development, or use optimized algorithms are freely available to the community and support the building of otherwise complex functionality.

It is also arguable that there is no goal in web design more satisfying than getting a beautiful and intuitive design to look exactly the same in every [currently] used browser.  Unfortunately, that goal is generally agreed to be almost impossible to attain (when speaking from HTML development). This is one of the clear advantages of plug-in based deployments (such as Adobe Flash or Microsoft Silverlight).    Some have even gone on record that perfect, cross browser compatibility is not necessary.

While I agree that creating a consistent experience for every user in every browser (putting aside mobile platforms for the moment) is never going to happen for every project, but I also believe that a near-exact cross-browser experience is attainable in many cases.  The continued adoption of consistent CSS in popular browsers has opened the doors to consistent experiences across each device.

You Chose, Wisely

In the end, your choice should ultimately be guided by your data and the goals of your delivery.  However, as HTML5 adoption continues to gain traction, big data (read GIS) applications will finally be able to deliver a new level of user experience.

Esri Developer Summit: Day 3

Dan Levine

So Esri kicked off Wednesday announcing the winners of the Developer Challenges.  Frank Roberts won the Developer Challenge with what looks to be something like the Tri-View Tool that we have been deploying for a couple of years. Not sure about the details, but it would be worth looking at to see if we can leverage each other’s work. Some of you may know Frank; we have interviewed him a couple of times trying to figure out how to make a fit within GISi. Congratulations to Frank.

Next was the Keynote. Apparently a last minute substitution by the Gartner Group sent a solid number 2. Michael King, Research Director, Gartner, spoke on The Future direction of Mobile Application Development.  He had many different stats and charts talking about how the mobile industry is incredibly dynamic now and how that impacts us as developers and solution providers. A couple of the interesting stats:

  • In the next few years 70% of all interaction will be through our cell phones
  • Mobile is a Trillion dollar business.
  • Industry is VERY fragmented and don’t see a consolidation for a least of couple of years if it ever happens, largely driven by how personal the use and experience of mobile devices are.

Above and beyond the statistics and observations, Michael presented that he believes that the successful solutions will be the ones that most effectively harness the ability to be context aware and have the most elegant interfaces. Specifically around context aware, not only is he referring to where you are (GPS), what you are doing (calendar), what you are supposed to be doing (reminding you that your anniversary is tomorrow while you drive by the florist that you bought flowers from last year), but tying this all to business and personal data systems to the point where the mobile device is keeping track of more information about you than you possibly can remember at any one time. Couple that with an interface that adjusts to how you use the phone and learns what your preferences are over time.  For instance, for me that might mean that when I travel I always look for a CrossFit gym local to where I am staying. Well instead of me going to Google on my phone and stumbling through entering in “CrossFIt XXXXXX” for wherever I am, it would recognize that I am about to travel and just performs the search and gives me a list of results in the format that I typically look for: contact information, directions, and schedule. Within this theme of contextual awareness he talked a little about Augmented Reality and how the industry is still trying to figure out what we can do with this, how we implement it, and that we have to wait a bit for the hardware technology to progress to make this really work well. An example he gave was a crew in a manhole looking at a 100 year old valve. The only guy in the city that knows how to maintain that valve is back in the office but can share the camera screen from the guy in the field and do live annotation to walk the crew through what to do and not to do.  This did tee up the presentation that Pat did later in the day well, and packed the room.

I am still somewhat surprised that the Mobile sessions, and there are a bunch of them, aren’t the ones that are packed. Seems like the server sessions are still the most popular.

Steve Mulberry

Check out the recorded plenary sessions here: http://www.esri.com/events/devsummit/videos-and-photos/index.html

Great keynote speaker form Gartner; He discussed the many facets of mobile computing and the trends and predictions for the future. One thing that stood out was the amount of mobile devices projected to be used in the future will by far outnumber the laptops. So planning accordingly with respects to UI/Application development is a key to succeeding in this market space. The speaker noted that mobile development should not be a sideline event but imbedded in application development strategies and procedures. We keep hearing the same ole adage about making it simple and easy to use. But we GIS geeks need to think outside the laptop when it comes to mobile development. That’s where you the designers come in.

I sat through several sessions dealing with performance, scalability testing and architecture scaling. The common theme always lead back to making sure your map document is optimized and ready for web deployment. Here are some tools that help this process:

  • PerfHeat – http://arcscripts.esri.com/details.asp?dbid=16880. This tool produces a grid showing color coded rendering time ranges across the map extent. Display rendering times are generated for each map scale, presenting a spatial overview of display processing loads.

All these tools along with additional capacity planning and performance benchmarking can be found in the report. http://resources.arcgis.com/gallery/file/enterprise-gis/details?entryID=6367F821-1422-2418-886F-FCC43C8C8E22

Esri unveiled a new GIS Testing Tool that incorporates the above tools and methodologies in an all-in-one tool. Currently this tool is only available through professional services, but it was suggested that once final it may be made available for download.

Patrick Barnhart

The two biggest things that happened today, at least from my point of view, were successfully surviving my presentation on Augmented Reality and having the GISi dodgeball team (named Gone in 30 Seconds in honor of last year) exceed expectations.  The presentation went well; if you’d like to see the on-screen part of it, check out http://prezi.com/iy3lglcdn6xi/augmented-reality-using-arcgis-and-layar/.  Prezi saved the day on this one; it made things a lot more fun to prepare and present than if I had to do it using standard slides.  Gone in 30 Seconds got a bye in the first round, emerged triumphant in the second and then were defeated by the team that went on to win.

As for the stuff I’m really here for, which is to learn as much about developing web applications using Esri products as possible, it was also a success.  I attended a session entitled ‘Advanced Development with ArcGIS API for JavaScript’ which really should have been called ‘Intro to Mobile Development using the JavaScript API plus some HTML 5 and a touch of CSS3’.  So, it wasn’t what I was expecting but it still turned out to be the most interesting session I attended today.

There are APIs other than JavaScript that are designed for mobile development but they’re device specific, which is kind of a turn off for me.  If I’m putting in the time to write a phone app, I want it to run on iPhones, iPads, Androids, Blackberrys, you name it, and if it’ll run on the desktop too then glory hallelujah.  Write once run anywhere is what I’m after and while it seems that the world is not 100% ready for that ,the JavaScript API gets you closer than anything else.  Other than straight html of course, but that’s just too limiting.  The morning’s keynote session talked about the “do’s and don’ts of mobile development, and if you’re just using html, you’ll end up with a bunch of don’ts (clunky interfaces that are a pain to use).

To make a really sweet phone app with a native look and feel without redoing the code using a separate API for each device, you need to use a framework for the front end.  Something like JQuery Touch, DojoX Mobile or Sencha Touch provides the user with nice big buttons and the fat-finger pans and zooms that everyone is used to.  I do a lot of ExtJS development so it would have been nice to see Sencha in action, but JQuery Touch is cool too and that’s what most of the demos were.  These apps won’t work for the desktop but that was pie-in-the-sky anyway; the platforms are just too different to use the same interface.

  • iOS (iPhones and iPads) – this was described as the best browser of the mobile devices with support for SVG overlays, geolocation, html 5, creating and editing vector graphics, etc.
  • Blackberry Torch – this one’s a little more limited in that zooming in/out using a pinch, isn’t supported and it’s a little slower, but it does handle most of the other capabilities.
  • Android – the Droid phones are more limited in certain things, especially since it doesn’t support SVG overlays.  Vector graphics are rendered as part of the canvas so you can’t select an individual feature and manipulate it, although you can create features and add them.  You also have to set a meta tag to disable gestures on the entire page so you can zoom in/out on a map object, but not the overall view.

So, back to what I want, which is the ability to run the same app on as many devices as possible; the way to go about it seems to be using something like Sencha Touch to build the interface and then hook the events and listeners to JavaScript API, which calls to ArcGIS server.  Design the app for the most limited device, which surprisingly enough seems to be the Android, and go to town.

The JavaScript API works the same way as the rest of the Web API family – create a map object, create a layer object, create a feature object, add the feature to the layer, the layer to the map, etc.  There are a lot of built-ins (way more than OpenLayers), but it’s pretty straight forward stuff once you get the hang of it, so I’m not going into it much here.  But now at least I have a plan for building flexible mobile apps and know what tools I’d like to use when I get the time to make it happen.

The session also went into some pretty cool examples of using HTML 5 and CSS3, but I’m not getting caught up in that until it’s actually here.  Quick note: there’s a site called CanIUse.com that tells you which devices support the really cutting edge stuff.

And there was a bonus!  At the very end of the presentation they mentioned something called the Print REST API, which apparently takes the pain out of printing maps with vector overlays, external wms layers, text, etc.  Exactly the stuff I’ve been doing in the open source world for the last couple of months.  It doesn’t help with my current project, but I’m sure I’ll get a shot at it sooner or later.

In a separate session on Python, I also got a glimpse of using ArcPy to support template driven printing to PDFs, which is another of my current tasks (also using open source technology).  So again, I can’t really use it yet, but I foresee great possibilities and hope to learn more about Python tomorrow.

Danny Bradshaw

Day 3 kicked off with an intriguing discussion with Michael King from Gartner Research concerning the pervasiveness and trends in mobile computing over the next few years.  Although nobody has the magic 8-ball (especially in the ebb and flow of the mobile tech industry), he threw out some interesting stats:

  • 214,000,000 tablet devices in the next few years
  • 80% market penetration for smart phones in developed countries in the next few years
  • 2013 – Mobile phones will overtake PCs for internet access.
  • 2014 – 30% of users will use augmented reality with their mobile experience

Some other interesting sessions came from the Esri Prototype Labs and Esri Production Teams (i.e.  those responsible for making sure they hit the deadlines).  While I could write a book on cool stuff, I was particularly interested in an unconventional dynamic physics symbol, in which the bigger symbols would “bully” the smaller symbols and take their place on the map.  The prototype team also demonstrated an interesting augmented reality app that used a sheet of paper with a specific “marker” that was replaced with an interactive map while video conferencing… think green screen.

The development teams/managers talked about the Esri internal development process.  I was interested to see their strategies, which closely follows the Agile (Scrum) development process.  ESRI loves Scrum and was evangelizing that development process.  I’ll be honest, I was bored to tears as the discussion turned to their extensive… extensive QA processes, but be happy to know they’re thorough.  Some interesting stats out of that session:

  • 200 unique developers checking in code daily
  • 95,000 source code files for ArcGIS Desktop, which takes 5 hours to compile (daily)
  • AGS Desktop 9.0 = 6.9 million lines of code;  AGS Desktop 10.0 = 15.97 million lines of code

Melinda Frost

Since I am all about mobile I am going to write this up on my iPhone! Of course it will be shorter because I did have to go to walk-in clinic for a sinus infection. Everyone here is super nice.

Anyway- back to business. Tuesday night at the meet the teams night, I ran into two of the developers for the 10.1 mobile SDK. So, of course, I drilled them about the problem I am having with the WPF map control ‘flickering’. People want it to behave like TomTom or Garmin.  They told me that the 10.1 SDK for mobile will be significantly different. All the API will be pulling from a new core SDK. And they claim it will be WAY better than TomTom in that regard.  I said ‘Great but I need that NOW’. I did leave my contact info with them so I can be in on the holistic testing for this. Wednesday I ‘tackled’ Martin and Jay- the head guys for the mobile SDK dev team. Again same answer.  After I show them the best work-around I have come up with and I start to see some hope (breaking down) from them. They plan to take my code back and look into if that is something they can do sooner. Fingers crossed!

Other conference related info picked up is that if you have developed for Silverlight web app and/or WPF apps, then you are all ready to build a Windows 7 phone app. Same xaml and C# or VB.NET in back end.  Good news for all you Silverlight and WPF developers.

Tommy Bramble

Day 3 started with the conference Keynote Speaker, Michael King, from Gartner Research.  He talked about the past and future trends in mobile technology and how our lives will be impacted as the technology evolves.  Context-aware computing will become the norm where our smart devices, and the services that power them, will know more about us then we do our self.  The smart devices will become even more powerful and ‘aware’ through sensor driven data capture like facial recognition, better speech recognition, enhanced audio and video sensors, and other advanced sensors that require less direct user input to interact with the device.  Mr. King also covered some do’s and do not’s of mobile application development and commented on how augmented reality will become a much more powerful tool as it evolves.  We can expect to start seeing more ‘real world’ applications where augmented reality apps will assist people with work and other things in life instead of just being the ‘cool’ toy.

My first session of the day was ‘Advanced Development with the ArcGIS JavaScript API’.  This session was almost entirely focused on mobile development with the JS API, although the session was not listed as mobile.  The session probably would have attracted a larger audience had they actually listed the course under mobile.  The presenters demonstrated building mobile friendly web apps using jQuery Mobile, Dojox.Mobile, and Sencha Mobile; all using the JS API for the mapping functionality.  The presenters also briefly covered the HTML5 components that are available in most browsers that can also be leveraged in mobile web apps.  In my opinion, there wasn’t much ‘advanced’ knowledge regarding the mobile development.  The demos were very basic examples of wiring up a mobile web app.  Maybe just the fact that it was ‘mobile’ was advanced.  I did have to leave the session 10 minutes early to prepare for my Tech Support session with the Esri techs, and I was told the presenters did demonstrate a really cool drag-and-drop feature of the web app, but you’ll have to hear about that from Ben who was available for the entire session.

Next up was the ‘Building Secure Applications’ session.  This session focused on securing your ArcGIS Server services and the web applications that consume them.  The presenters first reviewed the correct procedures for securing the AGS services using users and roles, and then reviewed how to use the admin security tokens to get access to the secure services.  The session also covered using proxies with your secure services and then taking the security to the next level by securing your application front-end (client).  The out-of-the-box ASP.NET membership provider was used as the examples for creating the AGS server user and roles and for the application security, although a custom membership provider can be used in its place.

I sat in on the ‘Intro to ArcGIS API for Windows Phone’ next.  This topic area was completely new to me, but I was able to walk away for this session with the basic principles of the Windows Phone development.  A point the presenters emphasized repeatedly was that developing for the windows phone was no different than developing Silverlight applications.  Most all the same tools and class libraries for building Silverlight apps are used for Windows Phone, with the exception of a few class libraries specific to the Windows Phone environment.  The presenters also demoed some of their existing Windows Phone applications, like ArcGIS for Windows Phone and the AtoB Navigation application.  The presenters also gave away a Windows Phone 7 at the end of the session to the person in the audience who could stump the crowd with a Silverlight/Windows Phone development question.

Next up was the most anticipated part of the day, the Dev Summit Party.  Esri had a nice setup of games and entertainment as usual with the highlight of the event being the Dodgeball Tournament.  GISi formed the team ‘Gone in 30 Seconds’.  Luckily, we did not live up to that name and actually won our first match-up in the second round (after a first round bye), but sadly were knocked out of the tournament in the third round.  I also took a shot at table tennis, but finished the night with a disappointing record of 1-4 in my match-ups.  After my last competitor destroyed me by a score of 21-8, with a few of my coworkers watching, I decided to retire from table tennis and call it a night.  All and all another great day at the conference.

Ben Taylor

I sat in on another Javascript API session. There is some pretty slick drag-and-drop functionality coming down the pipeline. The presenter showcased a file api by dragging an image directly from his file system and dropping it onto the map within the browser.  I thought that was pretty cool until he dragged a csv file to his browser and the points along with the associated attribute data within the csv file appeared on his map. He also was able to add additional services by just dragging in the link of a rest endpoint from another browser and dropping it on the map. The only caveat at this point is they’ve only gotten the functionality working in FireFox and Chrome. They’re still working on getting this viable in IE9.

In addition they demoed a print tool for Javascript API that will probably be included in the next release. This tool is meant to be used until out-of-the-box exporting is made available in 10.1.

I also attended an advanced Flex session. This being my first dev summit, it turned out to be quite a treat to hear Mansour Raad present. He gave a lively presentation on how to best utilize the MVC pattern to develop Flex applications, so that they can easily be adjusted to fit web and mobile platforms.

Esri Developer Summit: Day 2

Danny Bradshaw

Day 2, like most ESRI conferences, was the official start of the conference and included the customary plenary session.  Some of the noteworthy points:

  • ArcExplorer Online being redesigned to get rid of the Microsoft-esque ribbon (and taking design cues from Apple, I’m still laughing at that one!)
  • Ability to author and publish ArcGIS Online from ArcGIS Desktop
  • ArcGIS Online portals coming soon so you can host and publish your own virtual AGS Online within your own firewall.
  • Application builders for both the Flex and Silverlight viewers
  • Better support for popups to include richer and more relevant information

These points are all well and good, but the really cool demo of the morning came when the team used a Microsoft Kinect camera to zoom, pan, and redline a simple Silverlight map.  Talk about a new take on the touted “smart tables” we’ve heard so much of over the last few years.  Who needs a table!  The demonstrator had to sync with the Kinect system using a “hands up” position (picture someone sticking a gun in your back and demanding your wallet), but after that, it was literally a GIS symphony as he waved his arms around to navigate and edit.

Then Ismael Chivite got on his soap-box for a few minutes.  I found myself chuckling when he declared that GIS professionals make ugly applications and that it’s time to get designers involved (agreed!).  He then talked about how the “black box” of ArcGIS Server is improving.  As a company, we’ve already heard the news about the changes being made to the data and architecture upcoming with the 10.1 release of ArcGIS Server… Ismael touted benchmarks such as the Identify functionality being 200% faster, dynamic map services currently processing 30-40% faster, 60 ms queries, etc.  Pretty impressive stuff on the surface.

As a final note, I attended both the AGS for iOS and AGS for Android sessions.  AGS for Android is in public beta (or perhaps just launched with final), but I have to say, between the two development platforms, I would choose Android in a heartbeat.  The differences between developing with a full-featured developing language like Java vs. what I saw with Objective-C was night and day (sorry if I offended any C aficionados – and forgive my ignorance).  While, in the long run, iOS apps might produce some smooth and sexy apps… You’ve got just that, a long run, because you’ll have to write twice as many lines of code than an identical app on the Android platform.  Of course, I did meet a fellow  who writes iOS apps with C# (MonoTouch)…

Dan Levine

Code for America Introduction

Code for American is a new nonprofit organization built to serve the needs of local governments across the country. The driver is that the economic downturn has impact local governments to provide services to their residents. Take this in context with the large IT aware growing youth community, and the re-developing attitude that we won’t wait for our government to solve our problems. The concept for Code for America is to bring in a set of young technicians (developers, designers, writers, etc.) looking to give back to the community and send them out to a set of cities with need. They interview city stakeholders, community organizations, and the public and identify and build applications to fit an unmet need with technology. Typically these are giving the public a way to find or report on information already in multiple disparate databases in a city.  Furthermore, these apps are designed to be portable to other cities (to the extent possible). One examples given was an application to connected a school bus tracking system to a mobile reporting application so parents could find out where the kids buses were during snow storms. Another was a tool that let the public adopt a fire hydrant; they were then responsible for shoveling out the snow so the fire department wouldn’t have to in the case of emergency. The web application let the adoptees report on status after snow storms and the fire department always had real time awareness of availability. This program is just getting started with the first set of 20 technologists but is already proving successful. Esri is very interested in integrating these efforts into is Local Government Templates model for “canned” solutions.  So turn this around from a business perspective and what does this mean to us. I can see a couple of perspectives. First, this group is out there building solutions for free and giving them away to our customer base. Hmmm, does that shrink our market? Or is this making more and more people aware of IT and GIS solutions and effectively help our cause. On the other hand, we are all interested in more effective government and public involvement and this seems to be enabling this well.

Manseur Raad, Kinect in Flex

Well Manseur must have got his feathers ruffled during the plenary when Art Hadaad showed a Silverlight app and Kinect because this talk was supposed to be about Augmented Reality. Instead Manseur decided to show the flex version of what Art showed. Esri technology competition? You tell me.  Any Manseur walked through the available tools and how to implement a solution that connects flex based map applications with Kinect. Well he didn’t disappoint. Using Adobe Air and Open Source connectors from TUOI.org he walked through the code and demonstrated how to build a simple application controllable through the Kinect sensor.  Really cool stuff and my mind is full of ideas of how this might be useful.  Sporting his Flash Gordon T-shirt Manseur had the crowd on the edge of their seats even getting collective Amens from the audience – a strange and funny cultural event. Manseur will be making the code available, if you follow his blog you will see it shortly. http://thunderheadxpler.blogspot.com/

Choosing a Mobile Deployment Platform

My first take away from this session was that I was stunned at how few people were actually in there.  This was held in the largest room but was attended by only about 50 people. Is no one else getting the push to develop Mobile applications? Perhaps not or maybe this is still such a developing technology that people are still shying away.  Anyway this session was all about pros and cons of deploying a web application that works on any mobile device developing and deploying on a device specific applications.  Some of the pros/cons for a web application are that it is mostly a single development and deployment with some modification for each platform, you have total control over deploying and updating the application, limited access to device capabilities (camera, compass, gps, etc). While the device specific solution offers better performance and function, usability – designed specifically for the device, direct access to device capabilities, market penetration – app stores, easier to monetize. The downside is that you have to build multiple solutions for each platform – if you need that, which drives up development and maintenance cost, you typically have to go through some gatekeeper to make your app available.  They did show the Adobe Air option where you can build in one environment and deploy on and Android and an Apple device.  They also talked about a couple of other emerging technologies. JavaScript compact build and JQuery mobile and PhoneGap were two prominent ones.  Mentioned the tool Protofluid, which works with Firebug to test and troubleshoot phone behaviors on your desktop. The remainder of the session was about each of the mobile device specific development platforms and the pros and cons of those and they took an informal survey on who was going to deploy on which of these – basically asked us to scream for each one and they measured noise. Results http://stlouis.esri.com/apps/dsmobile. Not sure this really shows any differentiation. I got the distinct impression the presenter was touting the new JavaScript based solutions – but it felt like a personal preference as opposed to a true recommendation.

Ben Taylor

Out of the box functionality for exporting maps coming 10.1.  I know there is the ability to export directly to pdf, I’m not sure yet what other file types will be supported. Custom symbolization of individual service layers will also be supported. No need to have to modify the mxd/msd and republish or create a custom solution if you want to change a service layer’s symbology.

I took in a session on .NET/Java Add-ins for Desktop. The coding of add-ins is a bit simpler, no managed com is required.  The add-ins are typically easier share and deploy. You can save your add-ins to a common directory and have your users install them from there. You also have the ability to digitally sign the add-ins to take care of any security woes.

A few positive changes to the Javascript API 2.2 release. The base class for the info window is now exposed. So you can extend and customize your own info windows much easier. There are a few much needed map events added to the API. In particular, an “on update start” and “on update end” event is now wired into the map. So you no longer have to listen to each layer’s event to determine what state your map is in. On the editing front, a new client-side method is exposed to check for self-intersecting polygons. You no longer have to waste calls to the server to simplify each edit to a polygon. Overall, there seems to be a lot of buzz about this new release.

Patrick Barnhart

The first day of my first trip to the ESRI Developer Summit was a good one.  This was actually the second day of the summit, the first day was taken up by layovers, delayed flights and general unhappiness but I arrived safe and, due to the weirdness of flying across a bunch of time zones, in time to get plenty of rest for the next day.

We began with the Plenary Session (which I had to look up, it means all members of all parties in attendance, if you’re curious) which was really the highlight of my day.  This session was a broad overview of all the new developer toys either recently added to ArcGIS 10 or that are on the way with 10.1.  There was an abundance of great stuff, to the point where I was getting somewhat overwhelmed by it all about three quarters of the way through, but looking back at the end of the day a couple of things stick out.

‘The internet as an operating system’ – so with the cloud and distributed computing I’m aware of the move towards having lightweight computers, basically keyboards and monitors, with the muscle being provided by a server living out in a farm somewhere but this is the first time I’ve heard it phrased in this way.  It also goes along with ESRI’s push towards hosted mapping solutions on ArcGIS.com, one of the speakers said right out that one of their goals is to have organizations use ArcGIS.com instead of having their own copy of ArcGIS Server, which is surprising to hear from someone in the business of selling software.   You can publish, edit and analyze map data online and they’re adding tons of widgets to make the whole process easy enough that pretty much anybody can do it.  I’m not going to try and go through all the functionality they’re adding but it feels like to me like they’re really committed to this approach and I’m a big fan.

Anybody remember having to actually write code?  The ESRI family of APIs (Mobile, Flex, Silverlight, Javascript, REST) seem to be doing all the work, a couple lines of code can do amazing things and a lot of the framework can be built in good ol’ wysiwyg editors using a mouse.  Once the bones are in place you still have to do some coding but this is a trend that’s been going on for a while and is still picking up speed.

10.1 is going to be awesome.  Yeah I know, they say that every time but really, an embedded web server, new and improved online printing capabilities, web accessible feature editing and symbology customization, the list goes on and on.  I won’t really be sold until I can do some of this stuff myself but the peek I got today fills me with warm fuzzies.  ArcGIS has always had power and tons of functionality but the words ‘heavy’ and ‘slow’ come up a lot and in addition to the new toys I saw some really, amazingly fast demos today.

Most of the other sessions I attended were about the Javascript and REST APIs but I’ll be going to the advanced version of these in the days to come and will talk about them then.  The coolest demo of the day award is a toss-up between drawing travel time/distance polygons on the fly (unbelievably fast) and using an XBOX Kinect for map navigation (it’s kind of rough at this point but a very interesting concept – once ESRI puts the sessions online be sure to check these out.

Tommy Bramble

Day 2 was kicked off with the Plenary Session.  This is basically the opening ceremony for the conference where the top Esri techs demonstrated their latest and greatest products and described the technological road ahead for the ArcGIS System.  A lot of information and cool technology was demonstrated in this all-morning session, but some of the key points I took away included;

  • ArcGIS products should now be considered wholly as a system, the ArcGIS System, where there is a focus on the cloud platform and services and data are not specific to any one component or device in the system.
  • ArcGIS Online (ArcGIS.com) is a powerful web tool for creating maps and sharing data and information.  ArcGIS online has been heavily integrated into most all components of the ArcGIS System, from ArcMap to the new Application Builder tools for flex and silverlight.  Esri is even implementing a new ‘portal’ feature that organizations can leverage to create a private ArcGIS Online space hosted by Esri or within the organization’s intranet.
  • ArcGIS Server 10.1 is fast!  The ArcGIS Server product manager demonstrated the new 10.1 server system by calculating drive times by mouse click, which took less than a second to render in the live demo.  Other wow factors included the new out-of-the-box high quality print tasks and feature service editing enhancements.
  • The new ArcGIS desktop runtime makes deploying custom desktop apps a lot easier.

Esri techs also really wowed the crowd by demonstrating some of their R&D work, a WPF-based map viewer that used Microsoft’s Xbox Kinect (and human movement) to control the map.  Not much utility for that now, but definitely was really cool, especially for an Xbox junkie like myself.

My first session of the day was ‘The road ahead for ArcGIS Server Developers’.  This was basically the detailed rundown on what changes will affect the AGS developers as they migrate to AGS 10.1.  Esri re-emphasized that developers discontinue their use of the WebADF, which is being deprecated, and move on to the WebAPI’s.  Esri is removing DCOM/AGS Local Connections in AGS 10.1, so if you are using local connections with the WebADF or making a local connection with ArcObjects your solutions will no longer work.  However, Esri states that if you are using the WebAPI’s you will be able to upgrade to 10.1 without anything breaking in your applications.  Optionally, you may want to update your applications to use the latest versions of the APIs, which will be updated to take advantage of any new features available in 10.1.  Some of the new features that will be added to AGS 10.1 services include;

  • Ability to add and remove layers to an existing map service using the new ‘workspace’ feature.  Basically, when you create a feature service you can specify a file-based directory where any data that resides in that directory can be dynamically added or removed from your feature service.
  • Ability to dynamically change layer symbology and transparency within your feature service.
  • Ability to change the geodatabase version being used (i.e. switch between versions to instantly see the different edits on your web map).
  • Ability to dynamically create new layers based on JSON markup (i.e. create a buffer result layer based on an existing feature layer and add that to your map).
  • The new high-quality print method that will be exposed through the updated WebAPIs.  The print task can also be extended using ArcPy and exposed as a geoprocessing service if you require more print options than will be exposed through the WebAPIs (i.e. print  resolution).

Also, AGS 10.1 will be native 64-bit runtime.  It will not run on 32-bit servers.

My second session of the day was ‘Using the ArcGIS Server REST API’.  This session was very good and presented well, but there wasn’t a wealth of new information here for the seasoned users and there was no discussion regarding any changes that could come with 10.1.  The session focused on current features available at AGS 10.0 and best practices.  Some new information I took away from this session included;

  • Using ETags and Cache-control headers with the REST requests/responses.
  • A review of the different service response formats.
  • The new operations for editing available at 10.0 that use HTTP POST.
  • A brief description of how to browse and consume the REST SOE’s, which are new to 10.0.

My third and final session of the day was ‘Extending ArcGIS Server Services using .NET’.  This session focused on using Server Object Extensions to extend/customize your AGS 10.0 map services.  Esri is highly recommending developers move to this design pattern now for their AGS custom solutions that are using ArcObjects in preparation for the major change that comes with AGS 10.1.  Again, with AGS 10.1 you will not be able to make local connections to AGS or use the fine-grained ArcObjects classes that you would create from your local connection.  Alternatively, you will have to build your custom ArcObjects solutions within the SOE framework at 10.1.  Some key information taken from this session includes;

  • SOE design pattern is available now at 10.0 and Esri recommends moving to this framework now if possible.
  • Research alternative solutions that may be available with 10.0 and 10.1 before developing your SOE.  There may be a new option available for solving your development issues (i.e. geoprocessing services or the new print tasks available at 10.1).
  • SOE’s described as fast, pluggable, and functional.
  • Ability to create SOAP or REST endpoints from your SOE, although Esri recommends REST due to its lightweight nature (and they only demo’d the REST solutions).
  • You must register your SOE to your AGS and then enable it for your map service through the ArcGIS Server Manager.  The SOE registration process is currently complicated so be sure to use the Resource Center and Help docs (including the sample solution for registering SOEs provided by Esri).
  • Also, make sure to take advantage of the Visual Studio SOE templates Esri has made available through the Resource Center.

In conclusion, it was a very good first full day of the summit with a ton of information to absorb.  Esri has done well so far and I’m looking forward to the REST of the conference.

Steve Mulberry

As always the Plenary Session showcased some exciting new technology and advancements with ArcGIS.

Some of the notable changes and improvements available now and coming in v10.1:

  • ArcGIS Server – Will become one component at v10.1, no more SOM/SOC which means no more managing of the 3 accounts (SOM, SOC, and Web Services). All communication is through HTTP/REST! J
  • ArcGIS Online – ArcGIS Explorer Online has a new face lift, which includes full support for tool tips or Popup windows, @ v10.1 support for hosted data/services as feature service or tiled (this means also online editing of the data you post), and its availability as a Portal you can run internally.
  • All the Web API’s are improved, look for the 2.2 beta releases on the resource.
  • New Application builder for Silverlight viewer.
  • New Flex Viewer configuration Builder…no more opening up the XML configuration file!
  • New ArcGIS Runtime, small foot print with simple copy paste deployment method. 64-bit support, new development architecture.

Overall the v10.1 is Server focused with faster native 64-bit support, dynamic legends, new print service, all HTTP/REST communication, dynamic rendering, and simple entry level into mapping through the spatial data services. New FGDB API, desktop SDE administration tools (No more command line J). Right click sharing/hosting from your ArcMap project.

Esri Developer Summit: Day 1

We have 7 folks attending the Esri Developer Summit this year. We are going to use this forum to post our daily observations as a group in an effort to keep our technical staff informed of what we discover throughout the week.

Many of us had an interesting day of travel getting in Monday. The winds in Palm Springs were significant (you will see comments about air sickness in some of the posts). High enough winds that the airport was closed several times throughout the day. Ben and I saw a tractor trailer blown over by the gusts while our car was being sandblasted on the road from Ontario to Palm Springs (the 10 in California lingo). We all finally made it in safely and nearly all of were able to attend some of the Monday sessions, either Preconference seminars or Demo Theatre.

Dan Levine

I attended 5 different sessions on Day 1, 4 of which were useful. A couple of highlights from some of these.  First, I went to a session on integrating the Esri JS API into the IBM stack including COGNOS, Maximum, Mashup Portal, WebSphere, etc. The concept is that if you could leverage the Framework and Standards that IBM uses you can easily plug and play Esri based capability into any of these systems. To accomplish this Esri simply wrapped a light version of the JS Viewer with the framework as an iwidget. They are making this available as Open Source through the resource center and as a compiled binary through the IBM portal. What you can do now is in the IBM dev environments; you simply drag and drop map widgets, table grid widgets, chart widgets etc. and wire them together; in minutes you can have the beginning of an enterprise class dashboard. Because you can get the Open Source code, the functionality is only limited to your development skills and imagination. I really like the way Esri continues to use industry standards to integrate with Enterprise class systems.  We have several potential clients where this technology may come into play soon.

I also sat in on the Best Practices for Dynamic Display talk.  This was by far and away the most cohesive and complete summary of the do’s and don’ts of creating an app that shows objects moving on top of the map.  I suspect Steve may have more details about the Map production to enable the dynamic display caching of the base map, but many of the same ideas are used when publishing a high performing web map. What I took away from this session was that no matter what your requirement for moving objects, try the Graphics Tracker method first, it should handle 90% of what you are trying to do. If that fails, then you have to go to the Custom Layers options and “this is not easy” according to Esri.  Another cool idea was if your glyph needed to change for some reason as it moved across the map, create a glyph group and then just reference the extent of the version of the glyph you need. This saves a bunch on the graphics processing and memory.  There is much more here and again may be quickly of use with several projects on the horizon.

Danny Bradshaw

Aside from almost losing my lunch for the first time on any flight, ever, I jumped into the Esri developer summit with the “Hitchhikers guide to Python.”  While the instruction itself wasn’t over the top whiz-bang, it’s nice to see Esri return to its roots with a full featured command-line geoprocessing library (ArcInfo Workstation anyone?) with Arcpy.  Over 800+ geoprocessing tools supported, along with an active open-source community = great production and automation.

I also had the chance to sit it on a high-level discussion about some of the new features with Add-Ins for Silverlight and Sharepoint.  Being a Flex developer, I can’t help but compare their add-in architecture to that of Flex widgets (ala, plug-and-play bits of code).  Cool, but the coolest part is the fact that you can write Add-ins once and deploy to both the Esri Silverlight Application Builder (beta Silverlight Viewer), and/or a Sharepoint installation with no fuss or hoops to jump through.  Thank you Esri.  If I know one thing about developing software, it’s that code re-usability rules the day!

Tommy Bramble

The first thing I noticed in the main room is the increase in Esri techs and help desks from the 2009 Dev Summit.  All the Esri reps were very open to questions and even tracked down other reps if they did not know the answer(s) to your questions.  Getting to speak directly to the techs over the course of the week will be a valuable resource for current project issues.  There is also a huge increase in the mobile demos, with booths dedicated to each of the mobile technologies (Android, iPhone, Windows7, and ArcPad), including devices available to play with.  I have a feeling mobile technology is going to be the major focus this year.  The Demo Theatres kicked off the sessions with Mobile, Silverlight, and Sharepoint development presentations.  The ArcGIS 10 Mobile install had some interesting out-of-the-box application development tools, but as usual, I’m always wondering if it is going to be as easy as they make it look in the ‘Hello World’ demos.

Melinda Frost

I was most intrigued by the session on Building Extensions for ArcGIS Viewer for MS Silverlight and ArcGIS Mapping for SharePoint. Working for the past 9 months in ArcGIS Mobile WPF and striving to implement a 100% pure MVVM framework, I think I might have found the piece I am conceptually missing while attending this session on the extensible kits for Silverlight Viewer and Sharepoint. The demo on the extensibility kits using MS ICommand and utilizing OnAttached base methods is the piece I am missing to making my WPF framework truly plug and play.  Since the only difference between WPF and Silverlight is the UI controls (desktop vs. web), I plan to download the beta Silverlight Viewer and rip it open to see how this piece works so I can ‘borrow’ for the WPF apps.

More to come from the rest of the team.  Stayed tuned….just saw a SUPER COOL Kinect Map app during the Tuesday Plenary, Wow!

Rapid mobile application development with Android OS

Mobile application development has quickly become one of the hottest areas of software development.   In a relatively short amount of time the mobile device has become a significant medium for web browsing and online applications, with Apple’s iPhone and Google’s Android OS-based devices leading the charge.  It’s possible that mobile web users may even surpass desktop computer web use in the near future as more and more people start using the devices for general web access [1].

The trend towards mobile application development is very exciting right now and I was happy to be given the opportunity to develop for a mobile platform recently.  The project objective was to prototype a current web mapping application for the Android OS-based mobile device.  With a limited budget of time to put towards the project I needed to build a mobile solution as fast as possible, and this includes starting from the ground up with no background experience in Android development.  Initial research into this development area revealed I had at least two paths I could take;   build a native Android OS application with Java development tools or build a mobile friendly web application for the device to consume. Read more of this post

Application Development for Mobile Web

As a recipient of the Spring 2010 GIS inc Research and Development award, I had the privilege to work on a solo project incorporating cutting edge technologies. During my brain storming process, I settled on probably the coolest segment of the development market at the moment: Mobile Applications.

My first goal setting out was to develop a cross-platform and location aware application for mobile devices. The mobile market is so small at the moment; I felt it would be wise to broaden the application to more than solely iPhone users or solely Android users. This was the greatest challenge.  The iPhone and Android SDKs are in very different languages and do not lend themselves to interpolarity. Read more of this post