Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am currently generating a KML file dynamically from PHP and Mysql. One latitude / longitude point is being passed to the script. What I want to do now is create two triangle polygons from this point based upon a wind variable in the database. So if the wind is blowing 'S' then I want the triangle 'point' to start at the lat/long point variable, and build a polygon with the point of the triangle headed south towards the lat / lng. Can anyone share with me how this can be done? Here is my script:

// Selects all the rows in the markers table.
$query = 'SELECT lat, lng, waves, wave_secs, current_dir, pri_id AS id FROM kml';
$result = mysql_query($query);

if (!$result) 
die('Invalid query: ' . mysql_error());

// Creates the Document.
$dom = new DOMDocument('1.0', 'UTF-8');

// Creates the root KML element and appends it to the root document.
$node = $dom->createElementNS('', 'kml');
$parNode = $dom->appendChild($node);

// Creates a KML Document element and append it to the KML element.
$dnode = $dom->createElement('Document');
$docNode = $parNode->appendChild($dnode);

// Iterates through the MySQL results, creating one Placemark for each row.
while ($row = @mysql_fetch_assoc($result))
// Creates a Placemark and append it to the Document.

$node = $dom->createElement('Placemark');
$placeNode = $docNode->appendChild($node);

// Creates an id attribute and assign it the value of id column.
$placeNode->setAttribute('id', 'placemark' . $row['id']);

// Create name, and description elements and assigns them the values of the name and address columns from the results.
$nameNode = $dom->createElement('name', 'Wave Height '.htmlentities(ceil($row['waves'] * 3.280)).' Feet');
$descNode = $dom->createElement('description', 'Wave Duration ' .htmlentities($row['wave_secs']). ' Seconds');
$styleUrl = $dom->createElement('styleUrl', '#' . $row['current_dir'] . '-Style');

// Creates a Point element.
$pointNode = $dom->createElement('Point');

// Creates a coordinates element and gives it the value of the lng and lat columns from the results.
$coorStr = $row['lng'] . ','  . $row['lat'];
$coorNode = $dom->createElement('coordinates', $coorStr);

$kmlOutput = $dom->saveXML();
header('Content-type: application/');
echo $kmlOutput;
share|improve this question

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.