Hi,
I would like to generate a regular grid of points inside a list of polygons.
I did this in Python:
def generate_grid_in_polygon(resolution, polygon):
points = []
minx, miny, maxx, maxy = polygon.bounds
for x in np.arange(minx, maxx, resolution):
for y in np.arange(miny, maxy, resolution):
pnt = Point(x, y)
if polygon.contains(pnt):
points.append(pnt)
return points
Is there any way that I can do this using GMT.jl and / or standard Julia Array?
Thanks!
One way (if I understood the Python code)
X,Y = meshgrid(1:50, 1:50);
# A triangle polgon
polyg = [10 10; 25 25; 40 10; 10 10];
# Pick only the points inside the triangle
D = gmtselect([X[:] Y[:]], polygon=polyg);
# Show it
plot(D, marker=:point, show=1)
1 Like
Thanks - Is there a way to have the bounds of a polygon using GMT.jl to create the meshgrid within the polygon limits before gmtselect?
something like this maybe:
X,Y = meshgrid(minimum(polygon.xcoordinates):maximum(polygon.xcoordinates),
minimum(polygon.ycoordinates):maximum(polygon.ycoordinates) )
If you convert a matrix into a GMTdataset with D = mat2ds(mat)
the D type has fields D.bbox and D.ds_bbox (when D is a multi-segment a vector of Dās) that holds that info.
GMTdatasets
are quite complete types. You should read the GMT types section of the docs
1 Like
Thank you very much for all the help - I gain a LOT of time with your advices