Tuesday, January 29, 2008
Posted on Tuesday, January 29, 2008 6:37:22 PM (Mountain Standard Time, UTC-07:00)  Comments [4] | 
Categories: ArcGIS Server

We just ran into a issue with the ADF - namely that the ADF Geometry model does not support curves (aka "True Arcs"). Instead, it just puked up an exception stating that "curves are not supported". After doing some searching we found this thread in the forums, and this little gem stood out...

I just want to add one more thing to what Kevin said: the SP3 will handle the exception gracefully when identifying on a true arc (i.e. a message stating "Curves are not supported") instead of throwing an unhandled exception. The goal is to get this functionality fully working at 9.3.

I take this to mean that we should be grateful we ran into this now and not pre-SP3 when we would have gotten a more generic exception. Nice.

Obviously we are not the first people to run across this. There is a write up about the issue in the Knowledge Base: Bug:  Web Application Developer Framework (ADF) does not support non-linear geometry (curves)

As I noted above, it seems that the issue is that the Web ADF geometry classes can't handle curves. Fine - I can understand that it may be difficult to work with curves. Maybe implementing real curves will need to wait for v9.3 or v10 or whatever, but how about this - if a curve is sent into the Web ADF geometry how about you densify it for me? It may not be as "accurate", but "close" is a whole lot better than an exception - even if it has a nice message.

The thing is that this is the suggested solution. If you have curves, don't use the IQueryFunctionality. Instead use the IMapServer.Identify and IMapServer.Query* methods. Loop over the returned features, check if the geometries are curves, if so then densify the geometries before stuffing them into a graphics layer.

Of course it's nontrivial if you're not into the ADF in a big way, and you are hosed if you are not using a local ArcGIS Server data source, but hey what do you expect.

ESRI has put some code up on ArcScripts that shows how to deal with this for the Identify tool, but you are on your own for anything else. Fun Fun Fun.

Tuesday, January 29, 2008 12:17:09 PM (Mountain Standard Time, UTC-07:00)
This is not the first time this has come up. Back in my INGR days, ESRI would hammer us for not being "true" GIS ("true" = supporting arcs and maintaining topological data structures always).

Somewhere along the line, these became not so important for "true" GIS. So, um, nevermind. :-)
Hilary
Tuesday, January 29, 2008 6:12:26 PM (Mountain Standard Time, UTC-07:00)
Yeah, I ran into this issue early on in the 9.2 release and banged my head against a wall for awhile trying to figure out what was going on. Needless to say, this - along with a whole slew of other similar issues - has pushed me towards using the Web ADF only when *absolutely necessary.

I now do most of my web map development in a combination of .NET and the various JavaScript APIs that are currently out there, and only move to ESRI when I need support for some more advanced features.

This approach allows me to develop highly-interactive and responsive applications without getting bogged down in ESRI's buggy software.

I pity developers who have no choice but to develop on top of ESRI products.
Wednesday, January 30, 2008 7:33:06 AM (Mountain Standard Time, UTC-07:00)
One thing to note about the ESRI soultion for the identify tool:
It only checks the first arc segment for a non-linear feature type. Most polygons created with the fillet tool in ArcMap (In our case, Parcel Data) are composed of both linear and non-linear feature types.

You run into the "curves not supported error" with the provided solution if the first arc segment is linear, but there is a non-linear feature somewhere down the line within the polygon. My only work around was to loop through the entire arc segment within the polygon and densify the non-linear features (slow...slow...slow)

P.S. Same issue exists with both spatial & attribute queries. Havn't found a way to densify a polygon from a query yet. It blows up before it even brings back the geometry.

My ESRI Rep (Minneapolis) states this issue will be fixed in 9.3 and until then people have suggested coverting any non-linear feature classes into shapefiles than importing them back into feature classes (LOL)...
GISMaster
Wednesday, January 30, 2008 9:43:57 AM (Mountain Standard Time, UTC-07:00)
You can always just convert to a shapefile and back to a feature class to remove the curves. That was our temporary solution.
Comments are closed.