Hello All:

Please pardon the very lengthy post. I have attempted to collect as much data 
as I could think of.

Summary:
FGS95 with MapServer 5.4.1 on Ubuntu Server, using OGR JOIN results in mapserv 
seg fault when run from browser, works fine from shp2img.

Detailed:
I have an FGs95 install on Ubuntu Server 9.10, using MapServer 5.4.1 on the 
back with a mixed shapefile/PostGIS datastore, GeoMoose 2.2 front-end. 
Everything is working very nicely except for my current problem.

I have a need to color polygons stored in a shapefile, CLASSified based on 
attributes in an external csv-file. Guidance found in the ether indicates that 
the only way to do this with MapServer is to use an OGR connection between the 
shapefile and the csv-file.
Using tips found here and there I have been able to construct a SELECT 
statement in the DATA directive that allows shp2img to create a PNG that looks 
just like I hoped it would (see attached), but I must confess that I don't 
fully understand how as the SELECT statement does not look like what I am used 
to seeing in some proprietary products. I am clearly in need of an OGR 
education (with lots of example code).

The LAYER section in the mapfile is

LAYER # Parish Boundary Polygon Outline Layer
  NAME 'parishes_on_boiladv'
  CONNECTIONTYPE OGR
  CONNECTION "webmaps_parishes.shp"
  DATA "SELECT * FROM webmaps_parishes LEFT JOIN 'bwa.csv'.bwa ON 
webmaps_parishes.FIPS = bwa.FIPS"
  STATUS default
  TYPE polygon
  CLASSITEM "PercentageOut"
  CLASS
    EXPRESSION ([PercentageOut] > 0 AND [PercentageOut] <= 10)
    NAME "0 - 10%"
    STYLE
      COLOR 56 168 0
    END
  END #class
(continues with several more classes).

The shapefile and csv-file are stored in the same directory. Both have a field 
"FIPS" which is the field I wish to join on. The "PercentageOut" field is in 
the csv-file. The DATA statement appears to work, but I looks really odd to me.

Is there a way to get a table output from the OGR JOIN to study?

I have set DEBUG 5 at the MAP level and the LAYER level to troubleshoot, but 
the process segfaults before any error is written to the ms_error file. The 
Apache and system logs contain only this when testing from localhost:

/opt/fgs/www/logs/error_log:
[Thu Aug 12 14:53:02 2010] [error] [client 127.0.1.1] Premature end of script 
headers: mapserv

/var/log/messages:
Aug 12 14:53:02 geoview kernel: [12879514.857356] mapserv[24114]: segfault at 0 
ip 0945e714 sp bf9058dc error 6

I saw another post with similar issues suggesting it's a library issue, 
discussing the LD_LIBRARY_PATH environment variable not being set properly for 
the Apache user. As far as I can tell this variable points to the right place 
in /opt/fgs/, but to be certain I added a SetEnv/PassEnv statement in the 
fgs-version of httpd.conf without any change in behavior.

In both /opt/fgs/etc/conf/httpd.conf and the local user environment I have
LD_LIBRARY_PATH set to /opt/fgs/lib:/opt/fgs/www/lib.

Is there a way to see the environment for the Apache user? I don't know how 
important this is. As mentioned everything else has been and is working very 
well.

Could there be some other conflicting system library picked up?

The URL I test with is
/cgi-bin/mapserv?map=/opt/fgs/apps/geomoose2/maps/sdwp/boil_adv/webmaps_boil_advisories.map&mode=map
and I have confirmed all works fine when pointing the URL to other mapfiles.

I set the file and directory permissions to full access to all users 
temporarily to test and there is no difference in behavior.

When I run shp2img on the same mapfile the correct image is returned and there 
are no errors indicated in the ms_error file. The only oddity I see is in the 
path used by OGROpen:
 msLoadMap(): 0.033s
 msOGRFileOpen(webmaps_parishes.shp)...
 OGROPen(/opt/fgs/apps/geomoose2/maps/sdwp/boil_adv/./webmaps_parishes.shp)
 msConnPoolRegister(parishes_on_boiladv,webmaps_parishes.shp,0x9fdeb68)
 msOGRFileWhichShapes: Setting spatial filter to -10515009.640986 
3370567.000000 -9840476.359014 3918467.000000
 msOGRFileNextShape: Returning shape=0, tile=0
*** 62 shapes snipped here, there are 64 total polygons ***
 msOGRFileNextShape: Returning shape=63, tile=0
 msOGRFileNextShape: Returning MS_DONE (no more shapes)
 msOGRLayerClose(webmaps_parishes.shp).
 
msOGRFileClose(/opt/fgs/apps/geomoose2/maps/sdwp/boil_adv/./webmaps_parishes.shp,-1).
 msConnPoolRelease(parishes_on_boiladv,webmaps_parishes.shp,0x9fdeb68)
 msConnPoolClose(webmaps_parishes.shp,0x9fdeb68)
 msDrawMap(): Layer 0 (parishes_on_boiladv), 0.118s
 msDrawMap(): Drawing Label Cache, 0.000s
 msDrawMap() total time: 0.126s
 msSaveImage() total time: 0.311s
 msFreeMap(): freeing map at 0x9d36ac8.
 freeLayer(): freeing layer at 0x9d3d7d8.
 shp2img total time: 0.472s

What else can I test?

If you made it this far, thanks for taking the time to read!

I am very grateful for any and all advice.
----------------------
Johan Forsman
Geologist
Safe Drinking Water Program
Louisiana Department of Health and Hospitals
Office of Public Health
Telephone: 225.342.7309
Telefax: 225.342.7303


<<attachment: image_by_shp2img.png>>

_______________________________________________
mapserver-users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapserver-users

Reply via email to