Installing the WMS Connector with Coldfusion, Jrun, and Tomcat

Recently I was asked to install the ArcIMS WMS connector on a server that was running ColdFusion (JRun) as the Servlet Connector. I searched for ways to configure the two to work together but I had no luck. My next thought was to see if Tomcat 5.5 and JRun could run on the same server, it turns out they can. Below are the steps to set this up.

Step 1:
If you already have ArcIMS installed, uninstall it.

Step 2:
Follow the instructions located here. An important piece of the instructions from that link that is misleading comes in to play when you are installing Tomcat. It says you can install it to C:\Program Files\Apache Software Foundation\Tomcat 5.5 or C:\Tomcat5.5. I highly recommend installing to C:\Tomcat5.5, I was unable to get the redirect working with it installed to C:\Program Files\Apache Software Foundation\Tomcat 5.5. When installing ArcIMS: at the Web Server-Servlet Engine Configuration dialog box, select 'IIS with Tomcat 5.5'. You will still need to follow the instructions for configuring CF and ArcIMS, found here. This is so CF and ArcIMS can still communicate.

Step 3:
Now we need to test to see if the WMS connector is configured correctly. http:///wmsconnector/com.esri.wms.Esrimap?cmd=connectorping The display will say Enabled=False at this point. Now go to the following link: http:///wmsconnector/index.htm Select the Connector Properties link at the top and fill in the form. Change Enabled to from False to True. Click submit.Check to see if the Map Services have wms capabilities. If you refresh a map service you must choose Update Services in order for the changes to take place.

My Coldfusion 8 / ArcIMS/ ArcWeb hybrid site picked up by ESRI's ArcNEWS

A site that I did a while back just got published in ESRI's ArcNews print magazine. ArcNews is a quarterly magazine dedicated to showcasing ESRI's GIS technology, software, user case studies, etc. They never give you a heads up when they publish these sites...so its always a nice surprise to see one get published. I developed the site with Coldfusion 7, but its now running on 8. I wish 8 was around when I did this one...I can think of a bunch of stuff I would have done differently.

The North Carolina Alternative Fuel Stations Map helps people in North Carolina locate stations offering alternative fuels, such as hydrogen, biodiesel, and ethanol. Visitors to the site can request information based on fuel type, proximity to an interstate highway, ZIP Code, and more.

Anyway, the site itself is a ArcIMS / ArcWEB services hybrid site. I use ArcWeb for much of the basemap data, and perform the spatial searches & locally using ArcIMS. I dont actually merge the images, but rather I create my ArcIMS images with a transparency and overlay them on the ArcWeb images. Also of note, ArcWeb services has released a Flex api, which looks pretty cool, which you can check out here. I plan to dig a bit deeper into that soon.

Coldfusion Based ArcIMS Public Viewer Sites

Here is a updated list of sites that we have just recently released. All of them are Coldfusion 7 / ArcIMS based sites. Each one is a little different that the other. Everyone has specific tools they like.

The list is growing everyday. Below are the ones that we have officially 'released' There are are also many currently in beta. I must tell you, I have been very pleased with the number of deployments. From all the feedback from the counties/cities themselves, it sounds like they are happy too. Thanks to everyone (especially Cotter) for making it a success.

For the future, I really cant wait for CF 8. It will make some of the ajax based interaction even easier. Also, the slow migration to ArcGIS server has begun. However, I'd really like to see to better support from ESRI on the Coldfusion front. I plan to post a 'call to arms' for all of us Coldfusion / ESRI folks soon...But for now, check out the sites!

Durham County, NC
City Of West Palm Beach, FL
Davie County, NC
Alexander County, NC
Henderson County, NC
Hertford County, NC
Warren County, NC
Union County, NC
Onslow County, NC
Santa Rosa County, FL

Coldfusion 8 & ArcIMS 9.2

Well, just a quick update...Coldfusion 8 and ArcIMS 9.2 seem to play together nicely. At least the cfx_esrimap works ok. While I have not fully tested my apps against 8 yet, I have heard reports of pretty substantial speed increases (which sort of surprises me...they are quite fast already). Next up is to see how 8 does with ArcGIS Server.

ArcIMS - Arcweb Services Hybrid Site

I did this site a while back and forgot to post it:

Centralina Clean Fuels Coalition

Its a site that helps people locate fuel stations that offer alternative fuels, like electric, hydrogen, biodiesel, etc. It does some cool buffer queries, like find all the Hydrogen stations within 25 miles of Interstate 95 or within 25 miles of just about any city in the state. But, the real cool thing is that it makes use of both ArcIMS and ArcWeb services.

This project really needed very detailed and accurate base map data like streets. But, the budget was pretty low...so purchasing those datasets was out of the question. The best solution to this problem was to use arcweb services. Lucky for me, consuming these services with SOAP in Coldfusion is about as easy as it gets. All I really had to do was to pass the response envelope generated by ArcIMS to Arcweb. That gave me a very nice, and accurate background image. I didnt mess with the MapFusionOptions object at all though. Instead, to combine the 2 output images, I just dropped the arcweb image behind the output image of ArcIMS on the page. I set the transcolor and background of the arcims image to white and it was as easy as that. Came out pretty good.

Update on the 9.2 Coldfusion Connector bug

Micheal Lippman has logged this issue with ESRI, and they have confirmed it as a bug:

"I talked with the programmer assigned to look into this issue. It appears that this issue is a bug in our software. The mfc71.dll file should have been part of our install. There are some Visual Studio libraries that we include in our install that are dependencies of our own library files. The difference between ArcIMS 9.1 and 9.2 is that in 9.1, we were dependent on the mfc42.dll which is a Windows system file. In 9.2, this changed and the dependency is now on the mfc71.dll. We're working on correcting this in our install, and apologize for the inconvenience."

For the meantime, until this is corrected, you can use the existing 9.1 Coldfusion connector files, and they will work.

I have attached a file below(see download link below). The zip actually contains 2 other zip files. The name of the files should direct you to where they belong. Hope this helps.

ArcIMS 9.2 Coldfusion Connector Big BUG

Ok, here is a good one. I now have a few ArcIMS 9.2 installs under my belt. All went well, and for the most part, I am happy with 9.2. Of course, readers of the blog may already know, I am a hard core Coldfusion advocate and user of the Coldfusion Connector for ArcIMS. So, I use the Coldfusion Connector, a lot.

On a recent ArcIMS 9.2 install, I went through my normal paces. Changing the jvm.config file and registered the cfx_esrimap tag, etc etc, just as I normally do. To my surprise, I received the dreaded 'Cannot Load tag library' that we all saw when Coldfusion moved to version MX 6.

Not having seen this type of issue in quite some time, I sat looking at the screen perplexed. How could this be? I have done several 9.2 installs without issue. What is different with this install? Everything appeared to be the same as other installs...except for 1 thing. The successful installs were upgrades...they previously had 9.1 installed.

So, first thing I do is uninstall 9.2 and install 9.1 and I am able to connect to Arcims via Coldfusion without issue. Hmm. After probably a dozen installs, uninstalls of 9.1, then 9.2, then back to 9.1 I figured out the solution.

In order to get the ArcIMS coldfusion connector to work, I had to first install 9.1 with the connector, then uninstall. Then, install 9.2 with the coldfusion connector. During the post install, simply skip the Coldfusion portion of the post-install routine. This leaves all the 9.1 libraries intact in the Coldfusionmx7/bin directory. After that, it should work.

Good luck...And hopefully esri will clear this up quick.

EDIT: I attached the files that are in cfusionmx7\bin. They also need to be in arcims\connectors\coldfusion. Dont forget to edit that jvm.config too (in a previous post). Hit the DOWNLOAD link below.

When AJAX is useful

You can't get through a single day anymore without hearing something about AJAX and web 2.0, yada yada. Personally, I think it is all nonsense. Those useless cloud tags and whatever the latest 'feature' is, are worthless...people put AJAX on their sites just to say they did.

There are of course, huge exceptions. There are some applications that make wonderful use of it. First, are the latest generation of mapping applications (google maps, yahoo maps, etc). The seamless panning feature that we all come to expect now is just amazing. It has been difficult to implement that feature in true GIS viewer. All of those images have fixed zoom levels (and are 'premade' - not on the fly like a true GIS) and it would be insanely difficult to pre-process all the different map layer combinations that a user may wish to see. ESRI says they will be implementing a seamless pan feature in the ArcIMS 9.2 html viewer. I am very interested in seeing how they pull it off.

The next great example of AJAX use, is the suggest feature. You know, when you type in a text box, and it attempts to 'fill in' or suggest what you are typing. This is a fantastic feature that I decided that I really needed to add to my sites.

My problem was that when folks search for streets, or parcel owners, or geocode (you get the idea), its important for the user to type in the street name exactly. That means people could type Main Street or Main or Main ST or North Main St, or N Main, etc etc. Of course, we can wildcard it and get all of them and then let the user pick which one they meant - but that means extra steps for the user. So, the solution was to put all the distinct values in a drop-down and force the user to select it. That means more data to download and a lot of street names to scroll through (some places have a huge number of streets).

What if the owner name is LastName, FirstName or maybe Firstname Last name. That's difficult for the user to figure out - they would have to know how it is listed in the database exactly.

So, wouldn't it be nice to use AJAX to provide suggestions to the user? So, I finally got around to it. At least I waited until it was useful.

My thanks to Arjun, who created CFAJAX. CFAJAX makes in ridiculously easy to implement AJAX functionality with Coldfusion. If you want to check out the site that I did that uses this new suggest feature, its Here

New Coldfusion ArcIMS Based Mapping site

Well, the newest version of our public viewer is being released today. It was built with Coldfusion 7, ArcIMS 9.1 and SqlServer 2000/SDE 9.1. I have another instance of SqlServer 2005/SDE serving the imagery.

The code is based off our intranet application called Gospatial, which has been deployed in many local governements and private organizations. I basically redid the entire interface to make it much cleaner, and I hope easier for the public to understand and use. Our number one biggest complaint from folks when doing the public access types of sites is 'I want more map'. So, we gave it to them. The entire screen becomes the map, with the ability to show/hide transparent divs that control the map layers , overview map, results, tools, etc. I think it came out really nice.

There are a few issues that still need to be worked out. I have some VML based drawing tools included, and as we all know, thats an IE only implementation. So, a few tools have to be disabled for mozilla users. Or, you can grab IE Tab which enables IE rendering from within Firefox. its actually a very handy plugin to have. The site only supports IE, Netscape and Firefox for now. I need to see whats going to happen with IE 7 before I do anything else. I hate having to write basically 3 separate applications.

Anyway, this is the first release, so I expect a few glitches ramping it up. If anyone encounteres anything funky, please let me know. So, here it is:

http://santarosa.roktech.net/gomaps/

How To Use Someone Else's Data In YOUR Arcims Application

Well, first, I should say that you probably shouldn’t do this. It certainly straddles that gray area. It just shows what is possible with ArcIMS if you are determined.

First, the most you'll need to familiarize yourself with the most indispensable tool, www.mapdex.org. At mapdex, Jeremy (using Coldfusion of course)has created a tool so cool, you'll just have to see it to believe it. It allows you to search on publicly available Arcims map services. Actually, they are probably more like map services that people forgot to lock down. Anyway, run a query there and you'll get all sorts of good info, like server name, ip, map service name, layer names, etc. Also, much of this idea stems from Jeremy's own mapdex code.

Ok, now that you have found the layer you wish to use, and you have all the vital info that you'll need you can get started.

My example assumes a lot, and if you do try this, you'll likely need to modify it to suit your needs with your language of choice. The basic idea remains the same...send a http request to the remote server via the servlet connector for the layer you wish to display. You'll need to send this request before you send your 'normal' arcxml request that you are sending to your local server. Just be sure to use the same ENVELOPE and set the background to transparent in the request. Below is a coldfusion example of the ArcXML request.


<!--- Get this info from MapDex --->
<cfset servername = 'remoteservername'>
<cfset mapservice = 'mapservicename'>

<cfoutput>
<!--- Save the request in a variable --->
<cfsavecontent variable="arcxml">
<ARCXML version="1.1">
<REQUEST>
<GET_IMAGE>
<PROPERTIES>
<IMAGESIZE width="#iwd#" height="#iht#"/>
<ENVELOPE minx="#MinX#" miny="#MinY#" maxx="#MaxX#" maxy="#MaxY#"/>
<OUTPUT type="GIF" />
<FEATURECOORDSYS id="#Coordsystem#"/>
<FILTERCOORDSYS id="4326"/>
<LAYERLIST order="true" >
<LAYERDEF id="Name_Of_The_Layer_You_Want" visible="true"/>
</LAYERLIST>
<BACKGROUND color="255,255,255" transcolor="255,255,255"/>
</PROPERTIES>

</GET_IMAGE>
</REQUEST>
</ARCXML>
</cfsavecontent>
</cfoutput>

Once you request is made, send the request to the server and parse the reponse. Again, thanks to Jeremy for this code.


<!---Submit arcxml request to the remote server--->
<cfset curl ='http://' & #servername# & '/servlet/com.esri.esrimap.Esrimap?ServiceName=#mapservice#&ClientVersion=4.0.1'>
<cfhttp method="post"
url='#curl#'
timeout = "30">

<cfhttpparam encoded="no" type="body" name="ArcXMLRequest" value="#arcxml#">
</cfhttp>

<!---Parse response--->
<CFSET sResponse = #replace(cfhttp.FileContent,'<?xml version="1.0"?>',"")#>
<cfset in_requestaxl = #arcxml#>
<cfset out_responseaxl = #trim(sResponse)#>

<cfset response_axl = #xmlparse(out_responseaxl)#>
<cfset OUT_IMAGEURL="#response_axl.arcxml.response.image.output.xmlattributes.url#">


<!---If response envelope has an nls_lang type of ',.' (European--commas as decimals) then replace commas with decimals--->
<cfif (IsNumeric(response_axl.arcxml.response.image.envelope.xmlattributes.minx) eq "NO") or (IsNumeric(response_axl.arcxml.response.image.envelope.xmlattributes.miny) eq "NO")>
<cfset OUT_MinX="#replace(response_axl.arcxml.response.image.envelope.xmlattributes.minx,",",".","ALL")#">
<cfset OUT_MinY="#replace(response_axl.arcxml.response.image.envelope.xmlattributes.miny,",",".","ALL")#">
<cfset OUT_MaxX="#replace(response_axl.arcxml.response.image.envelope.xmlattributes.maxx,",",".","ALL")#">
<cfset OUT_MaxY="#replace(response_axl.arcxml.response.image.envelope.xmlattributes.maxy,",",".","ALL")#">
<cfelse>
<cfset OUT_MinX="#response_axl.arcxml.response.image.envelope.xmlattributes.minx#">
<cfset OUT_MinY="#response_axl.arcxml.response.image.envelope.xmlattributes.miny#">
<cfset OUT_MaxX="#response_axl.arcxml.response.image.envelope.xmlattributes.maxx#">
<cfset OUT_MaxY="#response_axl.arcxml.response.image.envelope.xmlattributes.maxy#">
</cfif>

Then finally, perform a second http request, but this time a GET to retrieve the created image and save it locally to your server.



<cfif IsDefined("out_imageurl")>
    <cfset filename = #CREATEUUID()#>
    <cfhttp method="Get"
    url="#out_imageurl#"
    path="D:\GIS\remoteimages"
    file="#filename#.gif">

     <cfset Overlay = #out_imageurl#>
</cfif>

Ok, almost done...you just need to add the remote (but now local image) to you own map request. I found the best way is to include it as a RASTERMARKERSYMBOL:



<LAYER type ="ACETATE" name="Marker" id="Marker">
<OBJECT units="PIXEL">
<COORDSYS id="4326" />
<POINT coords="#pointx# #pointy#">
<RASTERMARKERSYMBOL overlap="true" url="http://#localservername#/remoteimages/#filename#.gif" image="D:\webroot\remoteimages\#filename#.gif" />
</POINT>
</OBJECT>
</LAYER>

PointX and PointY are Width and Height divided by 2 respectively, so that you can place your rastermarkersymbol image in the center.

That’s it...have fun.

Projection Help

I'm the first to admit, I know nothing about projections. Ok, good that is out of the way. Now someone take a look at this and see if you can help me out.

I have a string of Lat Lon 's that make up a nice long poly line that need to be projected in North America Lambert Conformal Conic. I set up ArcIMS to reproject the map data, its just these acetates layers (the line) that are giving me an ulcer.

I am using this code below, graciously shared by Jim Welch, to go the conversion. However, it looks like my calculations are off slightly. Does this look righ to you? Should I be figuring in the Standard Parallel 1 and Standard Parallel 2 anywhere or does that matter at all?

Also, I am getting passed a map 'width' and a map 'height' which is just how many degrees wide the map needs to be. Lets say they are both 2 degrees. Whats the best way to calculate my new envelope?

Any help would be appreciated. Thanks.


<cfscript>
lon_center = (-96/57.2958); /* Center longitude (projection center) */
lat_center = (40/57.2958); /* Center latitude (projection center) */
r = 6370997; /* Radius of the earth (sphere) */
sin_lat_o = sin(lat_center); /* Sine of the center latitude */
cos_lat_o = cos(lat_center); /* Cosine of the center latitude */
false_easting = 0; /* x offset in meters */
false_northing = 0; /* y offset in meters */
returncoords = "";
</cfscript>
<cfscript>
longitude = (#LISTGETAT(MarkArray[i],1)#/57.2958);
latitude = (#LISTGETAT(MarkArray[i],2)#/57.2958);
/* Forward equations */
delta_lon = (longitude - lon_center);
sin_lat = sin(latitude);
cos_lat = cos(latitude);
cos_delta_lon = cos(delta_lon);
g = (sin_lat_o * sin_lat) + (cos_lat_o * cos_lat * cos_delta_lon);
</cfscript>
<cfscript>
ksp = R * sqr(2.0 / (1.0 + g));
sin_delta_lon = sin(delta_lon);
Proj_longitude = (ksp * cos_lat * sin_delta_lon) + false_easting;
Proj_latitude = ksp * (cos_lat_o * sin_lat - sin_lat_o * cos_lat * cos_delta_lon) + false_northing;
</cfscript>

Coldfusion ArcIMS JRUN Configuration

People that use ArcIMS know that we must have a servlet engine for it to work properly. This means that most folks folks either purchase ServletExec or struggle Tomcat. What most people don't realize is that Coldfusion is using JRUN as its own 'internal' servlet engine. So, why not save a step and use that with your ArcIMS configuration? Geez, you can almost purchase Coldfusion outright for what it costs to buy ServletExec.

So, here are the instructions to perform a ArcIMS install using Coldfusion's internal JRUN as your servlet engine. I have also tossed in some of the tricks to get the cfx_esrimap.dll tag registered with Coldfusion 7.

Browse to: \ArcIMS\Connectors\Servlet

Copy the com directory and the three files Esrimap_prop, ServletConnector_Res.properties and ServletConnector_Res_en_US.properties.

C. Paste them into the servlet location at: c:\CFusionMX7\wwwroot\WEB-INF\classes

D. In a text editor; for example, Notepad, open: c:\CFusionMX7\wwwroot\WEB-INF\classes\Esrimap_prop.

E. Edit appServerMachine=APPSMACHINE to point to the machine where the ArcIMS Application Server is installed; for example, change it to appServerMachine=mymachine or appServerMachine=IP. Change appServerClientPort=5300 only if a different port was selected.

F. Close and save the file.

G. In a text editor; for example, Notepad, open: c:\Program Files\ArcGIS\ArcIMS\Connectors\Servlet\Esrimap_prop and make the same changes that you did in step E. Save file.

H. Open up the CFMX administrator, and register the CFX_ESRIMAP.dllTag Name: cfx_esrimap Server Library: C:\CFusionMX7\runtime\bin\cfx_esrimap.dll Procedure: ProcessTagRequest

I. Edit C:\CFMX7\bin\jvm.config file

Change the java.library.path entry to include the two directories containing the ArcIMS shared libraries.

C:/Program Files/ArcGIS/ArcIMS/Middleware/CF_Connector/bin,C:/Program Files/ArcGIS/ArcIMS/Connectors/ColdFusion/Server

Change the java.class.path entry to include the one directory containing the ArcIMS Java classes.

C:/Program Files/ArcGIS/ArcIMS/Connectors/Servlet

Note that forward slashes are used even on Windows, and that the list is comma delimited.

Note that the java.library.path entry and the java.class.path entry are each a single long line.

Restart the CFMX Service from the windows control panel.

Out_QueryTable

Us Coldfusion ArcIMS folks have grown to love and hate the Out_Querytable variable. For those of you that don't know what Out_Querytable is, its a query object that gets returned from Coldfusion after you send a query (spatial or attribute) to ArcIMS. This is very handy to have - becasue Coldfusion works so well with these types of objects. For you windows based folks, its essentially the same as a recordset.

The good: You can loop over them, display them, make a nice value list, query them (with coldfusion's ability to query an existing query object). Basically anything that you can do to a coldfusion query object, you can do to the Out_Querytable variable.

The bad: Things tend to get a bit hairy when you use ArcSDE based data. Who uses shapefiles these days anyway...The biggest issue for me are column names that get returned. For example, lets say I query roads. The columns that get returned will be fully qualified - like DBName.Owner.Tablename (in the case of SQl Server). Now try making a nice valuelist with VALUELIST(Out_QueryTable.DBName.Owner.Tablename) and see what evil things happen. Luckily, a few years back, James Welch (where are ya these days James?) created a sweet custom tag called cf_ArcSDEquery, which essentially converts the query to wddx, fixes it, at converts it back to a query object. The tag used to be on ArcScripts, but I haven't seen it there in quite some time. So, I'll attach it for everyone if they don't already use it.

I also do lots of multiple spatial queries right after each other - like in a drill down identify. The problem is that lets say I find a result in the first, but not the second, and then the 3rd returns a result. If, after each query, I test to see IsDefined("Out_QueryTable") then run some processing...Its going to bomb after the 2nd spatial query - becasue it does exist - but not from that query. Of course, you can rename your queries and do all sorts of crazy work arounds to compensate for this. However, I recently discovered a fantastic undocumented function - removeRows:


Queryname.removeRows(startrow,endrow)
So, this means now that I can perform a spatial query, test for the results, do something with the results, and then remove the rows from the Out_querytable object. Then, I can move on to the next operation...Something like this:


<cfoutput>
<cf_arcims action="Request"
servicename="#mapservicename#"
servername="#mapservername#"
serverport="#mapserverport#"
GenerateHTML="false"
ParseResponseAXL="true"
CustomService="Query"
>


<?xml version="1.0"?>
<ARCXML version="1.1">
<REQUEST>
<GET_FEATURES checkesc="true" outputmode="newxml" geometry="false" envelope="true" compact="false" featurelimit="250">
<LAYER type="featureclass" name="Bufferlayer" id="#PARCELLayerID#"/>
<DATASET fromlayer="#PARCELLayerID#" />
<SPATIALQUERY searchorder="attributefirst" where="objectid IN (#featureID#)">
<BUFFER distance="0" bufferunits="FEET" >
<TARGETLAYER id="#SOILSLayerID#" />
</BUFFER>
</SPATIALQUERY>
</GET_FEATURES>
</REQUEST>
</ARCXML>
</cf_arcims>
</cfoutput>


<cfif Out_QueryTable.recordcount GT 0>
<cf_ArcSDEquery query="OUT_QueryTable" output="Out_QueryTable">
<cfset SRCSOILSValueslist = quotedvaluelist(Out_QueryTable.ObjectID)>
<CFQUERY NAME="SOILSResults" DATASOURCE="#dsn#">
SELECT MUName
FROM SRCSOILS
WHERE ObjectID in (#PreserveSingleQuotes(SOILSValueslist)#)
</CFQUERY>
</cfif>
<!--- Use this function to delete all the rows from the query --->
<cfset temp = OUT_QueryTable.removeRows(0,OUT_QueryTable.recordcount)>

Then I can do the next drill down spatial query....Hope that makes sense and or helps someone out. Don't forget, here is the code for the cf_ArcSDEquery which will makle your life sooo much easier when working with SDE data:


<cfsetting enablecfoutputonly="yes">
<cfparam name="attributes.output" default="NewQry">

<cfif not isDefined("caller.#attributes.query#")>
<cfoutput>ArcSDEquery - #attributes.query# is not a valid Query and cannot be returned as #attributes.output#</cfoutput>
<cfabort>
</cfif>

<cfif FindNoCase("OBJECTID", evaluate("caller.#attributes.query#.columnlist"))>
<!--- arcsde --->
<cfset oldCols = Evaluate("caller.#attributes.query#.columnlist")>

<!--- setup new col names --->
<cfset aGoodCols = "">
<cfloop index="c" list="#oldCols#">
<cfset aGoodCols = ListAppend(aGoodCols, ListGetAt(c,ListLen(c,"."),"."))>
<cfif FindNoCase("ObjectID",c)>
<cfset caller.objectid = "#c#">
</cfif>
</cfloop>
<!--- convert to WDDX Packet --->
<cfwddx action="CFML2WDDX" input="#Evaluate("caller.#attributes.query#")#" output="OrigQryWDDX">
<!--- replace invalid names in fieldNames list --->
<cfset goodColWDDX = OrigQryWDDX>
<cfloop index="col" from="1" to="#ListLen(oldCols)#">
<cfset goodColWDDX = ReplaceNoCase(goodColWDDX, "#ListGetAt(oldCols,col)#", "#ListGetAt(aGoodCols,col)#", "all")>
</cfloop>

<!--- Turn the packet back into a query --->
<cfwddx action="WDDX2CFML" input="#goodColWDDX#" output="NewQry">
<cfelse>
<!--- not arcsde --->
<cfset NewQry = Evaluate("caller.#attributes.query#")>
</cfif>
<cfset "caller.#attributes.output#" = NewQry>
<cfsetting enablecfoutputonly="no">

ESRI User Conference In Full Swing

Well, I suppose by now the conference is in full swing. Unfortunatley, I couldn't make it this year. But, after working on a grueling Routemap IMS Coldfusion project (yes, you did read that correct), I have decided to take a few days off and have a couple of my college buddies who I haven't seen in a while come down to visit.

I trust all you guys will let me know how the conference is going. I am especially interested to hear how the Coldfusion Arcims Users Group meeting went.

Coldfusion ArcIMS Users Group Meeting

Hey all, unfortunately, I can't make it to this years meeting at the user conference, but fellow Coldfusion developer (and the creator of mapdex.org), Jeremy Bartley will be running the show. Here are the details of the meeting from Jeremy:

Fellow CF/ArcIMS developer-

You don't know me, but I am in charge of putting together the third annual ArcIMS-CF users group get-together at the ESRI users conference this year. The meeting will be on Thursday July 28 from 12:15-1:15 in room 3 (SDCC). We are pleased this year to have Mike Nimer of Macromedia attend our session. Mike is a ColdFusion MX engineer with experience building GIS applications. Mike also has extensive experience with CF Flash Forms that he can share with us. Margaret Lyszkiewicz from the ArcIMS development team at ESRI will also join us. Margaret is an accomplished developer who has been carrying the CF flag at ESRI for years. We are honored to have Mike and Margaret at our meeting this year. This is your chance to give advice to the developers of the software you use most (CF and ArcIMS).

Don’t miss it!

More Entries

BlogCFC was created by Raymond Camden. This blog is running version 5.9.1.002. Contact Blog Owner