/**
  * Test retrieving just one relation.
  *
  * @return void
  */
 public function testGetRelation()
 {
     $id = 1152802;
     $mock = new HTTP_Request2_Adapter_Mock();
     $mock->addResponse(fopen(__DIR__ . '/responses/capabilities.xml', 'rb'));
     $mock->addResponse(fopen(__DIR__ . '/responses/relation.xml', 'rb'));
     $mock->addResponse(fopen(__DIR__ . '/responses/relation_changeset.xml', 'rb'));
     $config = array('adapter' => $mock, 'server' => 'http://api06.dev.openstreetmap.org/');
     $osm = new Services_OpenStreetMap($config);
     $relation = $osm->getRelation($id);
     $this->assertEquals($id, $relation->getId());
     $changesetId = (int) $relation->getAttributes()->changeset;
     $getTags = $relation->getTags();
     $this->assertEquals($getTags['name'], 'Mitchell Street');
     $this->assertEquals($getTags['type'], 'associatedStreet');
     $changeset = $osm->getChangeset($changesetId);
     $this->assertEquals($changesetId, $changeset->getId());
     $getTags = $changeset->getTags();
     $this->assertEquals($getTags['comment'], 'IE. Nenagh. Mitchell Street POIs');
     $members = $relation->getMembers();
     $this->assertEquals(18, sizeof($members));
     foreach ($members as $member) {
         $this->assertEquals('house', $member['role']);
         $this->assertEquals('way', $member['type']);
         $this->assertTrue(is_numeric($member['ref']));
     }
 }
<?php

require_once 'Services/OpenStreetMap.php';
$id = 1707362;
$osm = new Services_OpenStreetMap();
$relation = $osm->getRelation($id);
file_put_contents("relation.{$id}.xml", $relation->getXml());