Skip to end of metadata
Go to start of metadata

The following is just an email thread where Martyn was asking about options/pros&cons re: Flex.  --rviger


Android 2.2 has flash, which represents about 40% of all android devices at this point, but it is a good sign moving forward.  Skyfire on iOS (its also on android, i've tried it on my phone, meh) isn't a practical solution because it doesn't actually play flash, its host servers do some kind of back end flash conversion magic and send it to the device as video.  So I'm sure that wouldn't be smooth for rich internet applications.  HTML5 will be interesting, I'll stay tuned--but I don't think any kind of flash conversion will be useful for flash heavy apps like the Flex Viewer. 

Even mature linux OS's (Ubuntu) have trouble playing flash (personal experience).   I realize this is a little counterintuitive to my wanting to explore the ArcGIS API for flash, but it has sparked a useful discussion here.  My main reason for pushing forward is that I am bored with the slow, dull interface of ArcGIS Server .net web maps, and the flex API seems like one of the easiest ways to jump in and move forward.

With regards to theplugin debate... I don't see that as much of an issue.  I think flash is around to stay, even if the sole reason is youtube.  Either way, we've been doing the same thing for years at USGS publishing reports as PDF's.

Martyn J. Smith
US Geological Survey
425 Jordan Rd., Troy NY 12180

"Tim Mckinney" --12/09/2010 04:41:19 PM--Android has flash, iOS is flash ready - skyfire.  And html5 will convert flash, supposedly.  None of

Android has flash, iOS is flash ready - skyfire.  And html5 will convert flash, supposedly.  None of the services I've seen are optimized for mobile and are painful to use on a small device.

*From:*Martyn J Smith <>

There is no flash on android or iPhone, or iPad yet as far as I know. This is a big negative that has to be considered.

Martyn J. Smith
US Geological Survey
425 Jordan Rd., Troy NY 12180
From: David S McCulloch/WRD/USGS/DOI
To: Gregory Gunther/GD/USGS/DOI@USGS
Date: 12/09/2010 02:35 PM
Subject: Re: ArcGIS API for flex

Excellent discussion! Thanks Greg and Tim.

I have a philosophical question - and Greg touched on this in his last few sentences, but should we be looking at these "heavier" web clients for external customers? I, for example, don't run Flash on my browsers, and I've been told (have zero knowledge) that Mac users are discouraged from using Flash with Safari because of stability issues.Additionally according to USGS policy, if you have a Flash component or app, you have to provide an HTML alternative. That's a lot of extra work. I was at a presentation at the ESRI Conference last year on a mapper based on Flash. The presenter was somewhat mortified because someone in the crowd stood up with an iPhone and said he couldn't use it.

On the other hand, the Flash and Silverlight mappers look gorgeous, and have stellar performance.

Maybe it's not an issue???

David McCulloch

From: Gregory Gunther/GD/USGS/DOI
To: Martyn J Smith/WRD/USGS/DOI@USGS
Date: 12/09/2010 02:18 PM
Subject: Re: ArcGIS API for flex

Martyn, Tim,
Here are a couple of thoughts I had:

Related to your direct questions:
> Can I use the rest service thats already published on the server? or would it be better to create and publish a new tiled map service for the just the raster.
> - Is it possible to consume a single layer (raster depth to ground water) from an existing
> - If so, is there some reference regarding tile a raster layer for use with Flex API using ArcGIS server
The best way to think about AGS and web services is to publish them as "they would be used." What I mean by this is that if you have a basemap in you mxd, you would probably not publish it that way but rather as it would
be intended to be used. So, if you were "mashing up" that service with others, presumably with a basemap, you wouldn't want to include the basemap in your service. This is kind of a rudimentary example but it illustrates
the importance of evaluating how the service will be used when determining how it should be published. In addition, you can control visibility of layers within the map, using the layervisibility() funciton of the map
layer object. With regard to raster publishing to AGS, I think you will want to look into the image server extension, that might provide you with greater functionality and flexibility.

>In general terms (taking into account speed), what is the best consume existing data using Flex API
> - convert to XML?
> -publish individual data layers as services on existing ArcGIS server
> -tile data (both raster and vector) using ArcGIS server
The nice thing about all of these APIs (Flex, JS) is that a number of representations (GeoRSS, XML, AGS, GeoJSON) that can be used pretty easily. In general, Flex works nice with xml and the JSAPI works better with JSON. With Flex, there is an optimized representation/format called AMF that is the fastest but really only used in the FLEX world. Secondly, caching data is always a best practice if you can do it (fuse layers) but if it is simple operational data such as a few points or simply polys, dynamic is acceptable.

With regard to Tim's comments:
1. I would fully concur. With the newly supported Flex Viewer, you can customize it to the nth degree, use it out of the box with a few configs, whichever you prefer. It comes with alot of built in functionality that you can hide or use, you can make it look however you want, it can "morph" based on custom configs, and is build on a very nice MVC/Event driven model that is pretty slick. If you have a team, that might not be the way to go but if you are a "one-man-band" like many of us, it might be a good place to start.
2. Upgrade if you can to 10 sp1. You won't be disappointed and it offers so much more functionality (time awareness, related table queries) that it s worth it.
3. Web Mercator is now the default standard coordinate system for web mapping apps, like it or not.
4. There will always be change so your app design process and method needs to be able to change/upgrade/adapt quickly.
5. Have a look at the JS API. It integrates much easier with alot of "other" platforms (OpenStreetMap, GMaps, DOJO. JQuery) which allows alot more flexibility. In my opinion, while I still like Flex, Flex 4 is
bloated and annoying. One downside is there is not a supported out of the box viewer for the JSAPI. There was a beta version for 1.x but it doesn't seem to be getting much traction.
Gregory L. Gunther
IT Specialist/Geospatial Web

From: Martyn J Smith/WRD/USGS/DOI
Cc: GS Help GIS
Date: 12/09/2010 10:58 AM
Subject: Re: ArcGIS API for flex
Thanks a lot for your suggestions Tim. I am leaning towards building a more customized application using the API, but I am open to using the viewer. My understanding from messing around with the API is that its quite a bit different than customizing the viewer. With the API, you are customizing just XML code then compling the project and with the viewer you are customizing the pre-compiled application. I hope I am correct on this? I am really wary of upgrading our ArcGIS server to 10, I just remember how ridiculously tediousl it was to upgrade (migrate) from server 9.2 to 9.3.

We have about 6 running ArcGIS server applications hosted in our office for cooperator projects and I had to completely overhaul all of the applications after the upgrade, including the painful process of completely redoing all of the custom field definitions (things like hyperlinks to NWIS in a identity result window). For the life of my I cannot understand why there isn't a way to save an ArcGIS server application setup from the ArcGIS server manager GUI. I will never understand how ESRI seems to be so isolated from the common user.

In the meantime I did figure out how to use individual layers from an existing REST service using the flex API and I have made some progress with that. Most of the hours I spent were on working out the extent and projection issues that come with matching local data to the ArcGIS online service basemap data. I ended up creating a duplicate MXD of the existing 9.3 service in which I defined the MXD projection to WGS 1984 Web Mercator and that seemed to work better than anything else I tried, although ESRI says it is possible to use your local projection with ArcGIS online basemap data.
I'm finding it really difficult to search for and find good basic information on how to do pretty much anything in the flex world. The ESRI flex resource center is horribly designed and the forums (where I usually turn to for helpful info) don't  contain too much information yet on the the new API (2.1). A lof of the information there is for customizing the flex viewer.
I also spent several hours figuring out the tiling schemes. Apparently arcgis online services are being transitioned from WGS 1984 to WGS 1984 web mercator and using the Google/Bing tiling schemes instead of their custom scheme. I was unable to find definitive information on this however. I did find an XML file to define the google tiling schemes and set up ArcGIS server to tile based on this on demand. This does seem to be working now. The MSD addition with 9.3.1 sounds like a good reason to upgrade and provides lots of enhancements.... as I said earlier though not quite sure I want to go through it?
As much as they have been touting the Flex API as the beginners way to jump into web 2.0 mapping---hmm.
If anyone else is tackling any of these issues please feel free to contact me.


Martyn J. Smith

From: Tim S McKinney/WRD/USGS/DOI
To: Martyn J Smith/WRD/USGS/DOI@USGS
Cc: GS Help GIS
Date: 12/09/2010 12:22 PM
Subject: Re: ArcGIS API for flex
Martyn -
I have not used the Flex API, but the concepts regarding ArcGIS web services are similar. I have used the ArcGIS Viewer for Flex. And I wondering if this might work well for you. If you require robust and unique custom applications, the Flex API may be a good choice. But, If all you want to do is serve some maps, identify attributes, maybe customize a few things, the Flex viewer is certainly the way to go.

 ArcGis Viewer for Flex is great for rich, focused web apps:
-ready-to-go out of the box
-easily configurable, no programming - edit .xml
-many custom widgets from the user community
View 2010 ESRI UC Flex viewer recordings:

Regarding your ArcGIS Server, there have be two version upgrades since 9.3.Version 10 sp1 is stable. It would be wise to migrate.
>1. Can I use the rest service thats already published on the server?
>or would it be better to create and publish a new tiled map service for the just the raster.
Yes, but I use one service per application. What is the extent of your data? What is the cell size? Starting at 9.3.1 services may be optimized with a new drawing engine (.msd). The .msd has been enhanced at 10.0 sp1. The drawing speed is pretty good, particularly when paired with ESRI basemaps. And if you change something, you don't have to recreate the cache. MSD's and caches are not mutually exclusive and there are numerous caching strategies.

View the ESRI UC tech workshop on caches, there have been numerous improvements
>2. In general terms (taking into account speed), what is the best consume existing data using Flex API
I have no experience with client speed. I think it depends on too many factors on the client side that are out of our control. Who's your audience? Scientists? Cooperators? The general community? Web browsers are ideal because nothing gets installed (except maybe flash, depending on your api) and you don't have to worry about what version of software is being used.
In general, the viewer for flex is great for simple custom web services. But, if you have a large project with unique requirements for a persistent web service, you may want to invest the time with the flex api. Optimizing
your map with msd and/or caching will benefit either approach. 
Tim McKinney
Utah Water Science Center

>To: GS Help GIS
>From: Martyn J Smith/WRD/USGS/DOI
>Date: 12/08/2010 11:39AM
>Subject: ArcGIS API for flex
>I'm working on my first Flex application, a project where I'd like to be able to have a user click a map maybe with a physical map base and >identify from a constant value raster that is classified using 4 or 5 colors layered transparently over the top of the physical map. I >have the project working as an ArcGIS server 9.3 application now, where you can identify on the raster and get a pixel value result.
>I'm wondering a few things centering around best practices for converting an application like this to flex:
>1. Can I use the rest service thats already published on the server? or would it be better to create and publish a new tiled map service for the just the raster.
> - Is it possible to consume a single layer (raster depth to ground water) from an existing
> - If so, is there some reference regarding tile a raster layer for use with Flex API using ArcGIS server
>2. In general terms (taking into account speed), what is the best consume existing data using Flex API
> - convert to XML?
> -publish individual data layers as services on existing ArcGIS server
> -tile data (both raster and vector) using ArcGIS server
>Any help would be appreciated, I'm sure there is a host of knowledge out there within USGS. I've been reading information from the ESRI flex api site all morning and searching the forums but I haven't found any definitive answers for these questions.

>Martyn J. Smith