Sorry
I missed sending this to the entire group:

Assuming you send the request in the form:
http://myserver.com/getarea.php?xmin=-100&ymin=40&xmax=-99&ymax=41

getarea.php is:

<?php
header("Content-Type: text/xml");

$username = 'xxx';
$dbGeomName = 'XXX';
$password = 'yyy';
$hostname = 'mylhost';

//get URL parameters
$xmin = intval($_GET['xmin']);
$xmax = intval($_GET['xmax']);
$ymin = intval($_GET['ymin']);
$ymax = intval($_GET['ymax']);

//I assume since you are using Google Maps
$srid = 4326;

$tablename = 'whateverMyTableIs';

//intersection polygon to clip out data where useful
$intersectPolygon = 'GeometryFromText(\'POLYGON(('.$xmin.' '.$ymin.','.$xmax.' '.$ymin.','.$xmax.' '.$ymax.','.$xmin.' '.$ymax.','.$xmin.' '.$ymin.'))\','.$srid.')';

//connect to db
$my_pg_connect = pg_Connect('host='.$hostname.' dbname='.$dbGeomName.' user='.$username.' password='.$password) or die ('Can\'t connect to database '.$dbGeomName);

$mySQL= 'SELECT area(ST_intersection(the_geom_ca_albers,transform('$intersectPolygon.',find_srid(\'\',\''.$tablename.'\',\'the_geom_ca_albers\')))) AS area FROM '.$tablename;

  //execute sql command
$my_result_set = pg_Exec($my_pg_connect, $mySQL) or die (pg_ErrorMessage());

  //get number of rows retrieved
  $numRecs = pg_NumRows($my_result_set);

  $resultArray = pg_Fetch_Array($my_result_set, 0);
   print  $resultArray['area']);

//close db connection
pg_Close($my_pg_connect);
?>

This should return the area within your viewport in the map units of your table (the_geom_ca_albers). I didn't exactly test this - I took a small section of some existing code. Let me know if there are issues.

For a nice tutorial of what is going on here see:
http://www.carto.net/papers/svg/postgis_geturl_xmlhttprequest/

Bruce




Jennifer Strahan wrote:
Yes, PHP.

Thanks,
Jennifer

Bruce Rindahl wrote:
How are you connecting with the database? PHP?
Bruce

Jennifer Strahan wrote:
Hi Everyone,

I'm hoping someone can offer guidance on writing an sql statement.
I'm working on a Google maps interface to display protected lands in California. As the user moves the map, I'd like to calculate the total area of protected lands within the current map view. I'm able to get the map bounds as lat/lon and pass that to the script. I'm not sure how to do processing though. Do I need to use ST_Union to get the union of the map frame and the polygons, then get the area of that? Any examples on how to write the SQL would be very helpful. By the way I have multiple geometry columns in my table, one that is CA teale albers (the_geom_ca_albers), and one that is web mercator (the_geom_google).

Thanks,
Jennifer
_______________________________________________
postgis-users mailing list
[email protected]
http://postgis.refractions.net/mailman/listinfo/postgis-users



_______________________________________________
postgis-users mailing list
[email protected]
http://postgis.refractions.net/mailman/listinfo/postgis-users




_______________________________________________
postgis-users mailing list
[email protected]
http://postgis.refractions.net/mailman/listinfo/postgis-users

Reply via email to