With Coldfusion 8 out the door in in the hands of developers, I guess its time to ask the big question. Where is support for ArcGIS Server and Coldfusion? Obviously there was great support for ArcIMS and Coldfusion. ArcWebservices too. What about ArcGIS Server? With Flex & flash for the frontend and Coldfusion doing the heavy lifting, I see Coldfusion as an obvious choice. The vast majority of ESRI's many sites are Coldfusion based. There are a lot of Coldfusion 'haters' out there. Most if it comes from people that have never even tried it. I actually think these developers are threatened by just how easy it is to perform complex tasks with Coldfusion. Not so special are you? Maybe you arent so L33T after all huh? Bah, thats a post for another day... I don't see it being that difficult of a task on ESRI's part. Coldfusion now has the ability to use any .NET object — (local and remote) and of course like any Java object (its had this since version 6 - for those of you that don't know, Coldfusion is a J2EE application). Creating some CFC's to interface with the java classes would be the obvious way to go, at least I would think. I really see this lack of support to be a larger issue with ESRI lately. They seem to have taken the .net only stance. It certainly saves them time since you can go desktop or web (but dont forget about Adobe AIR coldfusion folks). I think that the java support was pretty much an afterthought, only there to satisfy some large clients. I think thats pretty obvious from the lack of documentation and examples. So that leaves out a huge amount of web developers - mainly the Coldfusion and PHP folks. And these are the folks that have made some of the slickest ArcIMS sites out there today. If ESRI wants to continue their dominance in the web mapping arena, they had better taken a hard look at this strategy. If I were working at ESRI, I would want to get these ArcGIS Server toolkits into the hands of as many developers as I could. Leaving out Coldfusion and PHP (and others)creates a gapping hole in the web development community. If they dont, you'll continue to see the ESRI 'user showcase' sites dominated by ArcIMS (notice how they are made with server technology, er I mean ArcIMS). How long do you think before Google releases a (Free) client side server component that lets you use your data inside Google maps? Its only a matter of time...and by then, will be too late
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
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.
Posted At : January 22, 2007 12:01 AM
| Posted By : Jason
Related Categories:
ArcIMS General
Just realized I had posted in quite sometime. Things have beyond busy here at work. We are all working as fast as we can to get things out the door, so sometimes the blog suffers. Anyway, I have finally moved my sites of to ArcIMS 9.2 for 2 reasons. The ability to enable full logging on-the-fly, without a restart AND the attribute that can be added to the layer tag -
'ignore_scale_for_query'. This is real handy for example, to highlight parcels when zoomed way (beyond its normal scale threshhold). ArcIMS can now ignore scale when trying to highlight features. Quite nice, and quite handy.
Posted At : November 20, 2006 6:46 PM
| Posted By : Jason
Related Categories:
ArcIMS General
I'll be giving a half day seminar at this years SCARC conference in Charleston, SC. Wednesday, January 24 from 8:30 AM - 12:00. This is a good local conference that draws a pretty decent crowd. So, if any of you that are IMS users are interested in finding out how to get the most of your ArcIMS sites, definitely check this out. I think the space is pretty limited (maybe 15?) so I would hurry up and sign up as soon as possible. Info on SCARC here Here is the description: ArcIMS is easy to use but hard to get right. Learn tips and tricks others have discovered to help you deliver better information. This workshop is a combination of show-and-tell and hands-on testing. Those completing this course will know or be able to do: ArcIMS do's & dont's
Importance of ArcIMS log files
AXL 'trickery'Performance tuning
ArcIMS / SDE relationship (2 tier vs. 3 tier, timeouts, hanging ArcIMS connections)
ArcMap server performance
Spatial query performance boosts
Dump your html viewer
Instructor: Jason Harris (ROK Technologies)
Location:NOAA Training Room
Who should attend: IMS developers or system designers.
Prerequisites: IMS experience.
It has been a while since I last visited this issue. A while back, I solicited some info on using ArcMap Server and its performance issues. Many of the suggestions I got were to place a pretty high premium on a video card. Well, this site of mine has 'caught on' and is getting hit hard. Performance degradation is starting to rear its ugly head. For those of you that have experience with this, do you have any hard numbers as to what kind of performance increases I should expect? What type of card (2d or 3d optimized)? Would one of those new $500 nvidia cards make a difference, or just something beside on board video? Any input would be appreciated. Thanks.
Posted At : November 13, 2006 6:09 PM
| Posted By : Jason
Related Categories:
ArcIMS General
I received my ArcIMS 9.2 final today. I installed it right away, and my first surprise was that you can now enable full logging via the ArcIMS Admin without a restart. That alone warrants a new release in my book. I'll continue to post more this week as I get to play with the final release version...
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
Well, I will be the first to admit, I had almost no experience with ArcMap server for ArcIMS. My first impressions, for the most part have held true. It is somewhat slower than a imageserver, but not as bad as I thought. It is a memory hog, no doubt. It needs to be recycled often on heavy demand sites. There are limitations to some of the Arcxml you can send it. But, I have found one HUGE benefit that I was not aware of. It does not appear to lock shapefiles while the mapservice is running. For those sites that run off shapefiles (which I try to avoid), it has always been a huge pain to stop the service to update your shapefiles. This often means a few minutes of downtime for the site, unless you get real tricky (a later post). I was pleasantly surprised when I tried to replace a shapefile, used by an MXD and the arcmapimageserver, and it worked with no file locking errors. I think thats a huge benefit that I wasnt even aware off. In certain situations, this could tip my development choice in the direction of Arcmap...
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/
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.
Hey all, just thought I'd share this nice site that we recently did for Georgia Power / Southern Company economic development. It gives the ability to search for building and property throughout the state of Georgia. It was done with .Net and ArcIMS. Here is the link if you want to check it out: https://grc.southernco.com/GPEDC/
Posted At : March 21, 2006 12:12 AM
| Posted By : Jason
Related Categories:
ArcIMS General
Well, I seem to be able to now crash the the arcims spatial server at will, with this small simple piece of arcxml.
<WORKSPACES> <IMAGEWORKSPACE directory="D:\ArcIMS\RadarImages\Mosaic" name="jai_ws-5" /> </WORKSPACES> <LAYER type="image" name="Images" visible="true" id="250"> <DATASET name="anygifimage.gif" type="image" workspace="jai_ws-5" /> <COORDSYS id="4326" /> <IMAGEPROPERTIES transparency="1.0" transcolor="255,255,255" /> </LAYER>
It seems that ANY gif added as a dynamic layer will in fact, crash this ArcIMS spatial server. A jpg or any other image type seems to work just fine. Its quite a mystery, as this has been working just fine, up until a recent reboot. Basically, the aimsserver.exe successfully creates the image from arcxml getimage request, but then crashes. It recycles itself, but it is 'out of order' for a few, but preciouos seconds after the crash. I'll be calling ESRI DSG this morning in the hopes that they can shed a bit of light on the issue. If anyone has experienced this issue, please get in touch. I'll post my findings.
Posted At : February 21, 2006 12:05 AM
| Posted By : Jason
Related Categories:
ArcIMS General
In all my years of ArcIMS application development, I have never run into an issue such as this. I know it must be in my code somewhere, but I cannot find it. Its one of those problems that you simply need to walk away from for a while, and answer will simply present itself to you....I hope. In the case, that it does not, have look at these logs.... My issue is simple. ArcIMS 'seems' to be executing the same request, twice. Even stranger you ask? Well, it does it twice in Internet Explorer and only once (correctly) in Firefox. I have never seem anything so weird in all my years of ArcIMS. All this is a simple drag-to-select-box, and the ONLY difference that I see in the 2 requests is a different MaxY in the envelope. I cannopt tell how or why that being modified. Anyway, check these out and see if you have possibly seen this before...Thing to note is the very bottom of the request, where there are 2 consecutive reponses
Begin Request [Feb 20, 2006 4:14:28 PM][4520 4644 INFO3] REQUEST: <GET_FEATURES featurelimit="3000" outputmode="newxml" geometry="true" envelope="true" globalenvelope="true" compact="true"> <LAYER id="0"> </LAYER> <SPATIALQUERY subfields="#SHAPE# objectid" featurelimit="3000" searchorder="spatialfirst" > <SPATIALFILTER relation="Area_Intersection" > <ENVELOPE minx="1155766.00771" miny="581953.484089" maxx="1198343.55534" maxy="581953.484089" /> </SPATIALFILTER> </SPATIALQUERY> </GET_FEATURES>
[Feb 20, 2006 4:14:28 PM][4520 4644 INFO1] GET_FEATURES: gospatial [Feb 20, 2006 4:14:28 PM][4520 4644 INFO2] <GET_FEATURES> QS start processing... [Feb 20, 2006 4:14:28 PM][4520 4652 INFO1] Begin Request [Feb 20, 2006 4:14:28 PM][4520 4652 INFO3] REQUEST: <GET_FEATURES featurelimit="3000" outputmode="newxml" geometry="true" envelope="true" globalenvelope="true" compact="true"> <LAYER id="0"> </LAYER> <SPATIALQUERY subfields="#SHAPE# objectid" featurelimit="3000" searchorder="spatialfirst" > <SPATIALFILTER relation="Area_Intersection" > <ENVELOPE minx="1155766.00771" miny="581953.484089" maxx="1198343.55534" maxy="615814.368427" /> </SPATIALFILTER> </SPATIALQUERY> </GET_FEATURES>
[Feb 20, 2006 4:14:28 PM][4520 4652 INFO1] GET_FEATURES: gospatial [Feb 20, 2006 4:14:28 PM][4520 4652 INFO2] <GET_FEATURES> QS start processing... [Feb 20, 2006 4:14:28 PM][4520 4644 INFO2] Features sent: 0 [Feb 20, 2006 4:14:28 PM][4520 4644 INFO1] Total Request Time: 0.140000s [Feb 20, 2006 4:14:28 PM][4520 4644 INFO1] End Request [Feb 20, 2006 4:14:29 PM][4520 4652 INFO2] Features sent: 1 [Feb 20, 2006 4:14:29 PM][4520 4652 INFO1] Total Request Time: 0.260000s [Feb 20, 2006 4:14:29 PM][4520 4652 INFO1] End Request
Posted At : January 9, 2006 6:50 PM
| Posted By : Jason
Related Categories:
ArcIMS General
I can't even remember how long that ArcMap server has been around. I do remember that it was so full of memory leaks that I vowed I would never use it. Well, thats not entirely true. I did test it out once with one of my apps, and it worked ok. The problem was that I did way to many things with my AXL Requests that ArcMap server just didn't like. So, I cast it off, never to return. Until now. I have a project coming starting that will be a fairly high volume site. It also needs really nice looking maps. So, I checked out one of those mxd's from the ESRI data and map cd's and it looks pretty darn good. Good enough to use in this app. The good news is that there is absolutely nothing fancy about this application - at least nothing that would require any hardcore arcxml. Just a map and a few acetate layers. So....Can anyone attest to the stability of ArcMap Server these days? Can I safely use it on a high volume site? Any input?
More Entries
|