JPEG 2000 format instead of TIFF for a RASTER layer

Brant Anderson brant at MUDLABS.COM
Thu Aug 26 16:24:50 EDT 2004


Okay.

This time I compiled 'jasper' without the geo referencing 'geojasper' so
now I am using plain Jasper.
I then compiled GDAL with the new ungeofied (GeoJP2=no) Jasper library.

Then I tried to view my map. The server didn't give an Internal Server
Error this time! But a new problem is here. The images just don't show
up. I viewed the JPEG2000 images with "Image Viewer 2" in Windows, and
they appear just fine, so I know they are supposed to be there. The
layer used for tiling uses the same shapes as the TIFF version did, so
the Extent values should be proper.

Next I compiled a new Mapserver. Wondering if the new GDAL needs to be
reflected in the Mapserver compilation.
Then I tried to view my map again. The orthophotos still are not there.

Is there a way to display an image using Mapserver without using an
extent, just to test if Mapserver is displaying the graphic at all? I
would like to know if the image is not being processed correctly, or if
it is just out of the viewport of my map. I did zoom out aways, to see
if the images were near by, but no such luck.

Thanks,
Brant



Brant Anderson wrote:

> I ran 'gdal_translate' and it converted the JP2 image perfectly.
>
> This is the text it sent to the console:
> Input file size is 108, 420
> GeoJp2 info found...
>
> I notice a simularity in the second line gdal_translate's output and
> the 'malformed header' apache error.
> Snip from Apache error log:
> Bad header=GeoJp2 info found...
>
> Hmmm... I am getting closer. My guess is that the output from the
> translation utility is getted slapped to the begining of the header
> that is sent to Apache. This would make the header invalid, which in
> turn, would cause Apache to choke with the Internal Server Error.
>
>
> More insight needed.
>
> Thanks,
>
> Brant
>
>
>
> Ed McNierney wrote:
>
>> Brant -
>>
>> Thanks - I guess I must have slept through that one <g>.  Considering
>> that I'm a rather heavy user of tile indexes, I guess I should pay
>> more attention!
>>
>> You might want to try one of the GDAL command-line tools to read the
>> JP2 files you've got - maybe just convert one to a TIFF.  That would
>> help ensure that you've (a) got valid JP2 files and (b) that GDAL's
>> working correctly at least in that case.
>>
>>     - Ed
>>
>> Ed McNierney
>> President and Chief Mapmaker
>> TopoZone.com / Maps a la carte, Inc.
>> 73 Princeton Street, Suite 305
>> North Chelmsford, MA  01863
>> ed at topozone.com
>> (978) 251-4242
>>
>>
>> ------------------------------------------------------------------------
>> *From:* UMN MapServer Users List
>> [mailto:MAPSERVER-USERS at LISTS.UMN.EDU] *On Behalf Of *Brant Anderson
>> *Sent:* Thursday, August 26, 2004 2:18 PM
>> *To:* MAPSERVER-USERS at LISTS.UMN.EDU
>> *Subject:* Re: [UMN_MAPSERVER-USERS] JPEG 2000 format instead of TIFF
>> for a RASTER layer
>>
>> The two layer combination is the "new way" of doing tile indexes. I
>> have tried both the original and the new ways.
>>
>> Look at this post:
>> http://mapserver.gis.umn.edu/data2/wilma/mapserver-users/0405/msg00799.html
>>
>> After seeing this message in the apache error log...
>> [Thu Aug 26 02:29:45 2004] [error] [client 192.168.1.101] malformed
>> header from
>> script. Bad header=GeoJp2 info found...: /usr/lib/cgi-bin/mapserv421
>>
>> ... I am wondering if it is an internal Mapserver/GDAL/Apache error.
>> I looked up "malformed header" on the Apache site.
>> http://search.apache.org/index.cgi?query=malformed+header&what=docs1&brief=1&submit=Search%21
>> Result 2 Apache HTTP Server: Notes about Compatibility with NCSA's
>> Server <http://httpd.apache.org/docs/misc/compat_notes.html> looks to
>> be the most relevant result.
>>
>> This line...|
>> exec cgi=""| produces reasonable *malformed header* responses when
>> used to invoke non-CGI scripts.
>> The NCSA code ignores the missing header (bad idea).
>> Solution: write CGI to the CGI spec and use |include virtual|, or use
>> |exec cmd=""| instead.
>> ...appears to be somewhat related. I'm not familiar with the
>> interworkings of Apache, so I'm not sure.
>>
>> I feel confident that my syntax is correct. I have beat it to death!
>> For some reason, gdal-config is telling me that I have JPEG2000
>> support. I know that it was compiled in. But maybe the way gdal is
>> calling the JPEG2000 conversion isn't working via the web-server.
>>
>>
>> Any insight?
>>
>> Thanks,
>> Brant
>>
>>
>>
>> Ed McNierney wrote:
>>
>>> Brant -
>>>
>>> You've posted two LAYER definitions - what's the second one for?
>>> The default field name used to look up the name of the image file is
>>> not "PATH" - that's why there's a TILEITEM statement in the second
>>> LAYER definition you've posted.  But there is no such TILEITEM
>>> statement in the LAYER where you're trying to use the JPEG2000 files.
>>>
>>>     - Ed
>>>
>>> Ed McNierney
>>> President and Chief Mapmaker
>>> TopoZone.com / Maps a la carte, Inc.
>>> 73 Princeton Street, Suite 305
>>> North Chelmsford, MA  01863
>>> Phone: +1 978 251-4242   Fax: +1 978 251-1396
>>>
>>>
>>> ------------------------------------------------------------------------
>>> *From:* UMN MapServer Users List
>>> [mailto:MAPSERVER-USERS at LISTS.UMN.EDU] *On Behalf Of *Brant Anderson
>>> *Sent:* Thursday, August 26, 2004 3:34 AM
>>> *To:* MAPSERVER-USERS at LISTS.UMN.EDU
>>> *Subject:* Re: [UMN_MAPSERVER-USERS] JPEG 2000 format instead of
>>> TIFF for a RASTER layer
>>>
>>> Here is a line from the apache web server log file:
>>>
>>> [Thu Aug 26 02:29:45 2004] [error] [client 192.168.1.101] malformed
>>> header from
>>> script. Bad header=GeoJp2 info found...: /usr/lib/cgi-bin/mapserv421
>>>
>>>
>>> Maybe that has something to do with it. If so, any ideas how to fix
>>> this?
>>>
>>> Brant
>>>
>>>
>>>
>>> Brant Anderson wrote:
>>>
>>>> Here are some more details:
>>>> Mapfile: ( Full mapfile can be found here:
>>>> http://mudlabs.homelinux.org:8181/mapserver_dev/Douglas.map )
>>>> ---->snip<----
>>>>   LAYER
>>>>     NAME 'index'
>>>>     TYPE TILEINDEX
>>>>     DATA 'dougIndex_jp2.shp' # JPEG2000 Images in same folder as
>>>> Shapefiles (TESTING)
>>>>     #DATA 'dougIndex_ortho.shp' # TIFF Images in 'ortho' sub-folder
>>>> (WORKING)
>>>>     #DATA 'dougIndex.shp' # TIFF Images in same folder as
>>>> Shapefiles (WORKING)
>>>>   END
>>>>
>>>>   LAYER
>>>>     NAME 'test_raster'
>>>>     STATUS OFF
>>>>     TYPE RASTER
>>>>     TILEINDEX 'index'
>>>>     TILEITEM 'PATH'
>>>>   END
>>>> ---->snip<----
>>>>
>>>> The 'tile index' layer was created via an ArcGIS extension written
>>>> by Mike Juvrud of Mud Labs. What it does is takes the
>>>> Orthophoto/raster image from a MrSID format, and chops it up into
>>>> tiles, outputting the tiles as TIFF formatted images (max 50MB per
>>>> image). At the same time, it generates the 'tile index' layer,
>>>> filling in the corresponding filename in an attribute named 'PATH'.
>>>>
>>>> After verifying this method worked using TIFF files, the 'PATH'
>>>> attribute was changed from a .tif extension to a .jp2 extension. So
>>>> if I had an image named '104.tif' the new name would be '104.jp2'
>>>>
>>>> I used the 'jasper' utility to convert the TIFF image to a JPEG2000
>>>> using the command: 'jasper -f 104.tif -t tif -F 104.jp2 -T jp2'
>>>>
>>>> Here is the output from ogrinfo of a TIFF version, and another of
>>>> the JPEG2000 version.
>>>>
>>>> ==TIFF: (command used: 'ogrinfo dougIndex.shp dougIndex')
>>>> INFO: Open of `dougIndex.shp'
>>>> using driver `ESRI Shapefile' successful.
>>>>
>>>> Layer name: dougIndex
>>>> Geometry: Polygon
>>>> Feature Count: 7
>>>> Extent: (285931.949063, 5109160.000042) - (289100.000009,
>>>> 5109580.000043)
>>>> Layer SRS WKT:
>>>> (unknown)
>>>> PATH: String (15.0)
>>>> STATUS: Integer (4.0)
>>>> IndexID: Integer (9.0)
>>>> OGRFeature(dougIndex):0
>>>>   PATH (String) = 104.tif
>>>>   STATUS (Integer) = 1
>>>>   IndexID (Integer) = 104
>>>>   POLYGON ((286040.000 5109160.000,285931.949
>>>> 5109160.000,285945.481 5109580.000,286040.000
>>>> 5109580.000,286040.000 5109160.000))
>>>>
>>>> OGRFeature(dougIndex):1
>>>>   PATH (String) = 105.tif
>>>>   STATUS (Integer) = 1
>>>>   IndexID (Integer) = 105
>>>>   POLYGON ((286550.000 5109160.000,286040.000
>>>> 5109160.000,286040.000 5109580.000,286550.000
>>>> 5109580.000,286550.000 5109160.000))
>>>>
>>>> OGRFeature(dougIndex):2
>>>>   PATH (String) = 106.tif
>>>>   STATUS (Integer) = 1
>>>>   IndexID (Integer) = 106
>>>>   POLYGON ((287060.000 5109160.000,286550.000
>>>> 5109160.000,286550.000 5109580.000,287060.000
>>>> 5109580.000,287060.000 5109160.000))
>>>>
>>>> OGRFeature(dougIndex):3
>>>>   PATH (String) = 107.tif
>>>>   STATUS (Integer) = 1
>>>>   IndexID (Integer) = 107
>>>>   POLYGON ((287570.000 5109160.000,287060.000
>>>> 5109160.000,287060.000 5109580.000,287570.000
>>>> 5109580.000,287570.000 5109160.000))
>>>>
>>>> OGRFeature(dougIndex):4
>>>>   PATH (String) = 108.tif
>>>>   STATUS (Integer) = 1
>>>>   IndexID (Integer) = 108
>>>>   POLYGON ((288080.000 5109160.000,287570.000
>>>> 5109160.000,287570.000 5109580.000,288080.000
>>>> 5109580.000,288080.000 5109160.000))
>>>>
>>>> OGRFeature(dougIndex):5
>>>>   PATH (String) = 109.tif
>>>>   STATUS (Integer) = 1
>>>>   IndexID (Integer) = 109
>>>>   POLYGON ((288590.000 5109160.000,288080.000
>>>> 5109160.000,288080.000 5109580.000,288590.000
>>>> 5109580.000,288590.000 5109160.000))
>>>>
>>>> OGRFeature(dougIndex):6
>>>>   PATH (String) = 110.tif
>>>>   STATUS (Integer) = 1
>>>>   IndexID (Integer) = 110
>>>>   POLYGON ((289100.000 5109160.000,288590.000
>>>> 5109160.000,288590.000 5109580.000,289100.000
>>>> 5109580.000,289100.000 5109160.000))
>>>> ==========
>>>>
>>>> ==JPEG2000: (command used: 'ogrinfo dougIndex_jp2.shp dougIndex_jp2')
>>>> INFO: Open of `dougIndex_jp2.shp'
>>>> using driver `ESRI Shapefile' successful.
>>>>
>>>> Layer name: dougIndex_jp2
>>>> Geometry: Polygon
>>>> Feature Count: 7
>>>> Extent: (286040.000007, 5109160.000042) - (289100.000009,
>>>> 5109580.000043)
>>>> Layer SRS WKT:
>>>> (unknown)
>>>> PATH: String (15.0)
>>>> STATUS: Integer (4.0)
>>>> IndexID: Integer (9.0)
>>>> OGRFeature(dougIndex):0
>>>>   PATH (String) = 104.jp2
>>>>   STATUS (Integer) = 1
>>>>   IndexID (Integer) = 104
>>>>   POLYGON ((286040.000 5109160.000,285931.949
>>>> 5109160.000,285945.481 5109580.000,286040.000
>>>> 5109580.000,286040.000 5109160.000))
>>>>
>>>> OGRFeature(dougIndex_jp2):1
>>>>   PATH (String) = 105.jp2
>>>>   STATUS (Integer) = 1
>>>>   IndexID (Integer) = 105
>>>>   POLYGON ((286550.000 5109160.000,286040.000
>>>> 5109160.000,286040.000 5109580.000,286550.000
>>>> 5109580.000,286550.000 5109160.000))
>>>>
>>>> OGRFeature(dougIndex_jp2):2
>>>>   PATH (String) = 106.jp2
>>>>   STATUS (Integer) = 1
>>>>   IndexID (Integer) = 106
>>>>   POLYGON ((287060.000 5109160.000,286550.000
>>>> 5109160.000,286550.000 5109580.000,287060.000
>>>> 5109580.000,287060.000 5109160.000))
>>>>
>>>> OGRFeature(dougIndex_jp2):3
>>>>   PATH (String) = 107.jp2
>>>>   STATUS (Integer) = 1
>>>>   IndexID (Integer) = 107
>>>>   POLYGON ((287570.000 5109160.000,287060.000
>>>> 5109160.000,287060.000 5109580.000,287570.000
>>>> 5109580.000,287570.000 5109160.000))
>>>>
>>>> OGRFeature(dougIndex_jp2):4
>>>>   PATH (String) = 108.jp2
>>>>   STATUS (Integer) = 1
>>>>   IndexID (Integer) = 108
>>>>   POLYGON ((288080.000 5109160.000,287570.000
>>>> 5109160.000,287570.000 5109580.000,288080.000
>>>> 5109580.000,288080.000 5109160.000))
>>>>
>>>> OGRFeature(dougIndex_jp2):5
>>>>   PATH (String) = 109.jp2
>>>>   STATUS (Integer) = 1
>>>>   IndexID (Integer) = 109
>>>>   POLYGON ((288590.000 5109160.000,288080.000
>>>> 5109160.000,288080.000 5109580.000,288590.000
>>>> 5109580.000,288590.000 5109160.000))
>>>>
>>>> OGRFeature(dougIndex_jp2):6
>>>>   PATH (String) = 110.jp2
>>>>   STATUS (Integer) = 1
>>>>   IndexID (Integer) = 110
>>>>   POLYGON ((289100.000 5109160.000,288590.000
>>>> 5109160.000,288590.000 5109580.000,289100.000
>>>> 5109580.000,289100.000 5109160.000))
>>>> ==========
>>>>
>>>>
>>>> I hope I covered all the bases. If you need any more info, sling
>>>> your questions my way.
>>>>
>>>>
>>>> Thank you,
>>>>
>>>> Brant Anderson
>>>>
>>>>
>>>>> Ed McNierney wrote:
>>>>>
>>>>>> Brant -
>>>>>>
>>>>>> You mentioned "tile", so I assume you're using a TILEINDEX.  You
>>>>>> mention changing the PATH attribute of the shapefile - could you
>>>>>> be a little more specific?  Could you post the LAYER definition
>>>>>> in your MAP file for this layer?  I would expect that you would
>>>>>> use gdaltindex to create a new TILEINDEX shapefile with the new
>>>>>> filenames in it (remember that gdaltindex will add to an existing
>>>>>> file, so you'll want to create a new one).  Then you would change
>>>>>> the TILEINDEX statement in your MAP file to refer to this new
>>>>>> shapefile.
>>>>>>
>>>>>>     - Ed
>>>>>>
>>>>>> Ed McNierney
>>>>>> President and Chief Mapmaker
>>>>>> TopoZone.com / Maps a la carte, Inc.
>>>>>> 73 Princeton Street, Suite 305
>>>>>> North Chelmsford, MA  01863
>>>>>> Phone: +1 978 251-4242   Fax: +1 978 251-1396
>>>>>>
>>>>>>
>>>>>> ------------------------------------------------------------------------
>>>>>> *From:* UMN MapServer Users List
>>>>>> [mailto:MAPSERVER-USERS at LISTS.UMN.EDU] *On Behalf Of *Brant Anderson
>>>>>> *Sent:* Thursday, August 26, 2004 1:21 AM
>>>>>> *To:* MAPSERVER-USERS at LISTS.UMN.EDU
>>>>>> *Subject:* [UMN_MAPSERVER-USERS] JPEG 2000 format instead of TIFF
>>>>>> for a RASTER layer
>>>>>>
>>>>>> I am trying to tile ortho photos using the JPEG 2000 (jp2)
>>>>>> format. I have created a working tif version.
>>>>>>
>>>>>> I converted the TIF images to JP2 files using jasper. Then I
>>>>>> updated the PATH attribute of the shapefile to reflect the new
>>>>>> file extension. This, however, created unexpected results. I am
>>>>>> getting an Internal Server Error.
>>>>>>
>>>>>> Here is my MapServer output: (mapserv -v)
>>>>>> MapServer version 4.2.2 OUTPUT=PNG OUTPUT=JPEG OUTPUT=WBMP
>>>>>> OUTPUT=PDF SUPPORTS=PROJ SUPPORTS=FREETYPE SUPPORTS=WMS_SERVER
>>>>>> INPUT=EPPL7 INPUT=OGR *INPUT=GDAL* INPUT=SHAPEFILE
>>>>>>
>>>>>> Here is my gdal-config output: (gdal-config --formats)
>>>>>> gxf gtiff hfa aigrid aaigrid ceos ceos2 iso8211 xpm sdts raw dted
>>>>>> mem jdem envisat elas fit vrt usgsdem l1b nitf bmp pcidsk bsb
>>>>>> *jpeg2000* gif jpeg png grass
>>>>>>
>>>>>>
>>>>>> Does anybody know if it is possible to use JPEG 2000 instead of
>>>>>> TIFF for this?
>>>>>>
>>>>>> I would like to use this format if possible, as the file sizes
>>>>>> are 2-3x smaller than with the .tif, and the quality differences
>>>>>> are unnoticeable.
>>>>>>
>>>>>> Any help/suggestions welcome.
>>>>>>
>>>>>>
>>>>>> Thank you,
>>>>>>
>>>>>> Brant Anderson
>>>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapserver-users/attachments/20040826/abf44b11/attachment.html


More information about the mapserver-users mailing list