Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions examples/sierpinskiCarpet.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from geoscript import geom
from geoscript import viewer

bounds = geom.Bounds(-180,-90,180,90)
sierpinskiCarpet = geom.createSierpinskiCarpet(bounds, 50)
viewer.draw(sierpinskiCarpet)
2 changes: 1 addition & 1 deletion geoscript/geom/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from compoundring import CompoundRing
from bounds import Bounds
from geom import Geometry
from geom import prepare, simplify, densify, transform, buffer, delaunay, voronoi, randomPoints
from geom import prepare, simplify, densify, transform, buffer, delaunay, voronoi, randomPoints, createSierpinskiCarpet
from io.wkt import readWKT, writeWKT, fromWKT
from io.wkb import readWKB, writeWKB, fromWKB, toWKB
from io.json import writeJSON, readJSON
Expand Down
14 changes: 14 additions & 0 deletions geoscript/geom/geom.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
from org.geotools.geometry.jts import JTS
from org.geotools.referencing.operation.transform import AffineTransform2D
from org.locationtech.jts.shape.random import RandomPointsBuilder
from org.locationtech.jts.shape.fractal import SierpinskiCarpetBuilder
from geoscript.geom.bounds import Bounds

_factory = GeometryFactory()
Expand Down Expand Up @@ -167,6 +168,19 @@ def randomPoints(g, number):
builder.numPoints = number
return builder.getGeometry()

def createSierpinskiCarpet(b, numberOfPoints):
"""
Create a Sierpinski Carpet

*g* The Bounds

*number* The number of Points
"""
builder = SierpinskiCarpetBuilder(GeometryFactory())
builder.extent = b
builder.numPoints = numberOfPoints
return builder.getGeometry()

def _bounds(g):
return Bounds(env=g.getEnvelopeInternal())

Expand Down
5 changes: 5 additions & 0 deletions tests/test_geom.py
Original file line number Diff line number Diff line change
Expand Up @@ -231,3 +231,8 @@ def testRandomPoints(self):
polygon = geom.buffer(geom.Point(1153461.34, 649950.30), 100)
pts = geom.randomPoints(polygon, 10)
assert pts.getNumGeometries() == 10

def testCreateSierpinskiCarpet(self):
bounds = geom.Bounds(-180,-90,180,90)
sierpinskiCarpet = geom.createSierpinskiCarpet(bounds, 50)
assert sierpinskiCarpet.getNumGeometries() > 0