[Mapserver-users] Perl Mapscript - render shapefile with no m ap
Sean Gillies
sgillies at frii.com
Tue Mar 11 08:27:04 PST 2003
Andrew,
With mapscript you can create a empty map object, add a layer to it,
define data, add a class and draw the map. Is that what you're
looking for? Something like this (some corrections to my Perl
syntax may be necessary):
use mapscript;
# Create empty map object, no file needed
$map = new mapscript::mapObj("");
# Set map properties, extents, imagecolor etc
$map->{extent}->{minx} = 0.0;
...
$map->{imagecolor}->{red} = 153;
...
$map->setImagetype("png");
# Create new layer
$layer = new mapscript::layerObj($map);
# Set layer attributes, name, status, data etc
$layer->name = "Foo";
$layer->status = $mapscript::MS_DEFAULT;
$layer->type = $mapscript::MS_POLYGON;
$layer->data = "/tmp/foo.shp";
...
# Define a class for this layer
$class = new mapscript::mapObj($layer);
# Set class attributes
$class->{color}->{red} = 255;
...
$class->{outlinecolor}->{red} = 0;
...
# Draw
$img = $map->draw();
# Save image to a file
$img->saveImage("/tmp/foo.png", $mapscript::MS_PNG, 0, 0, 0);
I'm leaving out a bunch of necessary attributes, but you should get
the picture.
hope this helps,
Sean
On Tuesday, March 11, 2003, at 08:58 AM, Simpson, Andrew wrote:
>
> What I'd like to do is render a map using Perl mapscript only, without
> static or dynamic map files, and without stepping through the shapes.
> I know I should just go with one of these two work arounds, but the
> code to
> do this seems to be available and I would like to avoid the overhead of
> creating/deleting map files.
>
> Thanks for your reply,
> Drew.
>
> P.S. Sorry for the double post, I had E-Mail alias problems.
>
> -----Original Message-----
> From: Lowell Filak [mailto:lfilak at medinaco.org]
> Sent: Tuesday, March 11, 2003 8:54 AM
> To: Simpson, Andrew; 'mapserver-users at lists.gis.umn.edu'
> Subject: Re: [Mapserver-users] Perl Mapscript - render shapefile with
> no
> map
>
>
> I may be missing the question but:
> What you are trying to do does work.
> If you dynamically create a mapfile and include a 'place-holder' layer
> definition and then set the $layer->{data} on the fly it does work.
> Being that you are trying to set the $layer->{data} dynamically does
> that
> mean you are trying to set the 'data' to a shapefile that was just
> created?
> If so you will want to make sure that the data.shp has a corresponding
> data.dbf file to go with it or the $layer->{data} = 'data' will fail.
> HTH
> Lowell F.
>
> The following message was sent by "Simpson, Andrew"
> <Andrew.Simpson at ssc.nasa.gov> on Mon, 10 Mar 2003 16:22:24 -0600.
>
>> Greetings,
>>
>> Has anyone had any success rendering a map using Perl mapscript and a
>> shapefile with no map file and without having to open the shapefile
>> and
> step
>> through and draw every shape.
>> I have had success instantiating a map object with dynamically
>> generated
> map
>> files.
>> I have also had success manually opening the shapefile and iterating
> through
>> the shapes rendering each, but this is cumbersome and does not take
>> advantage of tiling.
>> I have not been able render a map by just setting the layer->{data}
>> attribute to a shapefile.
>> Is this possible?
>>
>> Thanks for any help,
>> Drew.
>>
>>
>>
>>
>
> _______________________________________________
> Mapserver-users mailing list
> Mapserver-users at lists.gis.umn.edu
> http://lists.gis.umn.edu/mailman/listinfo/mapserver-users
>
More information about the MapServer-users
mailing list