/** * 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());