ArcGIS REST & JS API, The Real Deal?

7 02 2008

Well, shut my mouth!

After complaining & proclaiming loudly that there was no way anything coming out of Redlands was going to be good semantic REST or true http goodness, I seem to have been proven dead wrong.

The REST & JS API examples released by ESRI today really look good. I’m impressed by what I’ve seen so far. I’m not alone as James Fee & Sean Gillies have already written up very approving posts as well.

I got my 9.3 private beta invite last night and am looking forward to taking these once sorely missing pieces out for a test drive.

Where does that leave the ArcDeveloper.Net REST for AGS project? I can’t speak for the others involved, but I for one would still like to proceed ahead. Not for the primary reasons stated before, frustration with the Web ADF & lack of faith for ESRI to produce semantic REST, but mainly for having .Net versions of TileCache & FeatureServer combination. The intention never was to couple it very tightly with AGS. Therefore having this program available when Python under IIS is just not an option, would still be a great benefit to the community. Additionally, for those not upgrading to AGS 9.3 anytime soon, such a program could allow them the lightweight interactions missing from 9.2.




Just Wait It Might Be Great

1 02 2008

UPDATE: Well it looks like it just might be great. I hope it is.

That is what James Fee is seeming to say. He seems to thinking that building our own RESTful interface to ArcGIS Server might be they way to go but not until we at least see what ESRI has developed.

Well I respectfully disagree. I would be willing to bet that whatever ESRI cooks up will NOT be semantic REST but rather some RPC-REST hybrid at best. Trust me, Sean Gillies is going to want to burn the letters E, I, S & R in effigy once their marketing machine gets going. Your going to see REST API all over the place and to add insult to injury, that incorrect term will be used to describe something that is barely RESTful & defiantly not semantic REST  I think we as a community could probably do better than that. (disclaimer:I have absolutely no idea what the REST interface to AGS will look like, I’m purely speculating)

Who among us doesn’t think that a Community Driven, Standards Based Open Source project would do a better job of serving our needs and be more responsive and flexible than what ESRI is cooking up. Waiting for ESRI is like “Waiting for Godot”. If want to directly use the various feature storage formats out there, raster data, or WMS/WFS then there are good open source tools which allow you to do that. However, what if you really want to harness the power of the ArcGIS Server stack and just get it to listen & talk in a wider and more flexible array of languages. Make it so that you can plug in AGS into just about anything out there. AGS is a very powerful tool that should power backend solutions, fire & forget geoprocessing, etc..For this I think a community supported open source solution is going to be the best. I say “strike while the iron is hot”, if we can direct the anger & frustration of the WebADF that is boiling over right now into a more useful purpose then let’s do it now rather than later.




The FREE Rosetta Stone of GIS Data Formats

9 04 2007

Could DNR Garmin be the Rosetta Stone of GIS Data?

It will now read from and/or save to the following file formats:

  • Shapefiles
  • ESRI File-based Geodatabase (9.2 only & only if you have it installed on your system. It apparently uses ArcObjects)
  • KML
  • GPX
  • Text files (comma or semi-colon delimited)
  • DBF

 

The Save As file options (I don’t have ArcGIS 9.2 installed on this computer so the Geodatabase option doesn’t show up).

In addition to saving as & reading from files, it will also read from & save directly into ArcMap or Google Earth.

A new version (5.2 beta) was released on March 12, 2007, with several new & important features. This program was already on my “Must Have” list for anyone working with GPS units. It is invaluble for the field work we do at Plateau Land & Wildlife.

Another great feature that it has but only some of us can use is the Image Hotlink/Geocode feature. This works essentially the same as GPicSync (a Google Code project). But DNR Garmin has been doing it for several years now.

This feature works based on the time stamps of your waypoints or tracks and the time stamp of your photos. It can automatically calculate an offset if your clocks aren’t syncronized.

Notice the “Project and Unproject Coordinates” menu items above. The software uses the Proj.4 projection libary to allow reprojection into a vast array of coordinate systems & datums very rapidly.

I’m fairly certian that you could use the libaries used by this program to make a utility that worked with any and all attributes included in your data rather than just the GPS centric fields that this works with by default. To be fair, though if you have some standard attributes, you can cutomize the fields for waypoints, tracks, routes, and real-time data to include whatever fields you want.
Update - Price for all of this : Free

I’m sure you can think of plenty of innovative ways to use this software but let me share an example with you.

As I’ve posted about before we do a lot of bird surveys in the spring. Many of these are done by sub-contractors who don’t have access to a GIS system. Let’s say we have a new client for whom we have never done a survey before. We send the sub-contractor a shapefile of the client property. She then uses DNR Garmin to convert that shapefile directly into KML & into her Google Earth My Places file. She opens up GE & there the property is with aerial photo, roads, & elevation. She adds placemarks for each of the proposed survey stations which she picks based on the info visible in GE. If she wants to colaborate with the biologist familar with the property they can easily share the info to each other. Then she opens DNR Garmin, loads those placemarks directly from GE to her GPS unit. Gets driving directions from her house to the client property through GE and goes and does the survey. If we wanted her to, she could send us back a shapefile of the census stations by saving the actual station locations from her GPS unit into a shapefile via DNR Garmin.




Comparing Mashup Platforms Using JSON & MySQL - Part 2 - Process JSON

30 03 2007

Technologies Used: PHP 5, MySQL 4.1.2, JavaScript, JSON

Software Used: PHP Designer, Aptana, Firebug, Firefox

There are a wide variety of ways to handle JSON that is returned from a server. One of these methods is to provide a callback function pass it to the JSON emiting webservice via REST. When used with static or dynamic script tags, you are no longer restricted to Cross Site Scripting (XSS) limits requireing that the source be on the same server as your webpage. The XSS limit seems particularly ill-suited for mash-ups. The callback function method is what I have choosen for my examples. You will also see a static script tag for these examples. That is to simplify them and make them easier to read. The general preference is to use dynamic script tags rather than static ones.

Actual JSON string returned:

handleJSON({”Observations”:[{"Station":{"number":"1","lat":"29.5762","lon":"-98.7041","total_sp":"9","Species":[{"common":"Mourning Dove","number":"1","code":"MODO","scientific":"Zenaida macroura"},{"common":"Eastern Phoebe","number":"1","code":"EAPH","scientific":"Sayornis phoebe"},{"common":"Carolina Chickadee","number":"1","code":"CACH","scientific":"Poecile carolinensis"},{"common":"Black-crested Titmouse","number":"3","code":"BCTI","scientific":"Baeolophus atricristatus"},{"common":"Carolina Wren","number":"1","code":"CARW","scientific":"Thryothorus ludovicianus"},{"common":"Bewick's Wren","number":"2","code":"BEWR","scientific":"Thryomanes bewickii"},{"common":"Rufous-crowned Sparrow","number":"1","code":"RCSP","scientific":"Aimophila ruficeps"},{"common":"Northern Cardinal","number":"3","code":"NOCA","scientific":"Cardinalis cardinalis"},{"common":"Brown-headed Cowbird","number":"1","code":"BHCO","scientific":"Molothrus ater"}]}},{”Station”:{”number”:”2″,”lat”:”29.574″,”lon”:”-98.7036″,”total_sp”:”5″,”Species”:[{"common":"Black-crested Titmouse","number":"1","code":"BCTI","scientific":"Baeolophus atricristatus"},{"common":"Carolina Wren","number":"1","code":"CARW","scientific":"Thryothorus ludovicianus"},{"common":"Ruby-crowned Kinglet","number":"1","code":"RCKI","scientific":"Regulus calendula"},{"common":"Northern Cardinal","number":"1","code":"NOCA","scientific":"Cardinalis cardinalis"},{"common":"Brown-headed Cowbird","number":"1","code":"BHCO","scientific":"Molothrus ater"}]}}]});

It is not very human readable, but it is highly machine readable.

Below is an extremely simple example of handling JSON and doing something with it.

<html>
<head>
<meta http-equiv=“Content-Type” content=“text/html; charset=iso-8859-1″ />
<title>Simple JSON Handling</title>

<script type=”text/javascript” charset=”utf-8″>
function showCoords(jsd){
var lat = jsd.Observations[0].Station.lat;
var lon = jsd.Observations[0].Station.lon;
var msg = ‘Lat:’ + lat + ‘, Lon:’ + lon;
alert(msg);
}
</script>
</head>
<body>
<script src=http://www.plateauwildlife.com/bbc-mgmt/getstations.php?action=getdata&cid=2&year=2006&func=showCoords type=”text/javascript” charset=”utf-8″></script>
</body>
</html>


See It In Action

The above example is not particulalry usefull for anything other than demostration purposes. We want to actually DO something with our JSON to move us closer to creating the actual mashup. The number thing which I intially strugled with when using JSON & callback functions was that you MUST define the callback function BEFORE your dynamic or static script tag.

Google Maps, Google Earth, Yahoo Maps, and Virtual Earth all take HTML for the contents of the info window when you rollover or click on a point.

ArcWeb Explorer (AWX), however doesn’t take HTML as info window content. AWX does take styled text, videos, picture, audio, & swf for info window content. To this end, if you want to embed rich non-HTML content, AWX allows for some extremelly interesting content to be blended together and presented with great ease. The documentation for text styling is lacking, so creating simple content is actually more dificult in this platform than the others.

I’ve created a javascript file which we can reference in any of the HTML docs that actually embed the mashup.

This file contains

  1. The main callback function
  2. A function which builds an array of HTML tables containing the formated results from each station
  3. A function which builds an array of jscript strings containg the weakly formated results from each station

See The HTML Builder In Action

    //A global variable to assign the parsed JSON to

var jsobj;

 

//Main Callback handler.

//simple assignment to a global variable allows me to reuse and pass

//around the object without any server trips

function handleJSON(reply){

    jsobj=reply;

}

 

    function buildHTML(Observations){

    var info_win = new Array();

    // Build a table element with Station number & total species observed

    for(var i=0;i<Observations.length;i++){

        str = ‘<table border=”1″><tbody><tr class=”station”>’;

        str += ‘<td colspan=”2″>Station ‘+ Observations[i].Station.number + ‘</td></tr>’;

        str += ‘<tr class=”sta_total”><td colspan=”2″>Total Species - ‘ + Observations[i].Station.total_sp + ‘</td></tr>’;

       str += ‘<tr class=”obs_header”><td>Species</td><td>Number</td></tr>’;

        var details = “”;

        var arr = new Array();

        // assign each Species array to a local variable to reduce typing & increase readibility

        //build an string of <tr> elements containing the details of species observed

        arr = Observations[i].Station.Species;

            for (var y=0;y<arr.length;y++){

            details+=‘<tr class=”obs_detail”><td><a href=”http://www.google.com/search?q=%22′;

            details += arr[y].scientific.replace(/\s/,“+”);

            details += ‘%22″>’ + arr[y].common + ‘ (’ + arr[y].code + ‘)</a></td>’;

            details += ‘<td>’ + arr[y].number + ‘</td></tr>’;

            }

        str +=    details;

        str += ‘</table></tr></tbody></table>’;

        //add table element to array of table element html strings

        info_win[i]=str;

    }

return info_win;

}

 

function buildAWXtxt(Observations){

        var info_win = new Array();

    // Build a formated text list for each Station number & total species observed

    for(var i=0;i<Observations.length;i++){

        str = ‘Station ‘ + Observations[i].Station.number + ‘\n’;

        str += ‘Total Species - ‘ + Observations[i].Station.total_sp + ‘\n’;

       str += ‘Species          Number’;

        var details = new Array();

        // assign each Species array to a local variable to reduce typing & increase readibility

        //build an array formatted text data elements containing the details of species observed

        //using this convention, we can assign a url property to each species line

        //through .data{elements[]} in the properties for each marker

        arr = Observations[i].Station.Species;

            for (var y=0;y<arr.length;y++){

            details[y] = arr[y].common + ‘ (’ + arr[y].code + ‘) - ‘ + arr[y].number + ‘\n’;

            }

        var obs_info = new Array([str,details]);

        //

        //add table element to array of table element html strings

        info_win[i]=obs_info;

    }

return info_win;

}

 

Previous Parts

1. Emit JSON

 

Next Parts

3. Arcweb Explorer Mashup

4. Yahoo Maps Mashup

5. Virtual Earth Mashup

6. Google Maps Mashup




Dev Summit Final Day

24 03 2007

Day 3 Thurs Mar 22

I’m finally getting a chance to blog about this now. Steve, I, and nearly 2 dozen other attendees got totally screwed by the storms in Phoenix. However, at least we didn’t have to sit on the tarmack for nearly 3 hours like the other group waiting at the same gate. Though, by the time I got home 25 hours after leaveing the conference, sleeping in the Phoenix airport and eating only pretzals and snack mix; that wait seemed pretty trivial. I hope everyone else also eventually got home safely.

General Thoughts

This was a short day. Only 2 sessions and then the lunch & closing session. It seemed that about 25-30% of the folks had already left and a number of the ESRI devs had left as well. The sessions seemed a bit less technical that those on Wensday.

Sessions Attended

Building & Using ArcGIS Server Map Caches (Best Practices)

The MapCache is a tile cache created by rasterization & tile cutting of the data you have presented in your MXD. The main take home points of this talk were:

  • Understand what a tiling schema is 1st
  • Design your tiling schema BEFORE trying to build on for production use
  • Design a SINGLE schema that will serve the entire organization and all your data layers. In other words: Level 10 = the same scale for regardless of which layer you are building from; Tile sizes should be equal across various data sources; Use same origin point for all caches.
  • Client can rapidly reproject data to any projection system so use one that makes the most sense for both your data and web services methods (ideally, Geographic).
  • DO NOT use png24. PNG8 best if you need transparency, JPG best if you don’t need transparencey.
  • Smaller tile sizes (128×12 8) do not neccessarily result in faster performance over the web, while they take 5 times as long to produce & take up significantly more storage space than large ones (512×512). Test to make sure performance improvement is worth the extra effort. Use the largeest tiel size you can.
  • Fuse as many layers together as possible to create your base map caches. Therefore instead of Intermitten Streams, Permanent Streams, Rivers, & Lakes all being separate caches, they would be a single Hydrography cache that would appear as a single layer in the map service.
  • Each zoom level should be cartographically distinct
  • Forcing an ExportMapImage call from a web service can be a big performance hit. Understand what would make a client do that and avoid it as much as possible.
  • Building large many leveled caches can be VERY time consuming (days-weeks for worldwide layers). Pick a small area, TEST-TEST-TEST and then TEST before doing the full export, instead of having to do it over & over.
  • Cache will build over the extent of your MXD if the layer(s) you are building a cache for don’t have data in the full extent, background color tiles will be created. A waste of CPU time & storage space.
  • Dynamic cache building (a la TileCache) is planned for future releases.

Creating Windows & Web Apps with WPF

This was not at all about GIS. It was strictly on WPF.

WPF is very powerful & can provide you with a lot of UI design patterns.

Security & Permissions can be tightly controlled. Each app runs in a security sandbox. App origin, app settings, and client settings all interact to chose the most restrictive security level for the app.

You can do stuff with this technology TODAY. But, it’s real power won’t be realized until Visual Studio ORCAS is released and Vista or .Net 3 runtimes are more widely accepted. The 1 code for web & desktop paradigm is only for IE6+ with .Net 3 runtime right now. Must use WPF/E for other browser support.

Closing Session

Open Q&A after lunch. No really hard questions were asked, but Steve & other continued to point out that the extra cost of putting the ADF on a separate server is just not reasonable, and that the overall cost of ArcGIS Server is too high.




Massive performance improvements in converting MrSID files

9 01 2007

I finally decided that there is probably no really fast method for distributing 280+ mb MrSID files over the internet without any manipulation. Mapserver worked pretty well locally but really bogged down to an unusable level over the internet. Open Source MapGuide serves MrSIDs as well but was even slower for these large county wide mosaics than Mapserver. Putting a tile server in front of either of these products may have helped but attempts to do so were unsuccessful using IIS and Win XP Pro as my test server.

The main problem I’ve had is that these large files did not convert into a better format very easily. MrSidDecode just decommpresses them to formats which would take several gigs per county. gdal_translate will directly convert from MrSID to another compressed format. However, the performance on these large images was truly terrible. So I thought I would use either MrSidDecode or gdal_translate to convert chunks of the larger image and then convert those images to ecw or jpeg2000. I kept getting an error with gdal_merge and was looking for help on that when I ran across this hidden gem of a response by Frank Warmerdam.

[Gdal-dev] gdal_translate versus mrsiddecode

http://lists.maptools.org/pipermail/gdal-dev/2005-July/006051.html

Setting GDAL_FORCE_CACHING = YES made an enormous difference in the performance of gdal_translate and allowed me to create 10×10 grids of ecw “tiles” from the county wide imagery with a single command per “tile”.

Previously when I tried this it took ~8hrs to convert 1 of the 100 “tiles” from the large MrSID to a more reasonably sized ECW file. This was just too slow for me. With the correct cache setting it now took less than 8min per “tile”. An over 60 times better performance.

This setting seems to work best with small request or files (in apprently chooses this automatically on the small end) or very large requests or files. I tried this same setting on the 2004 NAIP imagery which I had in individual Quarter-Quads already and the performance difference was only about a 10% decrease in the processing time.

I created a tile lookup file for MapServer and used it instead of the MrSid file as the data source and the performance was great over the internet & locally. Now if I can get a tile server in front of this it should be screaming fast.




UMN Mapserver + MS4W + MrSID = Happy Again

4 12 2006

I saw on the Mapserver documentation of supported formats that MrSID and a number of other raster formats were also supported through the use of gdal as a 3rd party component. Well, I had read this to be about the same as Manifold saying that it supported MrSID through 3rd party software. Which was not very well, if at all.

You can preach to me about how uncool MrSID is until you are blue in the face, but the fact is that is the way most of our imagery data comes to us unless we want to pay more or wait for publicly available quarter quads in different formats. And these are mostly large full county mosaics, so decoding or gdal-translating them is a pretty inefficient process. So that’s what I’m stuck with unless I absolutely have to change.

On a lark, I decided to use one of the many sample Mapserver map files and edit it to point to one of the full county sid’s. Bam! Just like that, I now had a WMS image server. I was able to immediately hook it up to UDig and with a bit of experimentation, also hook it into ArcGIS Explorer. This is a ~250mb .sid file and it was being served out by my test server in the same intranet with equal or greater speed than AGX could read the file locally. UDig was even better, it actually displayed the raster faster from Mapserver’s WMS than ArcMap did reading it directly from the disk.

So, for the moment, I’m going to cool off about Manifold (I really didn’t want to have to do that data conversion right now anyway). And I’m going forward with Open Source. I’ll use Mapserver installed from the MS4W package to serve the imagery at least. The data will probably also be from Mapserver but I’ll be using SLD as the cartographic options for polygons and various fill types aren’t directly available in map files alone.

I like ka-Map or MapGuide OS as web-based clients. I’m most excited about using AGX and it’s .NET based custom tasks for a desktop based client.

My only gripe about Mapserver is that there doesn’t seem to be a good way to avoid hand coding some of the map file, unless you use MapScript. Since I installed PHP 5, MapLab doesn’t work very well, and you have to fill all that stuff by hand anyway.

If I have the time (read, not anytime soon), I’d like to make a simple multi-file select data uploader & styler that then writes the actual map file for you. And will automatically attempt to read the projection info and spatial extents of your data.

I probably won’t do much with this until the end of the week, but if I getting a working demo, I’ll defiantly post with pictures about it.




Manifold IMS Redux

4 12 2006

In which I eat a small bite of crow, and then discover all this head banging is fairly irrelevant.

My previous post really took on a new life of it’s own when James Fee linked to it in his blog. I have recieved several emails from Manifold users & a number of comments pointing me it the right direction to get Manifold IMS working properly.

The gist of it is that I merely skimmed the Optimizing Performance document, as I thought it was just that (squezzing every thing you can from a service), and not an ESSENTIAL document on setting up Manifold map files for serving over the web. The main thrust of this document is that you need to minimize the size of the .map file in relation to your server’s RAM and that if you are connecting to a database of anykind, use the best driver for that connection.

With only 512kb of RAM in a AMD 1.8ghz machine running Windows XP as my home test server, a 1.4GB .map file is definatley NOT optimized in relation to the available RAM. So for the image server componentI exported my 256 quarter-quad ecw’s to a single even further compressed ecw. Then I created a new project and linked the single image, created a map and exported it as an ASP.NET webpage with support for WMS. I ended up with a 130kb .map file. I was able to view the imagery on the server and link to it in another application on the server. However, there are obviously some security permission issues that are preventing me from getting to the data on any remote machine. If I decide to pursue the Manifold IMS stuff further, I’ll post to the forums and get that figured out.

So the image server train wreck was fully my fault. Now as for the actual mapdata IMS project, that did not go as well as the image server. Even after linking the shapefiles and PGDB’s, the data was served very slowly and draw incompletely or not at all. I think the bottom line on that one is that I need to use a RDBM to store the spatial data in. The ESRI formats are just not efficient to work with on this scale in Manifold. I’d had already planned on using a RDBM for this stuff anyway, but I’d rather go with PostGIS, thus giving me spatial SQL accessable from a wide variety of clients.

Now, why didn’t I link this stuff to begin with. Well actually, I did, when setting up the desktop project. I figured that linking would be a much more efficient way to deal with data after reading some of the intial documentation and tutorials. However, every time I tried to pan, zoom or resize my Map with either the imagery and/or spatial data files linked, Manifold crashed. Now this was not on that crummy old test server but on an AMD Athlon 64 3400+ with 1GB RAM and a pretty good video card. ArcMap 8.3, UDig, QGIS, & the TatukGIS Viewer were all able to handle the same level of non-imagery data or much more without any severe problems.

So I’d like to apologize for fully flaming Manifold before at least trying to get a solution from Manifold first. However, I was just really tired of fighting with this software. There were the crashes I talked about above and I’m still pissed about the MrSID support. If you don’t really offer it, then say so. It would have been pretty easy to hyperlink the “with 3rd party decoder” statement next to it in the Supported Formats section over to the “Why we don’t really do MrSID” page of the online help manual. The proported support for this format, which I have a TON of data in and continue to recieve data in, is the main reason for purchasing Manifold in the first place. I’ve felt somewhat cheated ever sinceI realized that this was not really supported. So I had a lot of pent up frustration that just finnally boiled over when the promise of a “click-click-done” IMS solution didn’t work out as planned.

For why I think this all irrelevant now, see next post.




Manifold WMS + ArcGIS Explorer = Train Wreck

1 12 2006

UPDATE:

After a bit more time and reading, I have come to a different conclusion.

Please see my next post “Manifold IMS Redux”.

I still have no intention of using Manifold IMS as an image server. However, it very well may get the nod for feature data. I’ll have a better idea next week as I pit it against some other options.

————————————————————————————–

Manifold’s IMS is not an unmitigated disaster.

So to be fair the fault is not with AGX at all. It is 100% with Manifold Me.

The reason we bought Manifold was to have a GIS in which to create nice maps of our large datasets in an easy way and serve them out to the web. While there were plenty of warnings that Manifold’s website was full of hyperbole & BS, I choose not to heed them.

According to the Manifold System 7 website:

Format’s supported includes MrSIDs.

  • Well we now know that turned out to be completely false. It supports using them only if they are of a fairly small area as it uncompresses and rewrites files to an actually supported format. This is MUCH slower when using them in a map than taking the time to convert these files to a fully supported format such as ECW, jpg2k, etc. I chose to make them ECW’s to serve out through Manifold’s Image Server or WMS. This is a no go as well.

Manifold IMS delivers blistering hot performance

Only if you think grass growing & paint drying are lightining quick, would I agree with the statement above.

While the performance may be a bit better if you are using a RDBM backend, It is HORRIBLE when using shapefiles imported (not linked but actually imported) into Manifold & saved as a .MAP file.

I was trying to serve out 2 different Manifold projects and neither one worked. One contained 256 quarter quad ECW files (~1.4GB .map file) and was to act as an image server. Niether the WMS or Manifold Image Server protocals working in AGX, Manifold, or the default asp.net web page viewer. The next one was a subset of my large multicounty project using only Travis county. Two of the featuresets in this project were rather large (~300k features), but all the rest were small. The project also contained no imagery. It was ~500mb .map file. AGX hooked up to the WMS I created for this project, but then crashed waiting for the WMS to respond to requests. The default asp.net web page created by the export process took ~10 min to respond to each request and drew very incomplete features or often none at all.

I’m sure that Manifold excels in some respect somewhere, but I haven’t found it yet. I’ve been much more impressed with UDig & QGIS as alternate GIS platforms to ArcGIS. As for the server side of things, I’m going to give UMN Mapserver and Mapguide OpenSource a good try. If I can get either of them working, then I’ll little or no use for Manifold any more. I’m really sorry we wasted our money on it. I would have much rather spent our $1,200 on something else.




AGXcellent? Not Quite Yet.

29 11 2006

I was like a kid in a candy store last night and stayed up way later than I should have when I found out that ArcGIS Explorer was available for download. I’ve really been waiting for this since rumors of it’s existance began.

What I like:

Aggregation of a variety of services and formats.

Native support for MrSID

  • I have nearly 150gigs of SIDs for Texas. Various years of NAIP, DOQQ, and Municipality, County, Regionally collected aerial photos. Along with some private source imagery. All of the stuff we use is 2 years or less old. Data quality ranges from 2m CIR to 0.5ft TrueColor. It is all better than what you can get from any of the free web maps and nearly all of it is better than ArcWeb’s DigitalGlobe Standard imagery. We also use some ArcIMS services for some county’s annually updated super high-quality aerial photos. The last thing I want to do is convert all this into ECW or JPG2k. We get updates pretty regularly of different areas so continual data conversion is not something I really want to do either. We have NO budget for ArcIMS or ArcGIS, so finding a way to use our imagery in its existing format has been our biggest challange to distributting our data over the web.

Creation of custom tasks and geoproccessing models

  • We want a few very simple editing and feature creation tasks. I don’t need a full suite of GIS tasks. Keep it simple, keep it focused.

Fully skinable

Simple but powerful navigation and interaction methods

All of the above, except the tasks without programming

What needs to improve:

The STREAMING SUCKS!!

  • Come on! I’m testing all of this on the same machine and it takes 3-5 times longer to load base imagery than ArcMap 8.3, and guess what, those are being read of the same disc as AGX and AGX is cacheing them. After going to one area, seeing the imagery of it again should be lighting fast, but it is SLOW!
  • The ArcGIS Online servers are definately not handling anything nearly as quickly as GE, VE, or Yahoo. That said, even if they were, would we know it? When even local imagery loads slowly, imagery from external sources is like watching a maple syrup race in January.

No easy way to change the styling of imported data sources once they are in.

  • Should offer to read .lyr files in addition to shape files. All the styling info it needs, including visiblity scaling has already been recorded there. Why should I have to go through all that again, using unfamilar scales of km or mi above earth’s surface. (By the way to help with that you can use the formula provided in an earlier post)
  • Even if you don’t read .lyr files, then you should at least give an easy way to restyle a layer that you have added from a local or external data source. I understand not restyling layers from GIS server, WMS, or KML as they should have all the styling info they need in them. But importing a shape file doesn’t come with any styling info and trial and error of import, delete, re-import just isn’t cool with me.

Label support is poor and much more difficult to manage than in GE, GMap, Yahoo or VE.

Bottom line is that this is NOT going to truly challange GE/VE. This could be a good 3D enabled simple GIS client that is highly customizable without the use restrictions of GE. The general population doesn’t need a true GIS. They want a great GeoVisualization System with the ability to see data they are interested in draped over 3d enabled imagery. AGX is CLEARLY not trying to be this. It is a ArcGIS Server client that can be repurposed for some other uses for those who are above the general masses in thier GIS needs but don’t need a fully functional professional GIS.

That is exactly what I’ve been looking for, but I don’t think there are that many people in this same position. This is going to be a niche product. If they can get the speed up to some reasonable level, I think it will a really good one.

I’m going to see how well this works with Manifold WMS tonight. I’ll definately be posting more about this in the next days and weeks.