[gdal-dev] FileGDB OGR driver test

Even Rouault even.rouault at mines-paris.org
Fri Jul 29 17:59:00 EDT 2011


Le vendredi 29 juillet 2011 23:20:48, Daniel Morissette a écrit :

For the record, I've tested your little testfgdb and run it under my favorite 
http server : mongoose.

And... it works well...


> A little trivia for the weekend...
> 
> After his Windows vs FGDB adventures, Jeff reported an issue with FGDB
> on Linux as well, on the Linux server used for the FOSS4G benchmarking
> exercise and I've had a look.
> 
> I noticed something odd: OGROpen() (the method of the C API) is able to
> open the FGDB dataset when run at the command line, but is unable to
> open the same file when run as the same user, but under Apache. (Yes,
> same user)
> 
> MapServer is out of the equation, I am able to reproduce the problem
> with the following short program:
> 
> $ cat testfgdb.cpp
> 
> #include "ogr_api.h"
> 
> int main()
> {
>    OGRDataSourceH hDS = NULL;
> 
>    OGRRegisterAll();
> 
>    hDS = OGROpen("/tmp/us_states.gdb", FALSE, NULL);
> 
>    printf("Content-type: text/plain\n\n");
>    printf("hDS = %x\n", hDS);
> 
>    if (hDS)
>      OGRReleaseDataSource( hDS );
> 
> }
> 
> 
> When run as at the command line, I get the following output:
> 
> $ ./testfgdb
> Content-type: text/plain
> 
> hDS = e23a710
> 
> 
> ... and when run via the web server I get:
> 
> http://12.189.158.78:8081/cgi-bin/testfgdb
> 
> hDS = 0
> 
> 
> However, just to make things more confusing, a shell script calling
> ogrinfo on the same table does work fine via the web server... what does
> ogrinfo do that my little 3-liner program is missing?
> 
> See for yourself at the following URL and make your guesses...
> 
> http://12.189.158.78:8081/cgi-bin/ttt
> 
> ***** Executing testfgdb program...
> 
> Content-type: text/plain
> 
> hDS = 0
> 
> ***** Executing /opt/mapserver/bin/ogrinfo -fid 1 -geom=summary
> /tmp/us_states.gdb statesp020
> 
> INFO: Open of `/tmp/us_states.gdb'
>        using driver `FileGDB' successful.
> 
> Layer name: statesp020
> Geometry: Multi Polygon
> Feature Count: 2895
> Extent: (-179.000000, 17.000000) - (179.000000, 71.000000)
> Layer SRS WKT:
> GEOGCS["GCS_North_American_1983",
>      DATUM["North_American_Datum_1983",
>          SPHEROID["GRS_1980",6378137.0,298.257222101]],
>      PRIMEM["Greenwich",0.0],
>      UNIT["Degree",0.017453292519943295]]
> FID Column = OBJECTID
> Geometry Column = SHAPE
> AREA: Real (0.0)
> PERIMETER: Real (0.0)
> STATESP020: Real (0.0)
> STATE: String (0.0)
> STATE_FIPS: String (0.0)
> OGRFeature(statesp020):1
>    AREA (Real) = 267.357
>    PERIMETER (Real) = 374.768
>    STATESP020 (Real) = 2
>    STATE (String) = Alaska
>    STATE_FIPS (String) = 02
>    MULTIPOLYGON : 1 geometries:
>      POLYGON : 70238 points
> 
> On 11-07-29 11:30 AM, Jeff McKenna wrote:
> > An update on this issue:
> > 
> > I did some more testing and it seems that I was assuming that MapServer
> > would use the SHAPEPATH value for the CONNECTION; I was wrong (in my
> > filegdb testing on Windows I have discovered that this is not the case
> > here). So to use a relative path you must make sure your CONNECTION is
> > relative to the mapfile. I have made a note of this in the docs
> > (http://www.mapserver.org/input/vector/filegdb.html).
> > 
> > Tricky! :)
> > 
> > -jeff
> > 
> > On 11-07-18 8:18 PM, Jeff McKenna wrote:
> >> More testing feedback:
> >> 
> >> When displaying in MapServer, a full path is required on Windows (only
> >> Windows, relative paths work on Unix), in the CONNECTION parameter, such
> >> as:
> >> 
> >> FAILS: CONNECTION "filegdb/us_states.gdb"
> >> WORKS: CONNECTION "C:/ms4w/apps/ms101/data/filegdb/us_states.gdb"
> >> 
> >> I have documented this at
> >> http://www.mapserver.org/input/vector/filegdb.html
> >> 
> >> If others can test this issue: to duplicate, use GDAL-trunk and then try
> >> to display any FileGDB (created with Arc 10.0) in MapServer, on Windows.
> >> And let me know if you succeed. Thanks.
> >> 
> >> -jeff


More information about the gdal-dev mailing list