/** * Open a new changeset, create a node and save it by associating it with * that changeset and then committing. * The id of the node should change from -1 to a positive integer/double. * * @return void */ public function testSaveNode() { if (!file_exists($this->credentialsFile)) { $this->markTestSkipped('Credentials file does not exist.'); } $mock = new HTTP_Request2_Adapter_Mock(); $mock->addResponse(fopen(__DIR__ . '/responses/capabilities.xml', 'rb')); $mock->addResponse(fopen(__DIR__ . '/responses/changeset_id', 'rb')); $mock->addResponse(fopen(__DIR__ . '/responses/diff_create_node.xml', 'rb')); $mock->addResponse(fopen(__DIR__ . '/responses/changeset_closed', 'rb')); $config = array('adapter' => $mock, 'server' => 'http://api06.dev.openstreetmap.org/', 'passwordfile' => $this->credentialsFile); $osm = new Services_OpenStreetMap($config); $lat = 52.8638729; $lon = -8.1983611; $node = $osm->createNode($lat, $lon, array('building' => 'yes', 'amenity' => 'vet')); $this->assertEquals($node->getTags(), array('building' => 'yes', 'amenity' => 'vet')); $this->assertEquals($lat, $node->getlat()); $this->assertEquals($lon, $node->getlon()); $node->setTag('amenity', 'veterinary')->setTag('name', 'O\'Kennedy'); $this->assertEquals($node->getTags(), array('building' => 'yes', 'amenity' => 'veterinary', 'name' => 'O\'Kennedy')); $this->assertEquals(-1, $node->getId()); $changeset = $osm->createChangeset(); $changeset->begin("Add O'Kennedy vets in Nenagh"); $changeset->add($node); $changeset->commit(); $this->assertEquals($node->getId(), 1448499623); }
require_once 'Services/OpenStreetMap.php'; require_once 'HTTP/Request2.php'; require_once 'HTTP/Request2/Adapter/Mock.php'; $osm = new Services_OpenStreetMap(); $mock = new HTTP_Request2_Adapter_Mock(); $mock->addResponse(fopen(__DIR__ . '/../tests/responses/capabilities.xml', 'rb')); $mock->addResponse(fopen(__DIR__ . '/../tests/responses/changeset.xml', 'rb')); $mock->addResponse(fopen(__DIR__ . '/../tests/responses/changeset.xml', 'rb')); $mock->addResponse(fopen(__DIR__ . '/../tests/responses/diff_create_node.xml', 'rb')); $mock->addResponse(fopen(__DIR__ . '/../tests/responses/changeset_closed', 'rb')); $config = array('adapter' => $mock, 'server' => 'http://api.openstreetmap.org/', 'passwordfile' => __DIR__ . '/credentials'); $osm = new Services_OpenStreetMap($config); $mm = $osm->bboxToMinMax(-8.6519835, 52.638735499999996, -8.6214513, 52.649915099999994); $osm->get($mm[0], $mm[1], $mm[2], $mm[3]); $results = $osm->search(array("building" => "yes")); $changeset = $osm->createChangeset(); $changeset->begin('Additional details for ballinacurra gardens.'); foreach ($results as $result) { $addrStreet = $result->getTag('addr:street'); if ($addrStreet != 'Oakview Drive') { continue; } $user = $result->getUser(); $name = $result->getTag('name'); if ('exampleusername' == $user) { $tags = $result->getTags(); if (isset($tags['building_roof'])) { continue; } try { $result->setTags(array('building' => 'house', 'building:cladding' => 'brick', 'building:levels' => '2', 'building:roof' => 'tile', 'building:roof:shape' => 'pitched', 'source' => 'survey', 'source:geometry' => 'bing'));