[Chameleon] tiff hang
Yewondwossen Assefa
assefa at dmsolutions.ca
Thu Dec 9 09:55:10 EST 2004
> Assefa, do you want to implement the MapDHTML enhancement? (please :))
> and I will fix up the query widget after the fact.
>
I will work on this early next week and update the bug 893.
> Yewondwossen Assefa wrote:
>
>> In your case, the selectOutputFormat done in drawmap.php would not
>> pick up the OUTPUTFORMAT defined in your map file but the default
>> output format created by mapserver for png24 (note that mapserver
>> creates a default output formats for all formats that are supported
>> and not defined in the mapfile. The default png24 is created like
>> this (code from mapoutput.c in mapserver):
>>
>> msAllocOutputFormat( map, "png24", "GD/PNG" );
>> format->mimetype = strdup("image/png");
>> format->imagemode = MS_IMAGEMODE_RGB;
>> format->extension = strdup("png");
>> format->renderer = MS_RENDER_WITH_GD;
>>
>> So in your case, I guess you could change the name of the
>> OUTPUTFORMAT defined in your map file to png24 :
>>
>> OUTPUTFORMAT
>> NAME png24
>> ....
>> END
>>
>> Not sure to understand the pnghacks so I can not really comment on this.
>>
>>
>> Later,
>>
>>
>> Bart van den Eijnden wrote:
>>
>>> Hi Assefa,
>>>
>>> my Chameleon app MAP file has the following:
>>>
>>> OUTPUTFORMAT
>>> NAME png
>>> MIMETYPE image/png
>>> DRIVER GD/PNG
>>> EXTENSION png
>>> IMAGEMODE RGBA
>>> TRANSPARENT TRUE
>>> END
>>>
>>> my Chameleon config has the following:
>>>
>>> <context-param>
>>> <param-name>image_type</param-name>
>>> <param-value>PNG24</param-value>
>>> <description>....</description>
>>> </context-param>
>>>
>>> So I don't see how this could explain the difference ... okay, maybe
>>> the file goes through my png alpha hack now, since it is a static
>>> image now with extension png. That must be the cause for this.
>>>
>>> So using this approach you can use pnghacks to display the image
>>> properly. I could not get the png hack to work using the drawmap
>>> approach.
>>>
>>> Thanks.
>>>
>>> Best regards,
>>> Bart
>>>
>>> On Wed, 08 Dec 2004 16:03:05 -0500, Yewondwossen Assefa
>>> <assefa at dmsolutions.ca> wrote:
>>>
>>>> Bart,
>>>>
>>>> Here is what could be happening : drawmap.php used the image_type
>>>> parameter set in chamleon.xml to select the output format that will
>>>> be used (just before the rendering). Maybe there is a diffrence
>>>> between what you setup in the map file outputformat and the one
>>>> which is selected by drawmap.php. Could this explain your problem ?
>>>> (Note that $oMapSession->oMap->selectOutputFormat($szImgType) done
>>>> in drawmap.php compares first for the mimetype and then the name
>>>> for all the outputformat defined to do it's selection).
>>>>
>>>> The approch of writing the map to a temporary file does not use
>>>> the selectOutputFormat.
>>>>
>>>> Both approchs use the same php mapscript draw function so the
>>>> output selection seems to be the only diffrence from what I can tell.
>>>>
>>>> Later,
>>>>
>>>>
>>>> Bart van den Eijnden wrote:
>>>>
>>>>> Assefa and list,
>>>>> if I use this approach the 24 bit transparency problems in
>>>>> Internet Explorer (grey background) are also gone.
>>>>> I reported those problems in the Mapserver bugzilla:
>>>>> http://mapserver.gis.umn.edu/bugs/show_bug.cgi?id=1089
>>>>> Is this explainable for you guys?
>>>>> Best regards,
>>>>> Bart
>>>>> On Wed, 08 Dec 2004 15:06:59 -0500, Yewondwossen Assefa
>>>>> <assefa at dmsolutions.ca> wrote:
>>>>>
>>>>>> Ken,
>>>>>>
>>>>>> Thanks for testing.
>>>>>>
>>>>>> AFAIK, the changes would only affect the Query widget if it is
>>>>>> used with the parameters HIGHLIGHTRESULTS and
>>>>>> PERSISTENTRESULTS. Maybe Paul can comment on other widgets that
>>>>>> I may have overlooked.
>>>>>>
>>>>>> As for the drawmap.php, It does several functionnalities (every
>>>>>> thing drawn in chamelon like map, scalebar, keymap) pass trough
>>>>>> that function. The idea behind it is that if you assigning a URL
>>>>>> to the image source (http::../drawmap.php?...), the main
>>>>>> application page does not need to wait for the map to be drawn
>>>>>> to load completly and thus It is supposed to give a better
>>>>>> "smooth" looking apps.
>>>>>>
>>>>>> Your are the 2nd person who tried this solution and reported
>>>>>> that the application was faster considerably. When using the
>>>>>> drawmap.php method, there is a time cost associated with calling
>>>>>> the server, loading the session and then drawing the map. I
>>>>>> would have imagined that this solution would improve the
>>>>>> rendering time slightly (since session loading and call to the
>>>>>> server are cut) but I am surprised a bit to know that It has
>>>>>> considerable effect since I always thought that the main bulk of
>>>>>> the time is taken by the map drawing. I guess a good profiling
>>>>>> might give us a better understanding.
>>>>>>
>>>>>> Anyhow I entered a bug 893 on this :
>>>>>> http://www.maptools.org/bugzilla/show_bug.cgi?id=893
>>>>>>
>>>>>>
>>>>>> Later,
>>>>>>
>>>>>>
>>>>>> Ken-ichi wrote:
>>>>>>
>>>>>>> Wow, not only did that solve my problem, but it increased map
>>>>>>> rendering speed considerably, even with no TIFFs! Thanks,
>>>>>>> Assefa and Paul. Adding a flag in the widget tag to do this
>>>>>>> would be really helpful. Are there any widgets that don't work
>>>>>>> with this adjustment, i.e. can I alter our "production" copy of
>>>>>>> Chameleon and expect other Chameleon projects on the server to
>>>>>>> work ok? What exactly is the purpose of drawmap.php anyway?
>>>>>>> Thanks again.
>>>>>>> -Ken-ichi
>>>>>>> Yewondwossen Assefa wrote:
>>>>>>>
>>>>>>>> The changes are minmal : here is what I did :
>>>>>>>>
>>>>>>>> 1) MapDHTML.widget.php : in function GetJavascriptVariables
>>>>>>>> (around line 468) :
>>>>>>>> comment the 3 lines and add the 3 additional lines :
>>>>>>>>
>>>>>>>> //$url =
>>>>>>>> WEBCOMMON."/wrapper/drawmap.php?map_session_mode=$nMapSessionMode&run_query=0&".SID.$szFatalImage;
>>>>>>>> //if (!$bCWCJSAPI)
>>>>>>>> //$url .= "&dummy=".urlencode(microtime());
>>>>>>>>
>>>>>>>> $oMap = $this->moMapObject->oMap;
>>>>>>>>
>>>>>>>> $img = $oMap->draw();
>>>>>>>> $url = $img->saveWebImage();
>>>>>>>>
>>>>>>>> 2) in MapDHTML.js : function MapLayerDivImgOnLoad
>>>>>>>>
>>>>>>>> comment the line : //url = url + "&UniqId="+unique;
>>>>>>>>
>>>>>>>>
>>>>>>>> Please give it a try and let me know.
>>>>>>>>
>>>>>>>> Paul, I think we can easily make this a configurable thing as
>>>>>>>> far as mapdhtml is concerned. I think there might be a problem
>>>>>>>> though with the new query widget that diplays the selected
>>>>>>>> element (and keep the selection persitently) but It can also
>>>>>>>> be solved with few changes.
>>>>>>>> What I propose is that Ken do the tests and if it solves his
>>>>>>>> problem, I will enter an enhancement bug on this with the
>>>>>>>> changes required and we can implement it after that.
>>>>>>>>
>>>>>>>>
>>>>>>>> Later,
>>>>>>>>
>>>>>>>>
>>>>>>>> Paul Spencer wrote:
>>>>>>>>
>>>>>>>>> Ken,
>>>>>>>>>
>>>>>>>>> this is very strange. Chameleon is not aware of the image
>>>>>>>>> formats of the underlying data, it just uses mapscript to do
>>>>>>>>> the drawing.
>>>>>>>>>
>>>>>>>>> Another solution to this problem may be to have the MapDHTML
>>>>>>>>> widget render the map to a file and then load the image source
>>>>>>>>> in the page rather than use drawmap.php.
>>>>>>>>>
>>>>>>>>> We did this for another client who was having a strange
>>>>>>>>> problem with images half loading due to some sort of firewall
>>>>>>>>> problem (only in IE strangely).
>>>>>>>>>
>>>>>>>>> I've cc'd Assefa since he was the one who sorted that out.
>>>>>>>>> Assefa, can you post the solution to getting MapDHTML to
>>>>>>>>> render to a file? Do you think we could make this a
>>>>>>>>> configurable parameter in the MapDHTML widget (like
>>>>>>>>> DELAYDRAW="[true|false]" or something)?
>>>>>>>>>
>>>>>>>>> Cheers,
>>>>>>>>>
>>>>>>>>> Paul
>>>>>>>>>
>>>>>>>>> Ken-ichi wrote:
>>>>>>>>>
>>>>>>>>>> Thanks Paul. I tried loading drawmap.php directly, and that
>>>>>>>>>> usually renders the map even when the Chameleon app hangs
>>>>>>>>>> (though sometimes it hangs too), so I guess drawmap.php may
>>>>>>>>>> not actually be the culprit. I made another, minimal app
>>>>>>>>>> with just the ZoomIn, ZoomOut, Recenter, and MapDHTML
>>>>>>>>>> widgets, and it still hangs on the tiffs, so I don't think
>>>>>>>>>> it's any of my custom widgets that are mucking things up
>>>>>>>>>> either.
>>>>>>>>>>
>>>>>>>>>> I am really at a loss here. The strangest thing about this
>>>>>>>>>> is that if I convert the TIFF to an Erdas Imagine file
>>>>>>>>>> (either in Erdas or with gdal_translate) everything works
>>>>>>>>>> fine. What is it about tiffs that could possibly hang up
>>>>>>>>>> Chameleon? Why would Chameleon even be aware of input file
>>>>>>>>>> format? Don't MapServer and GDAL handle that? I know
>>>>>>>>>> they're fine because a non-Chameleon phpMapScript app
>>>>>>>>>> renders the map fine, as does the CGI.
>>>>>>>>>>
>>>>>>>>>> Argh.
>>>>>>>>>>
>>>>>>>>>> -Ken-ichi
>>>>>>>>>>
>>>>>>>>>> Paul Spencer wrote:
>>>>>>>>>>
>>>>>>>>>>> Ken,
>>>>>>>>>>>
>>>>>>>>>>> to debug drawmap.php, you need to grab the URL from the image
>>>>>>>>>>> in the chameleon app and load it directly in your browser.
>>>>>>>>>>> You should then see any error messages or debug output
>>>>>>>>>>> directly. Often, problems with a broken map image are
>>>>>>>>>>> related to error messages (or notices) being output before
>>>>>>>>>>> the image contents, thus creating a corrupt image.
>>>>>>>>>>>
>>>>>>>>>>> If nothing shows up immediately on viewing the drawmap.php
>>>>>>>>>>> url, you can then start to add some debugging code (echo)
>>>>>>>>>>> to drawmap.php to try to discover what is going on.
>>>>>>>>>>>
>>>>>>>>>>> Cheers,
>>>>>>>>>>>
>>>>>>>>>>> Paul
>>>>>>>>>>>
>>>>>>>>>>> Ken-ichi wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi list. A while ago I posted an issue I'd been having
>>>>>>>>>>>> with rendering TIFFs in Chameleon
>>>>>>>>>>>> (http://lists.maptools.org/pipermail/chameleon/2004-August/thread.html#1245),
>>>>>>>>>>>> but I never really resolved it. Essentially, whenever I
>>>>>>>>>>>> zoom in on a GeoTIFF so that the TIFF fills the whole map,
>>>>>>>>>>>> Chameleon hangs and never displays the map image (I just
>>>>>>>>>>>> get the spinner icon indefinitely and then a broken image
>>>>>>>>>>>> icon behind it. Try zooming in on the DRG (Test Raster) at
>>>>>>>>>>>>
>>>>>>>>>>>> http://fisher.cnr.berkeley.edu/vtm/data/mapbrowse/
>>>>>>>>>>>>
>>>>>>>>>>>> to see what I'm talking about. I'm fairly sure this is a
>>>>>>>>>>>> Chameleon issue, most likely with drawmap.php, because
>>>>>>>>>>>> this mapfile renders just fine via the CGI, and with a
>>>>>>>>>>>> rudimentary phpMapScript app like this one:
>>>>>>>>>>>>
>>>>>>>>>>>> http://fisher.cnr.berkeley.edu/~kueda/mapscript_browse.phtml
>>>>>>>>>>>>
>>>>>>>>>>>> The DRG is a 16M GeoTIFF from the California Spatial
>>>>>>>>>>>> Information Library, so I don't think it's to blame. You
>>>>>>>>>>>> can check out my php and MapScript config at
>>>>>>>>>>>>
>>>>>>>>>>>> http://fisher.cnr.berkeley.edu/~kueda/phpinfo_mapscript.phtml
>>>>>>>>>>>>
>>>>>>>>>>>> I'm running MapServer 4.4.0, GDAL 1.2.5, and PHP 4.3.9.
>>>>>>>>>>>> Can anyone think of a reason this could be happening, or
>>>>>>>>>>>> recommend a way to troubleshoot drawmap.php?
>>>>>>>>>>>>
>>>>>>>>>>>> -Ken-ichi
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> Chameleon mailing list
>>>>>>>>>>>> Chameleon at lists.maptools.org
>>>>>>>>>>>> http://lists.maptools.org/mailman/listinfo/chameleon
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Chameleon mailing list
>>>>>>>>>> Chameleon at lists.maptools.org
>>>>>>>>>> http://lists.maptools.org/mailman/listinfo/chameleon
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Chameleon mailing list
>>>>>>> Chameleon at lists.maptools.org
>>>>>>> http://lists.maptools.org/mailman/listinfo/chameleon
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>
--
----------------------------------------------------------------
Assefa Yewondwossen
Software Analyst
Email: assefa at dmsolutions.ca
http://www.dmsolutions.ca/
Phone: (613) 565-5056 (ext 14)
Fax: (613) 565-0925
----------------------------------------------------------------
More information about the Chameleon
mailing list