A late edition to the ESRI Developer Summit is the GeoDesign Idea Lab. This is going to be a set of lightning talks by developers showcasing how they’ve been using the concept of GeoDesign in their applications. I’ll be moderating the session with Eric Wittner of ESRI. If you’ve been telling [...]

Google Public Data Explorer

Google’s Public Data Explorer continues their push to integrate their simply awesome visualization APIs with searchable datasets. Think big though: If you’re a data provider interested in becoming a part of the Public Data Explorer, contact us.

Oh S#*t! Why is it companies want to be so disruptive when all you want to do is make maps? Says John Herlihy of Google “In three years time, desktops will be irrelevant.” Bam, game over. We’ll be working our GIS magic on Androids and iPhones. I know, I know… We’ve heard this all [...]

Extreme and Inspired Biking

I’m a self-admitted roadie and really have never been much of a trials or mountain biker.  However, when I saw this Inspired Bicycles video, MTB’er or not, I was unbelievably impressed with the skills of Danny MacAskill.  Now, don’t go telling all of my roadie friends that I said that. Similar Posts: Bikes, Legos, and Star Wars! The [...]

The End of Platial

Platial Moving Forward OK, so the news is grim. Platial is now essentially finished, at least how we knew it before. They’ve turned off their service and now everything is essentially a download link. This means if you’ve been using Platial (or at least used them in a previous life) and want to get your [...]

February by the Numbers

Well, the second month of the year has passed, Punxsatawney Phil stuck his furry little head out of his burrow and declared six more weeks of winter (I don’t like prognosticating rodents!), and I’m 8 weeks into a heavy aerobic base building phase.  This month started off great, built to an excellent round of long [...]

Reflections on the 2010 ESRI FedUC

Cloud Ready Well I’m sure you’ve all heard the news. ESRI is now an Amazon Independent Software Vendor. This means of course that we’ll see some ArcGIS Server in the Amazon Cloud very soon. In fact if you are an ESRI ELA user, you can take advantage of this right now using one of the [...]

Wii Sports…on Rollers!!!

OK, so it’s the end of February, you’ve been doing lots of indoor training and you say you’re getting a little bored?  Do you want something to really challenge yourself with?  Try what these guys do, play Wii sports while on your rollers.  Seriously, these guys are amazing.  I have a hard enough time training [...]

Pondering (In)significance

Earth, our Pale Blue Dot, as seen from the Voyager 1 spacecraft from 4 billion miles away. JPL/NASA, 1990. I’ve recently been reading Carl Sagan’s classic book “Pale Blue Dot”.  Right off the bat, in the very first pages of the introduction, Sagan so clearly and succinctly summed up the significance of our day-to-day minutiae [...]

Prohibitively difficult vs Protecting IP

It seems various discussions are appearing postulating that ERDAS is making it “prohibitively difficult” to download the ECW SDK from our website. I’d like to make clear that this is absolutely not the case. From the website, Request a Download The ECW SDK 3.3 and the ECW SDK 3.3 Source Code are made [...]

Dream a Little Dream

“Day Dream (Explore!)” Creative Commons by Loving Earth I have a 3 year old son who seems to have some amazing clarity and insight into life. It never fails to surprise me when he says something that stops me in my tracks and makes me reconsider everything. Maybe it’s because the mind of a [...]

So I’ve been thinking ..

The raster benchmarks have been a outstanding success with 3,000 + page views over the last 40-odd days.  But what I’ve been struggling with is how to expand to more software or more platforms. Clearly I am not the master of web GIS Applications because I still for the life of me can’t get Mapguide [...]

If you have used ESRI’s Flex Starter Kit you may have noticed an annoying feature when sketching graphics on the map via your custom widgets or their DrawWidget. When sketching a polygon, it requires 2 vertices before the sketch is drawn on the map. This only confuses your users as they are not sure their [...]

On the hunt for some more benchmarks ..

Sourcing independant benchmarks or comparisons is always a difficult exercise. To continue on my recent raster benchmark quest, here are some other similar raster performance studies i’ve found round the interweb. If you know of any others, please throw them in the comments! ESRI Image Server vs LizardTech Express Server http://geoinfo1.lib.uidaho.edu/loadtest/ (June 2009) Not much background info on [...]

Validating PDF Documents

So I’m just wrapping up a project where I had to generate PDF reports involving ArcGIS Server, ASP.NET MVC, and web services. I’ll do a post on how I rolled it all together later. But first, let’s look at this nugget… how to validate the PDFs being generated. The PDF library I used was iTextSharp, which [...]

Debugging Server Object Extensions

Not sure how I missed this one, but Dave just turned me onto it. Simon, over at Map Butcher, did a great post a while back on how to debug server object extensions in Visual Studio. Check it out here and say good-bye to “debugging” using log files. So, to roll with this using the post-build [...]

Benchmarks updated

Small update, Added a new ECW 256px tile test Added a new ECW reprojection test Added some more info on my mapguide config problems I’m still keen for someone to verify my numbers. It would be nice to know whether I’m alone in the universe or not even if the setup is different ..

Post-build Event for Custom Server Object Extensions

While developing ArcGIS Server Object Extensions, I typically run a post-build event in the SOE Visual Studio project to copy the DLL and it dependencies to an output folder outside of the actual Visual Studio project. It is there that I perform the COM registration using REGASM. Until today I have relied on BAT files [...]

Raster Image Serving Benchmarks

I am pleased to announce my own performance metrics continuuing on from the FOSS4G 2009 WMS Raster tests. So, whats new? Tests extended from just TIF and ECW to TIF, ECW, JP2, MrSID, TIF Tiled, TIF Internal Pyramid, TIF External Pyramid Platform changed from RHEL to Windows Server 2008 x64 Increased the threads from 1,10,20,40 to 1,10,20,40,80,150. Hardware increased [...]

Dilema for creating FOSS4G desktop apps

The other day, Cyrus and I were brainstorming how to build a desktop app that had some minor GIS components and a lot of calculation components. Our first thought was to go with ESRI software, especially that you can now write native ESRI components in Java. We just wanted simple that would be easy to give to [...]

Did they drop TeleAtlas too early

So I want to follow up on the nuclear bomb dropped on the geospatial industry – but instead I want to focus on what James pointed out about spatial accuracy. I think Goog made the switch to their own data too soon. My wife has used Google religiously for getting driving directions for a couple of years [...]

Please go help Elizabeth

Alright all 3 of you kind readers – my friend Elizabeth Greyber is running the Nike’s Women Marathon this weekend as part of Team in Training in honor of my battle with cancer. Please go to her page and give a little so she can reach her goal. Thanks and “Mind you, moose bites can be [...]

The Sandpit has moved…

Please continue to following The Sandpit from the new site.
http://kiwigis.blogspot.com


Issues upgrading ArcGIS Server 9.3 to 9.3.1

Yesterday I ran into issues upgrading my developer box from 9.3 SP1 to 9.3.1. I’m running Windows Server 2008. No problems upgrading ArcGIS Desktop. However, after completing the post install of server I was no longer able to browse to my local services via http://localhost/arcgis/rest/services. In fact, my entire ArcGIS instance folder located under wwwroot [...]

People spend an inordinate amount of time generating tiles using ArcGIS Server, and I think we have it wrong. Don’t get me wrong… I love how fast my browser feels with tiled data… But you see, ArcGIS Desktop eats web-based tiles. It swallows them; caches, scales, and even reprojects them client-side. You just need [...]

This post describes a new sample published by ESRI’s Application Prototype Lab and inspired by Jack Dangermond geodesign presentation at the 2009 ESRI International User Conference.

Dynamic Charting for ArcGIS Desktop is a free sample (with source code) available from the ESRI code gallery.  The sample summarizes a layer’s features based on the length/area and grouped by unique values from the renderer.  The differentiating factor between this sample and the out-of-the-box charting tools is that this sample updates dynamically even in an edit session.

Dynamic Charting for ArcGIS Desktop 

Download


ArcGIS Diagrammer is productivity tool for ESRI’s ArcGIS Desktop users.  Diagrammer is primarily used to create or view geodatabase designs in a graphical editor.  This post will examine data reporting, a feature of Diagrammer that might be useful to a wide variety of ArcGIS Desktop users.

Let’s say that you or your organization has an existing geodatabase.  You may want to ask:

  1. Does my geodatabase have any empty feature datasets?
  2. Does my geodatabase have any feature classes with no data?
  3. Does my geodatabase have any subtypes with no data?
  4. Does my geodatabase have any feature classes with holes?

Diagrammer’s data reporter will help answer these questions.  Below is a short walk-through of creating a data report for a sample geodatabase that is included with ESRI’s ArcTutor product.

After starting ArcGIS Diagrammer, click Tools > Data Report.

A new tab will be added to the application called Data Report.  If the Properties Window is not visible then click View > Properties.  In the Properties Window, click the ellipsis () button next to the Workspace property.

The ellipsis button will launch a dialog for navigating to (and selecting) a geodatabase or SDE connection.  All geodatabase types are supported.

The selected geodatabase will be scanned for feature datasets, feature classes and subtypes.  This may take a few seconds or minutes depending on the size and complexity of the geodatabase.  When the scanning is complete a HTML report will be presented in the Data Report tab.

The report includes a header table and details about all feature classes, tables and subtypes.  Most useful is the number of features/rows per feature class, table and subtype.  Lastly, the report includes a small thumbnail representation of the data that, by default, hyperlinks to a larger image.

Data reports can be sent to a local printer/plotter or virtual printer should you wish to create a PDF document.  Alternatively, reports can be exported to a new HTML document.  To do so, click File > Export.

The save as dialog that appears will prompt you for the name and type of web document to create.  By default, “web archive” is selected.  We recommend you select “webpage, complete” as this will make a copy of the thumbnail images.  The only disadvantage of exporting a report to HTML is that the larger linked images will not included in the output location.  To prevent this, you can disable the creation of the larger images in the options dialog (see below).

This is an example of an export data report displayed in Windows Explorer.

When the exported HTML data report is viewed in a web browser, it looks identical to the report in ArcGIS Diagrammer.

Some options are provided to change the look and feel of data reports.  To display the Diagrammer options dialog, click Tools > Options.

The data report options are located under the Report > Data tab.  Most options are related to the font and the thumbnail images.

In the screenshot below I modified the font to be “Segoe Print” and increased the size of the small image to 200x200 and removed the larger linked image (Show Large Image = False).

That concludes this brief walkthrough of creating a data report with ArcGIS Diagrammer.  Diagrammer is a free download from ArcScripts and includes full source code.

List of other online tutorials:


Over a year ago I wrote about using ArcGIS Server SOEs without SOAP. In that article, I wrote a simple JSON-RPC invoker that used reflection. Being spoiled by using custom JSON model binders in ASP.NET MVC, I was longing to see a similar thing in SOEs. For those not familiar, the idea is to [...]

Unclogging and letting go

For those of you playing along on the home game… This coming friday is my last chemo. I have much to tell and share about the whole experience  but today I want to focus on the piece I am chewing on. It will probably come off preachy but screw it – it’s my blog. You [...]

I’m attending the ESRI Developers Conference for the first time ever, and was hunting for hotel suggestions.  There are comments on James Fee’s blog from last year that recommend Zoso over the Wyndham.  TripAdvisor skews towards the tiny romatic places… any recommandations on a cheaper place for the barely-under 30 crowd? [...]

I know I shouldn’t be looking at these things before coffee.  Still, when a SQL Import task complained about my Geometry column type, I tried to fix this. I editted my “C:\Program Files\Microsoft SQL Server\100\DTS\MappingFiles\MSSQLToSSIS10.XML” file, duplicating the entry for varbinary(max), but changing the data type name to “geometry.” Bingo.  Everything now seems to copy fine. [...]

During the 2009 ESRI International User Conference, Jack Dangermond introduced his vision of geographic design or “geodesign”.  Click here to view Jack’s presentation of his geodesign vision.  To assist Jack’s presentation a few demonstrations were created to help illustrate his points.  One such demonstration used a Microsoft Surface device to sketch planning areas on an interactive map.

This application was developed using the ArcGIS API for WPF by the Applications Prototype Lab.  The base map is from ArcGIS Online and the overlaid suitability maps were sourced from a local ArcGIS Server.  A very basic application but it demonstrates the interactivity of a multi-user/multi-touch device for planning and communal design.


A new post by the Applications Prototype Lab examines what would happen to the world’s oceans if the Earth stopped spinning.

What would happen if the Earth stopped spinning?

Technorati Tags: ,,

I am alive and in chemo

Given the number people asking how i am doing i must be remiss in updates. sorry i am typing one handed while get my doxirubin push. I am good – tired and achy – but good. I think I have overcommitted at work and I am trying to figure out how to pull back a [...]

Applied Spatial Databases Presentation Slide Deck

I recently put together a presentation for a graduate database class on the topic of Applied Spatial Databases.  Thought I’d make the presentation available to anyone who might get some use out of it.

Google Earth 5.0 - Tours

I’ve been working to include the new KML Tour tags from GE5 into Arc2Earth and our Cloud Services and the more I worked with them, the more I realized how powerful they could be. That being said, we’ll be adding a new A2E Tour Builder into Arc2Earth and probably release it as a stand alone product as well (since it really isn’t tied to GIS data imports).

Some points of interest regarding the tour builder:

1) Independent camera track and focus points allow you to move the camera around and look at a variable number of locations along the way
2) Independent speed track allows you to change the velocity of the camera movement along the timeline
3) Sounds, Balloons and Pauses tracks allow you to place these easily into the Tour timeline
4) Animations – simple control of Placemark and Model attributes and locations (no demo for this yet). 

It will take a bit of time to get the Timeline UI right but in the mean time, here’s a couple exports that show the variable camera movement in action:

New York City Tour – turn on 3D building for the best view. You might have to run it once/twice for all the building to load completely
http://www.arc2earth.com/public/NYC_Tour.kml

San Francisco Tour - same thing as above but this time you can turn on the Time of Day button in GE (the little Sun icon). The time will change from 6:30am to 6:30pm over the duration of the tour
http://www.arc2earth.com/public/SF_Tour.kml

Listening To: Sounds From The Ground - Eclipse On 5th


Google Earth 5.0 Released

Google Earth 5.0 was released today with some excellent new features. Obviously Google Ocean is the most impressive but there are also many changes to KML spec as well. Actually, not the official KML spec that is under OGC guidance, but a *new* XML namespace that extends the OGC one.

The “gx” namespace contains several new tags that focus on the undersea functionality (gx:altitudeMode), the historical imagery (gx:timeStamp) and the new Touring engine in GE5 (gx:Tour, gx:flyTo, gx:AnimatedUpdate etc). Going forward, this is undoubtedly how they will sidestep OGC when they need to add new visualization functionality to GE in, shall we say, a timely manner.

We updated Arc2Earth to take advantage of some of these new features so if you are a current 2.0+ user, feel free to download the latest version. Here are some quick examples:

Gulf of Mexico – Oil/Gas Pipelines and Wells Demo – shows clamping to the seafloor and a new Arc2Earth feature to use 3D models in place of points when exporting - KMZ Link

 Larger Image

 Larger Image

Galapagos Bathymetry – KML Vector Regions of underwater contour lines around the Galapagos Islands - KMZ Link

  Larger Image

I’ll have more info in the future on some cool Tour exports as well

Listening To: Acoustique Parfum - Drowning Sun Part 2 (Guardner's Mix)


well it’s a new year and I’ve been mostly silent on this blog for quite some time so it’s certainly time to give an update on what’s going on with Arc2Earth. The vast majority of my time the past 8 months has been dedicated to building our Cloud Services infrastructure but a lot of other updates have occurred as well.

Arc2Earth Reseller Program – Last year we started a reseller program and are quite happy with the companies that have signed up to help us distribute A2E. A lot of work went into this process and we’re thankful for all those who helped out in the process. I’d really like to thank the following companies who jumped on board quickly and in some cases, have devoted serious amounts of time and effort in the marketing and sales of A2E.

United States

  • Allen Instruments - Scottsdale, Arizona - http//www.alleninstruments.com
  • GeoSpatial Training Service - San Antonio, Texas - http://www.geospatialtraining.com/
  • New Light Technologies - Washington D.C. - http://www.newlighttechnologies.com/
  • Zekiah Technologies - LaPlata, Maryland - http://www.zekiah.com/
    • Europe, Middle East and Africa

      more information will be available at this link as the program advances: Arc2Earth Resellers

      Arc2Earth Version 2.1 - Last month we released V2.1 of the A2E, it contains lots of new features and bug fixes. You can download the Trial version by visiting our user forum, creating an account and then going to the Downloads section. The online change log is available here and you can see a list of reasons why you might want to use Arc2Earth versus ArcGIS 9.3 native KML Exporter. Version 2.1 will have several more patches before Version 2.2 which contains the UI for creating and consuming Arc2Earth Cloud Services

       

      Arc2Earth Cloud Services - Wow, so much has changed since we first announced work on the Cloud last July. The intent and vision is the same but both technical hurdles and feature creep have slightly delayed our public beta. That being said, I am incredibly excited about this service and what it will enable our users to accomplish, I can’t wait to get it into their hands.

      Update - Added some quick videos here 

       

      here’s a quick peak:

      ArcMap Integration – create and edit your maps directly from ArcMap using some new A2E toolbars and windows. You can add “cloud layers” directly to your local map and then use the native editing tools in ArcMap to make changes. Every resource in your cloud instance is controlled by login and ACL lists so you can create groups users who all work remotely on the live data. There are also bulk upload/download tools so you can get a fresh copy of any layer anytime you need to perform heavy lifting GIS analysis.

       Larger Image

      KML – The KML engine used in the service can be applied to any resource that serves features. There are a couple of endpoints where KML can be returned but in the samples below, it is the "search" resource. All aspects of the KML (labeling, balloon templates, styling, height, filtering etc) are applied at runtime and streamed out. In general, Arc2Earth will always be able to create and serve static files but the focus in the Cloud is the dynamic creation of KML. What’s even better is that any of these endpoints support REST parameters that allow you to control this from the client. For instance, here are four different representations of the same proximity search:

      HTML View

        Larger Image

      KML View – just labels applied

      .../Demographics/StarbucksWorld/MapServer/0/search?q=near(Midtown,+NYC,+1mi)&limit=20&f=kml&p={"label":"[!address]"}

       Larger Image

      KML View – Simple Renderer, 3D Marker Symbols

      .../Demographics/StarbucksWorld/MapServer/0/search?q=near(Midtown,+NYC,+1mi)&limit=20&f=km &p={"rend":{"type":"Simple","symbol":{"type":"Simple3DMarkerSymbol","name":"cylinder","color":{"html":"FF00FF"},"scale":15}}}

       Larger Image

      KML View – Class Breaks Renderer on distance, 3D Marker Symbols

      .../Demographics/StarbucksWorld/MapServer/0/search?q=near(Midtown,+NYC,+1mi)&limit=30&f=kml &p={"rend":{"type":"ClassBreaks","field":"distance","breaks":[150,500,1500],"symbols":[{"type":"Simple3DMarkerSymbol","name":"Cylinder","color":"FF00FF","scale":25},{"type":"Simple3DMarkerSymbol","name":"Cylinder","color":"FFFF00","scale":15},{"type":"Simple3DMarkerSymbol","name":"Cylinder","color":"0000FF","scale":5}]}}

       Larger Image

      While it is very useful for one off links or scripting, sending json via the query string can be an issue so any of these can also be accessed by url as well. Taken to its extreme, we use the KML Rest API to create a Google Earth viewer for every map and layer. As you can see from this screengrab, the user can access and set any of the parameters directly from Google Earth, hit save and KML Regions and Updates tags automatically change the layer view they see in Google Earth. (these update tags are also how we keep the GE Viewer up to date with any live edits that occur). All in all, the KML support and api you have available for all your layers is very flexible and quite powerful

       Larger Image

      Viewers – Google Earth, Flash Editor, ArcMap, Android, OpenLayers – we’ll start with the basics and keep adding viewers. and since we are still compatible with ArcGIS Server REST api, you will be able to use those scripting and Flex libraries as well.

      Datastore - I can’t tell you how much time I’ve spent going over the merits of a distributed Big Table datastore (like Google App Engine) versus running clusters of PostGIS on Amazon EC2. I am hardly qualified as an authority on the matter but the reality is that both have positives and negatives and in the end, a hybrid between the two seems to work well. This topic deserves several posts in and of itself so in the future I will try to layout why we chose GAE’s Big Table for our cloud’s data storage and how we went from geohash to quadkeys to finally packing grids of data separately into Big Table (or “quadtrees full of r-trees” as I like to call them). It is no replacement for a good RDBMS for sure but it is highly optimized for distributed access and querying of the spatial data, the exact kind of access seen in todays web clients like Google Earth. The automatic scalability of GAE (as long as you play by their rules) is both extremely attractive and cost effective for small company such as ours.

      ok, enough for now. I’ll post about these features and more in detail in the coming weeks


      I mentioned this yesterday; today I’ll fill in some of the details…. ArcGIS Server ships with WSDLs. They’re pretty nice, really. You can hit them with your favorite stick (svcutil.exe comes to mind) and you’re got a pretty nice client library for talking to ArcGIS Server. With the same stick, could equally created [...]

      Arc2Earth Cloud Services - Videos

      A lot of people want to see some of this in action but unfortunately, we're not quite ready for live testing yet. so here are some quick videos of Arc2Earth Cloud Services in action. Sorry there's no sound, one of these days I'll get this working on my machine...

      Video 1 - Upload a Layer to the Cloud  - shows creating a map, loading a layer directly from ArcMap and then accessing the layer's online catalog. From there it shows some spatial selection operations on the newly uploaded data. Finally, it shows displaying the layer in Google Earth where we can manipulate how the layer looks from with GE using the new layer property pages.


      Link to Video

      Video 2 - Live Editing of a Cloud Layer - this shows 2 ArcMaps (one on a Vista machine via Terminal Services) editing a single cloud layer. First, adding a new feature and how it automatically shows up in the other ArcMap session as well as Google Earth. Next, attribute values are changed and the results are viewed in real time inside Google Earth.


      Link to Video

       

      Listening To: Nickodemus - Cleopatra in New York


      Java GIS Development Setup (Part 1)

      In recent months I’ve been transitioning over to Java GIS development from .NET.  One of the first hurdles going into any new language is tool selection, in addition to installing and setting each one up.  This tutorial is geared towards those facing the same transition, or for those purely interested to see how to create [...]

      Arc2Earth Cloud Services

       

      When we first started Arc2Earth, one of the primary goals was to bring the power of the web based visualization to your average ArcGIS desktop user. By allowing them to export KML to Google Earth and then later to create map tiles for Google Maps and Microsoft Virtual Earth, we allowed our users to publish their data to a much larger audience without the need for servers or server software. In this regard, I think we’ve done pretty well in serving the need, there is always room for improvement but for the most part, we added another useful tool into their bag of tricks. We plan to continue building on this base but have also embarked on a plan to provide even more powerful tools for our users.

      After exporting and publishing their data, one of the first questions our clients usually ask is: “This is great but is there any way to search the data?” or “Can I click on the features?” For the most part, once our export took place, we had to rely on the functionality of Google Earth, Google Maps or MS VE for ad-hoc searching/clicking or provide additional custom programming to enable an application beyond the exported data. The former will certainly get better over time but is somewhat lacking right now and the latter, while lucrative, does not fit with the original vision of “one click” export to publish your data to the web.

      So, another model is needed to provide this additional, runtime functionality to those users who do not have the time, expertise or funding for their own servers. To fulfill these needs, we will be providing an online service that allows users to host their maps and layers online while providing REST based access for queries, editing and spatial analysis (limited as it may be). We will also provide a new desktop application that automatically synchronizes data between your local drive and online services. As edits occur online, they are automatically pulled down into your original source data (optionally of course)

      1) A2E Sync Client – Synchronizes any number of local data sources with online AtomPub feeds. Arc2Earth Online provides an APP feed for every uploaded layer but this software can also be used with other APP compliant sources (several of which are likely to come online in the future).

       

      2) A2E Cloud Services – Based on Google AppEngine, this is the engine that allows us to host, query and edit large amounts of data on Google’s server infrastructure. While our service is not even in beta release yet, we feel it holds great promise for online GIS services and will be of great value to Arc2Earth clients and their users. Initially, it is unlikely to include the sophisticated abilities of existing GIS servers but it will provide the 20% of functionality that is used 80% of the time. This is a perfect fit for the vast majority of Arc2Earth users who need to add real time functionality and collaboration to their exports. Some things it will include are:

      • Support for Points, Lines, Polygons 
      • Layer Queries – both spatial and attribute based
      • Feature editing – AtomPub feeds as well as other RESTful endpoints
      • RESTful API – Access your folders, maps and layers via simple Urls. We also provide compatibility with other GIS Servers RESTful APIs so that your client side code can work without changes. Initially, we will support a subset of the new ArcGIS 9.3 REST API but will also look to support the other APIs provided by MapGuide and GeoServer communities.
      • Support for Google Earth, Google Maps, MS Virtual Earth and OpenLayers
      • Support for different formats – KML, KMZ, GeoJson, ESRI Json, GeoRSS, Simple GML. These formats can be specified as the input and output format for any query or editing operation
      • Online Editor – a Google Earth plugin application (based on our GETools code) that provides basic map and layer management as well as editing tools for updating your data directly online. The editing tools include important tasks like measurement and snapping. Likewise, with proper permission, you can allow other users to load and edit your data from other locations.
      • Arc2Earth desktop is used for bulk loading and exporting of your data

             

      What it can’t do now:

      • On the fly map drawing – there is no ability to draw maps right now but as GAE evolves we will be looking into it. However, users can create map tile caches with Arc2Earth and then upload them into the cloud
      • Geoprocessing – although you can simulate some forms of GeoProcessing by chaining together different request from the client
      • Long running, synchronous queries that return lots of data – we are working on ways to initiate very large queries and then provide an asynchronous callback to download the results.

       

      Here are some quick demos, please note that they are running live on Google AppEngine but that GAE is still in pre-release itself (and we might go over our beta quotas). Also, for the Google Earth Plugin sample, some computer video cards might have issues displaying the Identify result.

      as mentioned, this service is not even in beta and we are still working out the financial model. Also, we’re still actively coding and trying new techniques on Google AppEngine and are hopeful that future additions to GAE will dramatically reduce execution time but as of now, it’s a work in progress.

      Inevitably, there will also be comparisons between what this service will do and what will be provided by other vendors (e.g. WeoGeo/Safe etc). I think there is more then enough room for multiple “Cloud” GIS services and we're likely to see many more in the future. This ability to build on top of infrastructure from Google, Amazon and others also allows much smaller companies into a marketplace that in the past, would have been dominated by larger ones with deep pockets. I for one am looking forward to what is built using these services in the future


      I’ll be helping to man the Arc2Earth booth at the UC next week so if you’re in around, please feel free to stop by and say hi.

      (please visit Arc2Earth at the 2008 ESRI User Conference in San Diego next week – Booth 2217)


      Flat Out Resuscitation

      One of my goals this year was to revive my GIS blog, which suffered much neglect over the last year. In fact, I was even scrapped after the Planet Spatial Reboot. After reviewing some of my older posts I decided to start with a clean slate. The posts really didn’t add any [...]

      More than just PushPins

      I’m currently going through the preliminary stages of looking to move house, this means that I seem to be coming across an awful lot of pushpin maps and Google mashups on a variety of property web sites. Most of these sites are very good at aggregating data into a simple map view displaying a number of [...]

      On Location mashup*

      I happened to be working in Canary Wharf on Tuesday, so on the way home I made a last minute decision to detour to the mashup* event which was themed ‘On Location’.  I’d made a mental note of it a while ago, but then completely forgotten, anyway I’m glad I  went as it was pretty interesting.  There was a [...]

      OpenStreetMap Data in ArcGIS

      ***Update***  I should probably point out at this point that the tool currently linked from here does not work with the  current xml format of openstreetmap.  I will post a new script soon that does, although you can probably tell from how long ago the format changed that I have had a few othe real-life things get [...]

      Build your own touchtable

      I was lucky enough recently to see a great demo of the giant TouchTable, and I had forgotten since seeing it 3 years ago at the user conference, what a very very cool piece of kit it is.  With microsoft recently announcing their forthcoming Surface platform, I got to wondering what would be involved if i wanted [...]

      The ArcGIS Server Development Blog has moved to the ESRI blogs home at http://blogs.esri.com/arcgisserver. Please update your bookmarks and RSS feeds to reference the new location.

      As part of the move, any current accounts you’ve created on this blog will be unavailable on the new site. Instead, you can use your ESRI Global Account if you wish to sign in to the new site. Creating an ESRI Global Account is free and available to everyone.

      The blog will still be written by the ArcGIS Server development team, and you’ll be able to see all previous posts and comments. We apologize for any inconvenience caused by this move, and look forward to your continued support and readership.


      From Bryan Baker, a product engineer working on the .NET SDK: 

      I wrote an earlier post that showed how to extend the QueryAttributes task so that all features are immediately highlighted. Several users have asked about also zooming to the selected features. I'll show that here, though keep in mind that the user can also zoom to the selected features by right-clicking on the node for the layer (Cities in the graphic at the top of the earlier post) and choosing to zoom to selected features.

      It turns out that it's a little more difficult to zoom to the features than I originally thought, because the FullExtent property of the graphics layer is null for queries like this. Instead, we have to construct our own envelope around all the features by looping through them. This isn't that difficult, though of course it does require more processing.

      I’ve included code below that does the zooming. This code should be added to near the bottom of the existing code in the earlier post. If for some reason you didn’t want to highlight all the features, you could omit or comment out the line in the loop that sets the selectedCol to true.

      The code below first creates an envelope to use, then in the existing loop that selects each feature, it widens the envelope to surround each feature. Once it has the envelope, it gets a reference to the Map control so it can set the Map’s extent. This takes some work, since the task itself has no reference to the Map. We have to get the ID of the Map and then search the page’s control tree. Since the Map control could be nested within another control, such as in a FloatingPanel, we search for it recursively using a custom function (found at the bottom of this listing).

      One more thing before we zoom the map: the task could be querying a point layer, and if only one point is found, the “envelope” around all features is a point. We can’t zoom to a point, so instead we set the envelope to a percentage of the full extent of the Map (five percent—this value is hard-coded here, and you can change it depending on tightly you want to zoom in this one-point case).

      Finally, we’ve got an envelope that will work, and we set the Map to this extent, refresh the Map, and copy its CallbackResults to the task’s CallbackResults. This last step is necessary because a callback only works with one control (the task in this case), and we need to tell another control (the Map) to update its contents.

          ' Set up the items to hold the extent of all features

          Dim geom As ESRI.ArcGIS.ADF.Web.Geometry.Geometry

          Dim layerEnv As New _

             ESRI.ArcGIS.ADF.Web.Geometry.Envelope( _

             Double.MaxValue, Double.MaxValue, _

             Double.MinValue, Double.MinValue)

          ' Set each feature to selected (this loop is

          ' at the end the code in my previous blog post)

      For Each row As DataRow In graphicsLayer.Rows

         row(selectedCol) = True

          ' Enlarge the overall envelope to

          '  include the current feature

         geom = graphicsLayer.GeometryFromRow(row)

         layerEnv.Union(geom)

      Next

          ' If any records found, zoom to them

      If graphicsLayer.Rows.Count > 0 Then

          ' Get a reference to the Map - have to search the Page since

          '  task itself has no direct reference to the Map

          ' (the task's TaskResults does have the ID of the map)

          Dim mapCtrl As Map = Nothing

         Dim taskResultsId As String =

            Me.TaskResultsContainers(0).Name

          Dim taskResults As TaskResults = _

             CType(FindControlRecursive( _

             Me.Page, taskResultsId), TaskResults)

         If Not TaskResults Is Nothing Then

            mapCtrl = CType(FindControlRecursive( _

               Me.Page, taskResults.Map), Map)

         End If

         If Not mapCtrl Is Nothing Then

          ' If only one point found, envelope will be a point

          '   -- set to a percentage of the full extent

            If layerEnv.XMin = layerEnv.XMax AndAlso _

               layerEnv.YMin = layerEnv.YMax AndAlso _

               Not IsNothing(mapCtrl) Then

          ' Percentage of the full extent to use when zooming to point

          Dim zoomToPointPercentage As Integer = 5

          Dim NewWidth As Double = mapCtrl.GetFullExtent().Width _

             * (zoomToPointPercentage / 100)

          Dim NewHeight As Double = mapCtrl.GetFullExtent().Height _

             * (zoomToPointPercentage / 100)

               layerEnv.XMin -= NewWidth / 2

               layerEnv.XMax += NewWidth / 2

               layerEnv.YMin -= NewHeight / 2

               layerEnv.YMax += NewHeight / 2

            End If

          ' Now we can zoom the map to the extent of the features

            mapCtrl.Extent = layerEnv

            mapCtrl.Refresh()

          ' We have to tell the client to refresh, using CallbackResults

            Me.CallbackResults.CopyFrom(mapCtrl.CallbackResults)

         End If

      End If

      Below is the function called in the above code. This searches the page and its child controls for the control with the given ID. Put this after the end of the Execute method (End Sub), but inside the Class (before the End Class statement).

          ' Finds the control in the Page's control tree

          Public Function FindControlRecursive(ByVal root As _

             Control, ByVal id As String) As Control

              If root.ID = id Then

                  Return root

              End If

              Dim c As Control

              For Each c In root.Controls

                  Dim t As Control = FindControlRecursive(c, id)

                  If Not t Is Nothing Then

                      Return t

                  End If

              Next

              Return Nothing

          End Function

      If you add the code above to the custom task as outlined in the earlier blog post, it should automatically zoom to the extent of all features found by the task.

       


      Customizing the Web Editor task

       James Goodrich, a developer on the .NET Web ADF team, contributed this information about some Service Pack 2 enhancements to the Editor task:

       When the Editor task was released at version 9.2 of the Web ADF for the .NET Framework, a common question was "How can I customize the Editor task?". Service Pack 2 provides an answer to this question. You can now customize the Editor task with custom tools and Editor Panels and we have added more events that allow you to hook into the Editor task.

      In addition to these new customization options for developers, the Editor task has another key change at Service Pack 2 which it allows it to be configured with a pooled map service. You can edit non-versioned data using a pooled map service.

      See the Editor Task control discussion in the Developer Help for samples and instructions.

      Customized Editor Task with added tools


      Rex Hansen contributed this post about how to use some of the enhanced JavaScript in Service Pack 2 to track pending tiles and display a busy indicator (such as an animated "Loading" graphic) over the Web ADF's Map control: 

      As a Web ADF developer working in an asynchronous communication environment, it is often beneficial to provide an end user with some indication that a user action is being processed. Since most Web ADF applications are centered on working with a map, the ability of an end user to effectively interact with map contents is essential. The Web ADF has the ability to asynchronously retrieve map data from multiple sources and consolidate it in a single map control. In general, data sources often differ in the time it takes to respond to a request. Since the Web ADF Map control is capable of rendering map data as it is returned to the browser, it’s possible that some portion of data in the map is visible and accessible before another portion. In this case, it will likely be important to let the end user know when the map control has finished loading map data from any and all sources.

      To support this capability, 9.2 service pack 2 includes an enhanced Web ADF JavaScript Map object. The JavaScript Map object has a set of “event handlers” on the pendingTiles property. The pendingTiles property references an array of map image tiles to be rendered. The array is updated when the map needs new image tiles based on the current extent. Events on the pendingTiles property are listed below:

      Event Description
      add_onRequestsPending Triggered when the number of items in the pendingTiles array changes from 0 to a higher value
      add_onRequestsRemove Triggered when an item is removed from the pendingTiles array
      add_onRequestsCompleted Triggered when the number of item in the pendingTiles array changes to 0

      Use these handlers on the Map object’s pendingTiles property to register a JavaScript function with the event. For example:

      map.pendingTiles.add_onRequestsPending(showBusyIndicator)

      where map is the Map object and showBusyIndicator is a JavaScript function to call when the number of items in the pendingTiles array changes from 0 to a higher value.

      The JavaScript function showBusyIndicator may appear as follows.

      function showBusyIndicator(sender) {

                  showLayer("BusyIndicator");

                  if (sender!=null) {

                      window.status = "Pending Tiles: " + sender.pendingTiles.length;

                  }

      The argument to the function is a reference to the JavaScript Map object. This argument can be used to gain access to map properties, such as the number of map image tiles left in the pendingTiles array. In this example, the number of pending tiles is output to the browser window’s status bar. If the argument is null, the pendingTiles array contains 0 items. The Web ADF includes two convenient JavaScript functions to show or hide a layer (div) based on its id, named showLayer and hideLayer, respectively. The functions are contained in the display_common.js file which is by default embedded with the Web ADF controls. In this example, the showLayer function is used to make the contents in the div tag with an id of “BusyIndicator” visible.

      You can show the number of pending tiles and a "Busy indicator" in your Web application
       

      Included below is a simple Web page with a MapResourceManager, Map, and a div tag containing an image. The JavaScript Map object events are handled after the form to let the content of the form load before interacting with it.
       

      <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

      <%@ Register Assembly="ESRI.ArcGIS.ADF.Web.UI.WebControls, Version=9.2.2.1350, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86"

          Namespace="ESRI.ArcGIS.ADF.Web.UI.WebControls" TagPrefix="esri" %>

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

      <html xmlns="http://www.w3.org/1999/xhtml" >

      <head runat="server">

          <title>Untitled Page</title>

      </head>

      <body>

          <form id="form1" runat="server">

          <div>

              <esri:MapResourceManager ID="MapResourceManager1" runat="server">

                  <ResourceItems>

                  </ResourceItems>

              </esri:MapResourceManager>

       

              <esri:Map ID="Map1" runat="server" Height="453px" Width="556px" MapResourceManager="MapResourceManager1">

              </esri:Map>   

          </div>        

          

           <div id="BusyIndicator" style="z-index: 1000; left: 25px; width: 100px; position: absolute; top: 422px;height: 100px">

              <img src="images/CircleThickbox.gif" />

           </div>

         </form>

       

         <script language="javascript" type="text/javascript">

                 

              function showBusyIndicator(sender) {

                  showLayer("BusyIndicator");

                  if (sender!=null) {

                      window.status = "Pending Tiles: " + sender.pendingTiles.length;

                  } 

              }

             

              function showPendingTiles(sender) {

                  if (sender!=null) {

                      window.status = "Pending Tiles: " + sender.pendingTiles.length;

                  } 

              }

             

              function hideBusyIndicator(sender) {

                  hideLayer("BusyIndicator");

                  if (sender!=null) {

                      window.status = "";

                  } 

              }

             

              // add busy indicator functions to the map

              map = Maps["Map1"];

              map.pendingTiles.add_onRequestsPending(showBusyIndicator);

              map.pendingTiles.add_onRequestsRemove(showPendingTiles);

              map.pendingTiles.add_onRequestsCompleted(hideBusyIndicator);   

             

         </script>

       

      </body>

      </html>


      Sterling Quinn of the Server team contributed this post on configuring your web server to display custom tiles in areas where you have not yet completed your map cache.

       

      At the ESRI Developer Summit, several of you asked how we displayed a “Data not available” tile in empty areas of the ArcGIS Online services. This kind of tile can be useful if someone pans to the edge of the map or navigates to an area that you have not completed caching. Configuring your server to return a “Data not available” tile can in some cases yield a better user experience than returning nothing.


       

       

      To display the tile, you need to create a custom error response on your virtual cache directory for HTTP Error 404: “Not Found”. Instead of an error message, the Web server returns the tile.

       
      Following are steps for this process in IIS. Before you perform these steps, you should put the blank or “Data not available” tile in your cache directory. The tile you use must have the same dimensions and image format as the other tiles in the cache.

       

      1. In IIS Manager, right-click the Virtual Directory for the specific cache and select Properties.

       

      2. Click the Custom Errors tab, scroll down, and select the 404 error code.

       

      3. Click the Edit button. In the URL box, specify the tile that IIS should return whenever a tile is missing. It is important to use a URL and not just a path to a file.

       

      4. Click OK. Your dialog should look similar to the one below. Click OK again to return to IIS Manager.

       

       

      You can download a sample, "Map data not yet available" tile (512 X 512 JPG) that you can use here

       


      GIS Tech 2007 Agenda Online.

      The Agenda for GIS Tech is up on the website The green tracks are the more technically oriented sessions, mostly being given by people from the consultancy group.  There’s some good AGS talks, particularly on the second day, I’ve had a preview of some of the demo’s that Matt and Dan are doing in their Ajax\Web [...]
      You can subscribe to the aggregate feed by clicking the icon to the left, or the feed bunder badge below.
      About

      ArcExperts.net is a simple aggregator of blogs related to development of software using ESRI products.

      This site is maintained by Dave Bouwman as a free service to the GIS Developer community

      OPML File
      You can download the blog list as an OPML file from here.
      ArcDeveloper.net