displaying xy coordinates from database

Geoff Rowland geoffrey.rowland at NOAA.GOV
Mon Jun 13 10:05:35 PDT 2005


Here is the code I use (using phpmapscript with MySQL)....this example 
assumes that the coords stored in the database are pixels. There is 
probably a better way to do it, but this works.

//Convert pixels to map units
function pix2geo($click_x, $click_y) {
    global $map;
    $e= &$map->extent; //for saving writing
    $x_pct = ($click_x / $map->width);
    $y_pct = 1 - ($click_y / $map->height);
    $x_map = $e->minx + ( ($e->maxx - $e->minx) * $x_pct);
    $y_map = $e->miny + ( ($e->maxy - $e->miny) * $y_pct);
    return array($x_map, $y_map);
}

$sql = "SELECT x,y,city FROM my_table'";
$result = mysql_query($sql, $linkID);

//Draw the map and get the point layer
$img = $map->draw();
//MYPOINTS is the name of the point layer in the .MAP file
$layer = $map->getLayerByName('MYPOINTS');

for ($j=0; $j < mysql_num_rows($result); $j++)
    {
        $row = mysql_fetch_assoc($result);
        // convert pixels to geocoded location
        $map_pt = pix2geo($row[x],$row[y],$map->extent);
        //Create the point
        $pt = "pt" . $j;
        //create dynamic variables based on num of mysql rows returned
        ${$pt} = ms_newPointObj();
        ${$pt}->setXY($map_pt[0],$map_pt[1]);
        ${$pt}->draw($map, $layer, $img, 0 ,$row[city]);
    }

//draw the labels
$map->drawLabelCache($img);
//save image to disk - can specify name later
$url = $img->saveWebImage();

Cheers,
Geoff

Jessica Deegan wrote:

>Greetings list,
>
>A newbie to PHP/Mapscript, I am trying to display XY coordinates from a
>selected set of points (the XY to be displayed are a different location from
>selected point).
>
>As a test, I was successful in adding a dynamic point where a user clicks on
>the map using the sample found at
>http://mapserver.gis.umn.edu/cgi-bin/wiki.pl?PHPMapScriptAddPoint , but I'm
>at a loss to where to begin this process from a database perspective.  My
>data are stored in a PostgreSQL database.
>
>Any suggestions or starting points would be highly appreciated.
>thanks,
>Jessica
>  
>


-- 
Geoffrey Rowland
Technical Officer
Climate Information Project
NOAA Research
Office of  Global Programs
http://www.cip.ogp.noaa.gov
Contractor, 
RGII Technologies, Inc., a Computer Horizons Company
http://www.rg2.com
Phone: 301-427-2344
Fax : 301-427-2082
geoffrey.rowland at noaa.gov



More information about the MapServer-users mailing list