[non-spatial]-mysql: point data source

Roberto Bianconi rbianconi at ENVIROWARE.COM
Wed Dec 29 02:04:21 PST 2004


Hi,

these could be some hints (i.e. won't run as it is) to create the layer with the points, using Perl.
I think you can grab the ideas and implement it into Php, if it is what you need.


# load mapscript and XBase modules

use mapscript;
use XBase;

# Set the path and name to the shapefile you'll create

my $basename = 'path_to_filename'

# Create the new shapefile

my $shapefile = new mapscript::shapefileObj("$basename", 1) or die;

# Create the new DBF table

my $table = XBase->create("name" => $basename,
                          "field_names" => ["X", "Y", "ATTRIBUTE_1", "ATTRIBUTE_2"],
                          "field_types" => ["N", "N", "C", "C"],
                          "field_lengths" => [8, 8, 50, 2],
                          "field_decimals" => [4, 4, 0, 0) or die;

# Create a new pointObj
my $point = new mapscript::pointObj();

# Assuming you connect to the MySQL database to get the data (use DBI and DBD modules to do that,
# and standard SQL syntax) you loop on table records or store them into hashes or arrays, and for
# each record you set

        $point->{x} = $x;
        $point->{y} = $y;
        $shapefile->addPoint($point);

        # Then you fill the DBF record ($i is the loop index)

        $table->set_record($i, $x, $y, $attribute_1, $attribute_2);

# When you're done with the loop on your points, close the DBF

$table->close();
undef $shapefile;


Hope this helps.
Roberto

------------------------------------------------
ENVIROWARE SRL
Centro Direzionale Colleoni, Palazzo Andromeda 1
I-20041 Agrate Brianza (MI) - Italy

T:++39 039 6890073 / F:++39 039 6881459
mailto:rbianconi at enviroware.com
http://www.enviroware.com
------------------------------------------------

On Tue, 27 Dec 2004, Dylan Beaudette wrote:

> Greetings everyone!
>
> I have been using mapserver for quite some time with shapefiles, and am
> quite pleased with its flexibility.
>
> I was wondering if it would be possible to add point data records, stored
> in a MySQL data base, to a map that was created by shapefiles. The records
> in mysql would be formatted as follows:
>
> point_id, x, y, attribute_1, ...
>
> this is not in the openGIS format that the myGIS connector is using, and
> so I wonder if it is even possible to get a 'list' of points like this
> into a mapserver application.
>
> I would like to use PHPmapscript, but i have problems running PHP as a CGI
> as opposed to the more traditional Apache DSO (maybe this problem has been
> solved...)
>
> any ideas would be greatly appreciated.
>
> Dylan
>



More information about the MapServer-users mailing list