Skip to content

Commit e83bdcd

Browse files
committed
Add sierpinski carpet method to geometry
1 parent 01247eb commit e83bdcd

File tree

4 files changed

+26
-1
lines changed

4 files changed

+26
-1
lines changed

examples/sierpinskiCarpet.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from geoscript import geom
2+
from geoscript import viewer
3+
4+
bounds = geom.Bounds(-180,-90,180,90)
5+
sierpinskiCarpet = geom.createSierpinskiCarpet(bounds, 50)
6+
viewer.draw(sierpinskiCarpet)

geoscript/geom/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from compoundring import CompoundRing
1212
from bounds import Bounds
1313
from geom import Geometry
14-
from geom import prepare, simplify, densify, transform, buffer, delaunay, voronoi, randomPoints
14+
from geom import prepare, simplify, densify, transform, buffer, delaunay, voronoi, randomPoints, createSierpinskiCarpet
1515
from io.wkt import readWKT, writeWKT, fromWKT
1616
from io.wkb import readWKB, writeWKB, fromWKB, toWKB
1717
from io.json import writeJSON, readJSON

geoscript/geom/geom.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from org.geotools.geometry.jts import JTS
1616
from org.geotools.referencing.operation.transform import AffineTransform2D
1717
from org.locationtech.jts.shape.random import RandomPointsBuilder
18+
from org.locationtech.jts.shape.fractal import SierpinskiCarpetBuilder
1819
from geoscript.geom.bounds import Bounds
1920

2021
_factory = GeometryFactory()
@@ -167,6 +168,19 @@ def randomPoints(g, number):
167168
builder.numPoints = number
168169
return builder.getGeometry()
169170

171+
def createSierpinskiCarpet(b, numberOfPoints):
172+
"""
173+
Create a Sierpinski Carpet
174+
175+
*g* The Bounds
176+
177+
*number* The number of Points
178+
"""
179+
builder = SierpinskiCarpetBuilder(GeometryFactory())
180+
builder.extent = b
181+
builder.numPoints = numberOfPoints
182+
return builder.getGeometry()
183+
170184
def _bounds(g):
171185
return Bounds(env=g.getEnvelopeInternal())
172186

tests/test_geom.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,3 +231,8 @@ def testRandomPoints(self):
231231
polygon = geom.buffer(geom.Point(1153461.34, 649950.30), 100)
232232
pts = geom.randomPoints(polygon, 10)
233233
assert pts.getNumGeometries() == 10
234+
235+
def testCreateSierpinskiCarpet(self):
236+
bounds = geom.Bounds(-180,-90,180,90)
237+
sierpinskiCarpet = geom.createSierpinskiCarpet(bounds, 50)
238+
assert sierpinskiCarpet.getNumGeometries() > 0

0 commit comments

Comments
 (0)