[postgis-users] Create equally spaced lines within a polygon

Rémi Cura remi.cura at gmail.com
Tue Dec 3 10:28:56 PST 2013


Hm what you seem to do is
compute a minimal bouding box (not aligned with NS or EW),
then use the greatest side as a reference, translate it so it passes by the
center of this bbox,
then several times offset the shortest side by a small step in the normal
direction, until you are out of the bounding box.
After this, keep only part of the created geom that are inside polygon.

I suspect this is not at all optimal, but your handdrawing is not precise
enough (what if the survey zone is a donut?).

It is not difficult but need some time, now the shopping :
_minimal bounding box (not axis aligned) :
http://en.wikipedia.org/wiki/Minimum_bounding_box_algorithms,
if perf is not a factor, you can try rotate your polygon by 10 degree steps
(36 steps), taking the rotation that gives the smallest box, then rotate
this box of the same amount.
_translate : http://postgis.net/docs/ST_Translate.html
_offset : http://postgis.net/docs/ST_OffsetCurve.html (by choosing the sign
you take care of the normal thing)
_intersection : http://postgis.net/docs/ST_Intersection.html

And you didn't tell why you would need "linear referencing" ...
Good luck with that,

Cheers,

Rémi-C






2013/12/3 Karl Zinglersen <karl.zinglersen at gmail.com>

> Hi, I believe I was unclear - the centerlines have to straight. But I'll
> keep in mind your reference to delauney triangles and skeletonization for
> future purposes.
> To create the centerline a manual sketch is probably OK. Could I then just
> move on with linear referencing? Which function should I use - most seems
> to be percentages of a linestring.
>
> Karl
>
> Den lørdag den 30. november 2013 13.21.46 UTC-3 skrev Nicolas Ribot:
>>
>> Hi,
>>
>> You should look at this french article for skeletonization of
>> irregular polygons. The st_delaunayTriangles method can also help.
>> Note that the middle line of a polygon is not always a straight line.
>> Then, using linear referencing, it should be easy to walk the middle
>> line to create perpendicular segments.
>>
>> Nicolas
>>
>> On 29 November 2013 18:25, Karl Zinglersen <karl.zi... at gmail.com> wrote:
>> > I need to create transect lines across polygons for planning aerial
>> surveys
>> > for musk oxen and caribous in Greenland.
>> > 1. In QGIS I have made polygons of the polygon zones for each survey.
>> Each
>> > polygon hold an attribute of spacing value, e.g. 5, 10 and 20 km.
>> > 2. Lines must be equally spaced and parallel.
>> > 3. Lines must be perpendicular to the polygon centerline.
>> > 4. Centerline must run at the longest distance across the polygon - and
>> > consequently the transects run as the shorter distances.
>> > I've attached a hand made sketch, which display the concept.
>> >
>> > I've tried this query
>> >
>> > SELECT GENERATE_SERIES(FLOOR(ST_YMin(the_polygon))::int ,
>> > CEILING(ST_YMax(the_polygon))::int,200) y_value, ST_XMin(the_polygon)
>> x_min,
>> > ST_XMax(the_polygon) x_max from
>> >             (SELECT the_geom AS the_polygon FROM lakes) l
>> >
>> >
>> > SELECT ST_Intersection(the_geom, the_polygon)  AS the_geom FROM
>> >     (SELECT the_polygon, ST_Setsrid(ST_MakeLine(ST_MakePoint(x_min,
>> > y_value),ST_MakePoint(x_max, y_value) ), ST_Srid(the_polygon)) AS
>> the_geom
>> > FROM
>> >         (SELECT the_polygon,
>> > GENERATE_SERIES(FLOOR(ST_YMin(the_polygon))::int ,
>> > CEILING(ST_YMax(the_polygon))::int,200) y_value, ST_XMin(the_polygon)
>> x_min,
>> > ST_XMax(the_polygon) x_max from
>> >             (SELECT the_geom AS the_polygon FROM lakes) l
>> >         )c
>> >
>> > ) lines
>> >
>> > from gis stackechange
>> > http://gis.stackexchange.com/questions/24064/filling-a-
>> polygon-with-lines-using-postgis
>> >
>> > however these transects runs horisontally and don't seem to take into
>> > account the shape and rotation of the polygon centerline.
>> >
>> > Should I be able to change the query or should take a different
>> approach?
>> >
>> > Karl Zinglersen
>> >
>> > _______________________________________________
>> > postgis-users mailing list
>> > postgi... at lists.osgeo.org
>> > http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>> _______________________________________________
>> postgis-users mailing list
>> postgi... at lists.osgeo.org
>> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org
> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20131203/76a6c6ec/attachment.html>


More information about the postgis-users mailing list