示例#1
0
 /**
  * {@inheritdoc}
  */
 public function coordinateSystem()
 {
     if ($this->proxyGeometry === null) {
         $this->load();
     }
     return $this->proxyGeometry->coordinateSystem();
 }
示例#2
0
 /**
  * Tests Countable and Traversable interfaces.
  */
 public function testInterfaces()
 {
     $point = Point::fromText('POINT (1 2)');
     $lineString = LineString::fromText('LINESTRING (1 2, 3 4)');
     $geometryCollection = GeometryCollection::of($point, $lineString);
     $this->assertInstanceOf(\Countable::class, $geometryCollection);
     $this->assertSame(2, count($geometryCollection));
     $this->assertInstanceOf(\Traversable::class, $geometryCollection);
     $this->assertSame([$point, $lineString], iterator_to_array($geometryCollection));
 }
示例#3
0
 /**
  * {@inheritdoc}
  */
 function load(ObjectManager $manager)
 {
     $point1 = Point::xy(0, 0);
     $point2 = Point::xy(1, 0);
     $point3 = Point::xy(1, 1);
     $lineString1 = new LineStringEntity();
     $lineString1->setLineString(LineString::of($point1, $point2, $point3));
     $manager->persist($lineString1);
     $manager->flush();
 }
示例#4
0
 /**
  * {@inheritdoc}
  */
 function load(ObjectManager $manager)
 {
     $point1 = Point::xy(0, 0);
     $point2 = Point::xy(1, 0);
     $point3 = Point::xy(1, 1);
     $point4 = Point::xy(0, 1);
     $point5 = Point::xy(0, 0);
     $ring = LineString::of($point1, $point2, $point3, $point4, $point5);
     $poly1 = new PolygonEntity();
     $poly1->setPolygon(Polygon::of($ring));
     $manager->persist($poly1);
     $manager->flush();
 }
示例#5
0
 /**
  * {@inheritdoc}
  */
 function load(ObjectManager $manager)
 {
     $point1 = Point::xy(0, 0);
     $point2 = Point::xy(1, 0);
     $point3 = Point::xy(1, 1);
     $lineString1 = LineString::of($point1, $point2, $point3);
     $point4 = Point::xy(2, 2);
     $point5 = Point::xy(3, 2);
     $point6 = Point::xy(3, 3);
     $lineString2 = LineString::of($point4, $point5, $point6);
     $multilineString1 = new MultiLineStringEntity();
     $multilineString1->setMultiLineString(MultiLineString::of($lineString1, $lineString2));
     $manager->persist($multilineString1);
     $manager->flush();
 }
示例#6
0
 /**
  * {@inheritdoc}
  */
 function load(ObjectManager $manager)
 {
     $point1 = Point::xy(0, 0);
     $point2 = Point::xy(1, 0);
     $point3 = Point::xy(1, 1);
     $point4 = Point::xy(0, 1);
     $point5 = Point::xy(0, 0);
     $ring1 = LineString::of($point1, $point2, $point3, $point4, $point5);
     $poly1 = Polygon::of($ring1);
     $point6 = Point::xy(2, 2);
     $point7 = Point::xy(3, 2);
     $point8 = Point::xy(3, 3);
     $point9 = Point::xy(2, 3);
     $point10 = Point::xy(2, 2);
     $ring2 = LineString::of($point6, $point7, $point8, $point9, $point10);
     $poly2 = Polygon::of($ring2);
     $multiPoly1 = new MultiPolygonEntity();
     $multiPoly1->setMultiPolygon(MultiPolygon::of($poly1, $poly2));
     $manager->persist($multiPoly1);
     $manager->flush();
 }
示例#7
0
文件: Polygon.php 项目: brick/geo
 /**
  * Creates a non-empty Polygon composed of the given rings.
  *
  * @param LineString    $exteriorRing  The exterior ring.
  * @param LineString ...$interiorRings The interior rings, if any.
  *
  * @return Polygon
  *
  * @throws InvalidGeometryException  If the resulting geometry is not valid for a sub-type of Polygon.
  * @throws CoordinateSystemException If the rings use different coordinate systems.
  */
 public static function of(LineString $exteriorRing, LineString ...$interiorRings)
 {
     return new static($exteriorRing->coordinateSystem(), $exteriorRing, ...$interiorRings);
 }
示例#8
0
 /**
  * @expectedException \Brick\Geo\Exception\InvalidGeometryException
  */
 public function testCreateWithInteriorRings()
 {
     $exteriorRing = LineString::fromText('LINESTRING (0 0, 0 3, 3 3, 0 0)');
     $interiorRing = LineString::fromText('LINESTRING (1 1, 1 2, 2 2, 1 1)');
     Triangle::of($exteriorRing, $interiorRing);
 }
示例#9
0
文件: PolygonTest.php 项目: brick/geo
 /**
  * @dataProvider providerOfWithCoordinateSystemMix
  * @expectedException \Brick\Geo\Exception\CoordinateSystemException
  *
  * @param string  $outerRingWKT
  * @param string  $innerRingWKT
  * @param integer $outerRingSRID
  * @param integer $innerRingSRID
  */
 public function testOfWithCoordinateSystemMix($outerRingWKT, $innerRingWKT, $outerRingSRID, $innerRingSRID)
 {
     $outerRing = LineString::fromText($outerRingWKT, $outerRingSRID);
     $innerRing = LineString::fromText($innerRingWKT, $innerRingSRID);
     Polygon::of($outerRing, $innerRing);
 }
示例#10
0
 /**
  * @param array      $coords     The expected coordinates of the LineString as returned by toArray().
  * @param boolean    $is3D       Whether the LineString is expected to contain Z coordinates.
  * @param boolean    $isMeasured Whether the LineString is expected to contain M coordinates.
  * @param LineString $lineString The LineString to test.
  */
 protected final function assertLineStringEquals(array $coords, $is3D, $isMeasured, LineString $lineString)
 {
     $this->castToFloat($coords);
     $this->assertSame($coords, $lineString->toArray());
     $this->assertSame($is3D, $lineString->is3D());
     $this->assertSame($isMeasured, $lineString->isMeasured());
 }
示例#11
0
 /**
  * @dataProvider providerRectangleWithInvalidPoints
  * @expectedException \Brick\Geo\Exception\CoordinateSystemException
  *
  * @param string $point1
  * @param string $point2
  * @param int    $srid1
  * @param int    $srid2
  */
 public function testRectangleWithInvalidPoints($point1, $point2, $srid1 = 0, $srid2 = 0)
 {
     $point1 = Point::fromText($point1, $srid1);
     $point2 = Point::fromText($point2, $srid2);
     LineString::rectangle($point1, $point2);
 }