On Thu, Nov 20, 2014 at 12:29 AM, Markus Neteler <[email protected]> wrote:
> Hi,
>
> I have added v.mkhexgrid as new G7 addon to the Addons repo. The
> original author is Trevor Wiens who already implemented it as a Python
> script. I made some minor changes to get it running in GRASS GIS 7.
> Screenshot:
> https://svn.osgeo.org/grass/grass-addons/grass7/vector/v.mkhexgrid/v_mkhexgrid.png
>
> Originally I had hoped that v.voronoi would do the job but it does not
> create proper hexagons. I was running:
>
> # desired result:
> http://blogs.esri.com/esri/arcgis/files/2013/05/fig3.png (3rd figure
> within)
> # create first set of points
> g.region rast=elevation -p
> v.mkgrid -p map=pointpattern1 grid=13,15 position=region breaks=1
> # shift grid by half point distance
> g.region n=n+500 w=w+500 e=e+500 s=s+500 -p
> # create second set of points
> v.mkgrid -p map=pointpattern2 grid=13,15 position=region breaks=1
> # merge into final point pattern
> v.patch input=pointpattern1,pointpattern2 output=pointpattern3
> # generate Thiessen, hoping for hexagons
> v.voronoi input=pointpattern3 out=hexagon_attempt
> # show result
> d.mon wx0
> sleep 5
> d.vect hexagon_attempt type=boundary
The points are not "cleverly spaced". Attached is a python script that
generates center points of hexagons. The output of v.voronoi shows now
hexagons.
Markus M
#!/bin/env python
import os
import sys
import math
def main():
north = 1000
west = 1000
rows = 20
cols = 20
radius = 1000
# row spacing
rspace = radius / 2.0
# row shift
rshift = radius
# col spacing
cspace = math.sqrt(3) * radius
# col shift
cshift = math.sqrt(3) * radius / 2.0
f = file("points.csv", "w")
n = north
for r in range(rows):
n = n + rspace
w = west + cshift * (r % 2)
for c in range(cols):
w = w + cspace
f.write("%f,%f\n" % (w, n))
f.close()
if __name__ == "__main__":
main()
_______________________________________________
grass-dev mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/grass-dev