/** * {@inheritdoc} */ public function coordinateSystem() { if ($this->proxyGeometry === null) { $this->load(); } return $this->proxyGeometry->coordinateSystem(); }
/** * 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)); }
/** * {@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(); }
/** * {@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(); }
/** * {@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(); }
/** * {@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(); }
/** * 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); }
/** * @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); }
/** * @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); }
/** * @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()); }
/** * @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); }