[mapserver-users] "simple" scale problem?

Alan Swithenbank alans at cuervo.stanford.edu
Fri Oct 9 19:50:10 EDT 2009


Hi,

My first post here, (I just signed on 5 minutes ago), so pardon any missed
protocols...;^)

I'm absolutely new to mapserver, but, well versed in coding, graphics, and
system administration in general. I'm trying to display a shapefile
via perl mapscript. I created the the shapefile using the perl shapelib
module. (It's GPS track data). The shapefile displays as expected using
openjump, so I think it is OK. Here is the ogrinfo -al output for the
shapefile:


    INFO: Open of `track2shp.shp'
          using driver `ESRI Shapefile' successful.

    Layer name: track2shp
    Geometry: Line String
    Feature Count: 1
    Extent: (-122.419903, 37.739453) - (-122.419775, 37.739625)
    Layer SRS WKT:
    (unknown)
    ID: Integer (10.0)
    Date: String (16.0)
    OGRFeature(track2shp):0
      ID (Integer) = 0
      Date (String) = 353238-19-8
      LINESTRING (-122.419881799999999
    37.739624999999997,-122.419860400000005
    37.739539100000002,-122.419774500000003 37.7394533,-122.4199033
    37.739496199999998)


In my map file I've given a size 800 400, and an
extent -123.00 37.00 -122.00 38.00, with units dd. I do
get a display, but what I see is just a tiny spot within
the 800x400 area, rather than a show of the shapefile
data at what should be a reasonable scale from the extent.
It appears that the extent is ignored, and some arbitrary
scaling is applied the 800x400 area. (By the relative sizes
it appears maybe to be 360x180 degrees.)

I'm guessing there is some projection and/or scale issue,
or something like defining a .wld file for a raster image
required, but, haven't been able to crack it. I'd appreciate
any pointers. Here's the full .map file:

    MAP

      NAME "simpleshowmap"
      SIZE 800 400
    #  IMAGECOLOR 64 136 32
      IMAGETYPE PNG
      SHAPEPATH
    "/home/alans/Desktop/mapserverdemo/minigtopp/perlaccess/track2shp/"
      EXTENT -123.00 37.00 -122.00 38.00
      UNITS DD

      WEB
        TEMPLATE
    "/home/alans/Desktop/mapserverdemo/minigtopp/perlaccess/simpleshow.html"
        IMAGEPATH "/home/alans/Desktop/mapserverdemo/tmp/"
        IMAGEURL "/tmp/"
      END

     LAYER
        NAME "tracklayer"
        STATUS default
        TYPE line
        DATA "track2shp"
        CLASS
          STYLE
            COLOR 255 0 0
          END
        END
      END

   END

And, for completeness, the perl mapscript file:

    #!/usr/bin/perl -w

    use strict;
    use mapscript;
    use CGI ":cgi";

    my $script_name = "/cgi-bin/simpleshow.pl";

    my $map_path = "/home/alans/Desktop/mapserverdemo/minigtopp/perlaccess/";
    my $map_file = "simpleshow.map";
    my $img_path = "/home/alans/Desktop/mapserverdemo/tmp/";

    my $img_name = sprintf("simpleshow%0.6d",rand(1000000)).".png";
    my $params = new CGI;
    my $map = new mapscript::mapObj($map_path.$map_file);
    my $img = $map->draw();
    $img->save($img_path.$img_name);

    print $params->header();
    print $params->start_html(-title=>'Simple Perl Mapscript Shapefile Show',
                              -bgcolor=>"#E6E6E6");
    print <<END_OF_HTML
    <br>
    This code, simpleshow.pl, used perl mapscript to display the ESRI
    shapefile track2shp.shp, (produced by the routine track2shp.pl),
    according to the dictates of the .map file simpleshow.map.
    <br><br>
    <form name="pointmap" action="simpleshow.pl" method="POST">
    <input type="image" name="img" src="../../tmp/$img_name">
    </form>
    END_OF_HTML
    print $params->end_html();


thanks!

Alan Swithenbank
Research Programmer
Stanford University
Tagging of Pacific Pelagics Project








More information about the mapserver-users mailing list