public function testFindByLineString()
 {
     $lineString = new LineString(array(new Point(0, 0), new Point(1, 1), new Point(2, 2)));
     $entity = new LineStringEntity();
     $entity->setLineString($lineString);
     $this->getEntityManager()->persist($entity);
     $this->getEntityManager()->flush();
     $this->getEntityManager()->clear();
     $result = $this->getEntityManager()->getRepository(self::LINESTRING_ENTITY)->findByLineString($lineString);
     $this->assertEquals($entity, $result[0]);
 }
 /**
  * @group geometry
  */
 public function testGLengthWhereParameter()
 {
     $entity = new LineStringEntity();
     $entity->setLineString(new LineString(array(new Point(0, 0), new Point(1, 1), new Point(2, 2))));
     $this->getEntityManager()->persist($entity);
     $this->getEntityManager()->flush();
     $this->getEntityManager()->clear();
     $query = $this->getEntityManager()->createQuery('SELECT l FROM CrEOF\\Spatial\\Tests\\Fixtures\\LineStringEntity l WHERE GLength(GeomFromText(:p1)) > GLength(l.lineString)');
     $query->setParameter('p1', 'LINESTRING(0 0,1 1,2 2,3 3,4 4,5 5)', 'string');
     $result = $query->getResult();
     $this->assertCount(1, $result);
     $this->assertEquals($entity, $result[0]);
 }
Пример #3
0
 /**
  * @group geometry
  */
 public function testSTLengthWhereParameter()
 {
     $lineString = new LineString(array(new Point(0, 0), new Point(1, 1), new Point(2, 2), new Point(3, 3)));
     $entity = new LineStringEntity();
     $entity->setLineString(new LineString(array(new Point(0, 0), new Point(1, 1), new Point(2, 2))));
     $this->_em->persist($entity);
     $this->_em->flush();
     $this->_em->clear();
     $query = $this->_em->createQuery('SELECT l FROM CrEOF\\Spatial\\Tests\\Fixtures\\LineStringEntity l WHERE ST_Length(ST_GeomFromText(:p1)) > ST_Length(l.lineString)');
     $query->setParameter('p1', $lineString, 'linestring');
     $result = $query->getResult();
     $this->assertCount(1, $result);
     $this->assertEquals($entity, $result[0]);
 }
Пример #4
0
 public function testGLengthWhereParameter()
 {
     if ($this->getPlatform()->getName() == 'postgresql') {
         $this->markTestSkipped('Function not supported on postgresql.');
     }
     $lineString = new LineString(array(new Point(0, 0), new Point(1, 1), new Point(2, 2), new Point(3, 3), new Point(4, 4), new Point(5, 5)));
     $entity = new LineStringEntity();
     $entity->setLineString(new LineString(array(new Point(0, 0), new Point(1, 1), new Point(2, 2))));
     $this->_em->persist($entity);
     $this->_em->flush();
     $this->_em->clear();
     $query = $this->_em->createQuery('SELECT l FROM CrEOF\\Spatial\\Tests\\Fixtures\\LineStringEntity l WHERE GLength(GeomFromText(:p1)) > GLength(l.lineString)');
     $query->setParameter('p1', $lineString, 'linestring');
     $result = $query->getResult();
     $this->assertCount(1, $result);
     $this->assertEquals($entity, $result[0]);
 }
Пример #5
0
 /**
  * @group geometry
  */
 public function testAsText()
 {
     $lineString1 = array(new Point(0, 0), new Point(2, 2), new Point(5, 5));
     $lineString2 = array(new Point(3, 3), new Point(4, 15), new Point(5, 22));
     $entity1 = new LineStringEntity();
     $entity1->setLineString(new LineString($lineString1));
     $this->getEntityManager()->persist($entity1);
     $entity2 = new LineStringEntity();
     $entity2->setLineString(new LineString($lineString2));
     $this->getEntityManager()->persist($entity2);
     $this->getEntityManager()->flush();
     $this->getEntityManager()->clear();
     $query = $this->getEntityManager()->createQuery('SELECT AsText(l.lineString) FROM CrEOF\\Spatial\\Tests\\Fixtures\\LineStringEntity l');
     $result = $query->getResult();
     $this->assertEquals('LINESTRING(0 0,2 2,5 5)', $result[0][1]);
     $this->assertEquals('LINESTRING(3 3,4 15,5 22)', $result[1][1]);
 }
Пример #6
0
 /**
  * @group geometry
  */
 public function testSTAsBinary()
 {
     $lineString1 = array(new Point(0, 0), new Point(2, 2), new Point(5, 5));
     $lineString2 = array(new Point(3, 3), new Point(4, 15), new Point(5, 22));
     $entity1 = new LineStringEntity();
     $entity1->setLineString(new LineString($lineString1));
     $this->getEntityManager()->persist($entity1);
     $entity2 = new LineStringEntity();
     $entity2->setLineString(new LineString($lineString2));
     $this->getEntityManager()->persist($entity2);
     $this->getEntityManager()->flush();
     $this->getEntityManager()->clear();
     $query = $this->getEntityManager()->createQuery('SELECT ST_AsBinary(l.lineString) FROM CrEOF\\Spatial\\Tests\\Fixtures\\LineStringEntity l');
     $result = $query->getResult();
     $this->assertEquals('010200000003000000000000000000000000000000000000000000000000000040000000000000004000000000000014400000000000001440', bin2hex(Utils::toBinary(stream_get_contents($result[0][1]))));
     $this->assertEquals('0102000000030000000000000000000840000000000000084000000000000010400000000000002e4000000000000014400000000000003640', bin2hex(Utils::toBinary(stream_get_contents($result[1][1]))));
 }
Пример #7
0
 public function testAsText()
 {
     if ($this->getPlatform()->getName() == 'postgresql') {
         $this->markTestSkipped('Function not supported on postgresql.');
     }
     $lineString1 = array(new Point(0, 0), new Point(2, 2), new Point(5, 5));
     $lineString2 = array(new Point(3, 3), new Point(4, 15), new Point(5, 22));
     $entity1 = new LineStringEntity();
     $entity1->setLineString(new LineString($lineString1));
     $this->_em->persist($entity1);
     $entity2 = new LineStringEntity();
     $entity2->setLineString(new LineString($lineString2));
     $this->_em->persist($entity2);
     $this->_em->flush();
     $this->_em->clear();
     $query = $this->_em->createQuery('SELECT AsText(l.lineString) FROM CrEOF\\Spatial\\Tests\\Fixtures\\LineStringEntity l');
     $result = $query->getResult();
     $this->assertEquals('LINESTRING(0 0,2 2,5 5)', $result[0][1]);
     $this->assertEquals('LINESTRING(3 3,4 15,5 22)', $result[1][1]);
 }
Пример #8
0
 public function testSTAsBinary()
 {
     if ($this->getPlatform()->getName() == 'mysql') {
         $this->markTestSkipped('Function not supported on mssql.');
     }
     $lineString1 = array(new Point(0, 0), new Point(2, 2), new Point(5, 5));
     $lineString2 = array(new Point(3, 3), new Point(4, 15), new Point(5, 22));
     $entity1 = new LineStringEntity();
     $entity1->setLineString(new LineString($lineString1));
     $this->_em->persist($entity1);
     $entity2 = new LineStringEntity();
     $entity2->setLineString(new LineString($lineString2));
     $this->_em->persist($entity2);
     $this->_em->flush();
     $this->_em->clear();
     $query = $this->_em->createQuery('SELECT ST_AsBinary(l.lineString) FROM CrEOF\\Spatial\\Tests\\Fixtures\\LineStringEntity l');
     $result = $query->getResult();
     $this->assertEquals('010200000003000000000000000000000000000000000000000000000000000040000000000000004000000000000014400000000000001440', bin2hex(stream_get_contents($result[0][1])));
     $this->assertEquals('0102000000030000000000000000000840000000000000084000000000000010400000000000002e4000000000000014400000000000003640', bin2hex(stream_get_contents($result[1][1])));
 }
 /**
  * @group geometry
  */
 public function testAsBinary()
 {
     $lineString1 = array(new Point(0, 0), new Point(2, 2), new Point(5, 5));
     $lineString2 = array(new Point(3, 3), new Point(4, 15), new Point(5, 22));
     $entity1 = new LineStringEntity();
     $entity1->setLineString(new LineString($lineString1));
     $this->getEntityManager()->persist($entity1);
     $entity2 = new LineStringEntity();
     $entity2->setLineString(new LineString($lineString2));
     $this->getEntityManager()->persist($entity2);
     $this->getEntityManager()->flush();
     $this->getEntityManager()->clear();
     $query = $this->getEntityManager()->createQuery('SELECT AsBinary(l.lineString) FROM CrEOF\\Spatial\\Tests\\Fixtures\\LineStringEntity l');
     $result = $query->getResult();
     $string1 = '010200000003000000000000000000000000000000000000000000000000000040000000000000004000000000000014400000000000001440';
     $string2 = '0102000000030000000000000000000840000000000000084000000000000010400000000000002e4000000000000014400000000000003640';
     $binary1 = pack('H*', $string1);
     $binary2 = pack('H*', $string2);
     $this->assertEquals($binary1, $result[0][1]);
     $this->assertEquals($binary2, $result[1][1]);
 }
Пример #10
0
 /**
  * @group geometry
  */
 public function testGeometryWalkerText()
 {
     $lineString1 = new LineString(array(new Point(0, 0), new Point(2, 2), new Point(5, 5)));
     $lineString2 = new LineString(array(new Point(3, 3), new Point(4, 15), new Point(5, 22)));
     $entity1 = new LineStringEntity();
     $entity1->setLineString($lineString1);
     $this->getEntityManager()->persist($entity1);
     $entity2 = new LineStringEntity();
     $entity2->setLineString($lineString2);
     $this->getEntityManager()->persist($entity2);
     $this->getEntityManager()->flush();
     $this->getEntityManager()->clear();
     switch ($this->getPlatform()->getName()) {
         case 'mysql':
             $asText = 'AsText';
             $startPoint = 'StartPoint';
             $envelope = 'Envelope';
             break;
         default:
             $asText = 'ST_AsText';
             $startPoint = 'ST_StartPoint';
             $envelope = 'ST_Envelope';
             break;
     }
     $queryString = sprintf('SELECT %s(%s(l.lineString)) FROM CrEOF\\Spatial\\Tests\\Fixtures\\LineStringEntity l', $asText, $startPoint);
     $query = $this->getEntityManager()->createQuery($queryString);
     $query->setHint(Query::HINT_CUSTOM_OUTPUT_WALKER, 'CrEOF\\Spatial\\ORM\\Query\\GeometryWalker');
     $result = $query->getResult();
     $this->assertEquals(new Point(0, 0), $result[0][1]);
     $this->assertEquals(new Point(3, 3), $result[1][1]);
     $queryString = sprintf('SELECT %s(%s(l.lineString)) FROM CrEOF\\Spatial\\Tests\\Fixtures\\LineStringEntity l', $asText, $envelope);
     $query = $this->getEntityManager()->createQuery($queryString);
     $query->setHint(Query::HINT_CUSTOM_OUTPUT_WALKER, 'CrEOF\\Spatial\\ORM\\Query\\GeometryWalker');
     $result = $query->getResult();
     $this->assertInstanceOf('CrEOF\\Spatial\\PHP\\Types\\Geometry\\Polygon', $result[0][1]);
     $this->assertInstanceOf('CrEOF\\Spatial\\PHP\\Types\\Geometry\\Polygon', $result[1][1]);
 }
 /**
  * @group geometry
  */
 public function testSTLineCrossingDirectionWhereParameter()
 {
     $lineString1 = new LineString(array(new Point(8, 15), new Point(4, 8)));
     $lineString2 = new LineString(array(new Point(12, 14), new Point(3, 4)));
     $lineString3 = new LineString(array(new Point(2, 5), new Point(3, 6), new Point(12, 8), new Point(10, 10), new Point(13, 11)));
     $entity1 = new LineStringEntity();
     $entity1->setLineString($lineString1);
     $this->getEntityManager()->persist($entity1);
     $entity2 = new LineStringEntity();
     $entity2->setLineString($lineString2);
     $this->getEntityManager()->persist($entity2);
     $entity3 = new LineStringEntity();
     $entity3->setLineString($lineString3);
     $this->getEntityManager()->persist($entity3);
     $this->getEntityManager()->flush();
     $this->getEntityManager()->clear();
     $query = $this->getEntityManager()->createQuery('SELECT l FROM CrEOF\\Spatial\\Tests\\Fixtures\\LineStringEntity l WHERE ST_LineCrossingDirection(l.lineString, ST_GeomFromText(:p1)) = 1');
     $query->setParameter('p1', 'LINESTRING(12 6,5 11,8 12,5 15)', 'string');
     $result = $query->getResult();
     $this->assertCount(1, $result);
     $this->assertEquals($entity2, $result[0]);
 }
Пример #12
0
 /**
  * @group geometry
  */
 public function testSTStartPointWhereCompareLineString()
 {
     $lineString1 = new LineString(array(new Point(0, 0), new Point(2, 2), new Point(5, 5)));
     $lineString2 = new LineString(array(new Point(3, 3), new Point(4, 15), new Point(5, 22)));
     $entity1 = new LineStringEntity();
     $entity1->setLineString($lineString1);
     $this->getEntityManager()->persist($entity1);
     $entity2 = new LineStringEntity();
     $entity2->setLineString($lineString2);
     $this->getEntityManager()->persist($entity2);
     $this->getEntityManager()->flush();
     $this->getEntityManager()->clear();
     $query = $this->getEntityManager()->createQuery('SELECT l FROM CrEOF\\Spatial\\Tests\\Fixtures\\LineStringEntity l WHERE ST_StartPoint(l.lineString) = ST_StartPoint(ST_GeomFromText(:p1))');
     $query->setParameter('p1', 'LINESTRING(3 3, 4 15, 5 22)', 'string');
     $result = $query->getResult();
     $this->assertCount(1, $result);
     $this->assertEquals($entity2, $result[0]);
 }
Пример #13
0
 public function testSTStartPointWhereCompareLineString()
 {
     if ($this->getPlatform()->getName() == 'mysql') {
         $this->markTestSkipped('Function not supported on mssql.');
     }
     $lineString1 = new LineString(array(new Point(0, 0), new Point(2, 2), new Point(5, 5)));
     $lineString2 = new LineString(array(new Point(3, 3), new Point(4, 15), new Point(5, 22)));
     $entity1 = new LineStringEntity();
     $entity1->setLineString($lineString1);
     $this->_em->persist($entity1);
     $entity2 = new LineStringEntity();
     $entity2->setLineString($lineString2);
     $this->_em->persist($entity2);
     $this->_em->flush();
     $this->_em->clear();
     $query = $this->_em->createQuery('SELECT l FROM CrEOF\\Spatial\\Tests\\Fixtures\\LineStringEntity l WHERE ST_StartPoint(l.lineString) = ST_StartPoint(ST_GeomFromText(:p1))');
     $query->setParameter('p1', $lineString2, 'linestring');
     $result = $query->getResult();
     $this->assertCount(1, $result);
     $this->assertEquals($entity2, $result[0]);
 }
Пример #14
0
 /**
  * @group postgresql
  * @group geometry
  */
 public function testGeometryWalkerTextPostgreSql()
 {
     $lineString1 = new LineString(array(new Point(0, 0), new Point(2, 2), new Point(5, 5)));
     $lineString2 = new LineString(array(new Point(3, 3), new Point(4, 15), new Point(5, 22)));
     $entity1 = new LineStringEntity();
     $entity1->setLineString($lineString1);
     $this->_em->persist($entity1);
     $entity2 = new LineStringEntity();
     $entity2->setLineString($lineString2);
     $this->_em->persist($entity2);
     $this->_em->flush();
     $this->_em->clear();
     $query = $this->_em->createQuery('SELECT ST_AsText(ST_StartPoint(l.lineString)) FROM CrEOF\\Spatial\\Tests\\Fixtures\\LineStringEntity l');
     $query->setHint(Query::HINT_CUSTOM_OUTPUT_WALKER, 'CrEOF\\Spatial\\ORM\\Query\\GeometryWalker');
     $result = $query->getResult();
     $this->assertEquals(new Point(0, 0), $result[0][1]);
     $this->assertEquals(new Point(3, 3), $result[1][1]);
     $query = $this->_em->createQuery('SELECT ST_AsText(ST_Envelope(l.lineString)) FROM CrEOF\\Spatial\\Tests\\Fixtures\\LineStringEntity l');
     $query->setHint(Query::HINT_CUSTOM_OUTPUT_WALKER, 'CrEOF\\Spatial\\ORM\\Query\\GeometryWalker');
     $result = $query->getResult();
     $this->assertInstanceOf('CrEOF\\Spatial\\PHP\\Types\\Geometry\\Polygon', $result[0][1]);
     $this->assertInstanceOf('CrEOF\\Spatial\\PHP\\Types\\Geometry\\Polygon', $result[1][1]);
 }
 /**
  * @group geometry
  */
 public function testSTCrossesWhereParameter()
 {
     $lineString1 = new LineString(array(new Point(0, 0), new Point(10, 10)));
     $lineString2 = new LineString(array(new Point(0, 10), new Point(15, 0)));
     $lineString3 = new LineString(array(new Point(2, 0), new Point(12, 10)));
     $entity1 = new LineStringEntity();
     $entity1->setLineString($lineString1);
     $this->getEntityManager()->persist($entity1);
     $entity2 = new LineStringEntity();
     $entity2->setLineString($lineString2);
     $this->getEntityManager()->persist($entity2);
     $entity3 = new LineStringEntity();
     $entity3->setLineString($lineString3);
     $this->getEntityManager()->persist($entity3);
     $this->getEntityManager()->flush();
     $this->getEntityManager()->clear();
     $query = $this->getEntityManager()->createQuery('SELECT l FROM CrEOF\\Spatial\\Tests\\Fixtures\\LineStringEntity l WHERE ST_Crosses(l.lineString, ST_GeomFromText(:p1)) = true');
     $query->setParameter('p1', 'LINESTRING(0 0, 10 10)', 'string');
     $result = $query->getResult();
     $this->assertCount(1, $result);
     $this->assertEquals($entity2, $result[0]);
     $this->getEntityManager()->clear();
     $query = $this->getEntityManager()->createQuery('SELECT l FROM CrEOF\\Spatial\\Tests\\Fixtures\\LineStringEntity l WHERE ST_Crosses(l.lineString, ST_GeomFromText(:p1)) = true');
     $query->setParameter('p1', 'LINESTRING(2 0, 12 10)', 'string');
     $result = $query->getResult();
     $this->assertCount(1, $result);
     $this->assertEquals($entity2, $result[0]);
 }
 public function testSTLineCrossingDirectionWhereParameter()
 {
     if ($this->getPlatform()->getName() == 'mysql') {
         $this->markTestSkipped('Function not supported on mssql.');
     }
     $lineString1 = new LineString(array(new Point(8, 15), new Point(4, 8)));
     $lineString2 = new LineString(array(new Point(12, 14), new Point(3, 4)));
     $lineString3 = new LineString(array(new Point(2, 5), new Point(3, 6), new Point(12, 8), new Point(10, 10), new Point(13, 11)));
     $lineString4 = new LineString(array(new Point(12, 6), new Point(5, 11), new Point(8, 12), new Point(5, 15)));
     $entity1 = new LineStringEntity();
     $entity1->setLineString($lineString1);
     $this->_em->persist($entity1);
     $entity2 = new LineStringEntity();
     $entity2->setLineString($lineString2);
     $this->_em->persist($entity2);
     $entity3 = new LineStringEntity();
     $entity3->setLineString($lineString3);
     $this->_em->persist($entity3);
     $this->_em->flush();
     $this->_em->clear();
     $query = $this->_em->createQuery('SELECT l FROM CrEOF\\Spatial\\Tests\\Fixtures\\LineStringEntity l WHERE ST_LineCrossingDirection(l.lineString, ST_GeomFromText(:p1)) = 1');
     $query->setParameter('p1', $lineString4, 'linestring');
     $result = $query->getResult();
     $this->assertCount(1, $result);
     $this->assertEquals($entity2, $result[0]);
 }