Hi Stephen and all, Thank you for your proposal. I think I will try your proposal with projection and cross-product. Will write a PostgreSQL left_of function.
Thanks, Andreas Am 23.07.2013 17:23, schrieb Stephen Woodbridge: > On 7/23/2013 11:16 AM, Denis Rouzaud wrote: >> I was thinking of the case where you have something like his: >> >> >> ********************** >> * * >> * * >> * X * >> * * >> * * >> * * >> * * >> ******A B********* > > I added A & B to the linestring above. Linestrings have an implied > direction based on their direction of digitization. So in the above > example if the line start point is A and the line end point is B then X > is on right side of the line as you walk along the line. > > The way I would solve the right/left-ness of a line is to project the > point X onto the line AB then isolate the segment within the AB and > compute the cross product of the segment of AB and a line from the start > of segment to X and if if Z is negative then the point is on right > positive=left, zero it is one the centerline. > > -Steve > >> This might be a particular case, but I don't know the answer (as a human >> ;) ) >> >> Or did I miss your point ? >> >> Cheers, >> >> Denis >> >> >> >> >> On 07/23/2013 05:03 PM, Andreas Neumann wrote: >>> Hi Denis, >>> >>> Thank you for your reply. >>> >>> Actually I really want to test a LINESTRING against POLYGON centroids >>> (determined with ST_PointOnSurface), not just a line against a point. >>> >>> Is this question not answerable? As a human I can determine it. I am >>> aware about the edge cases where a point is on the line, but in my case >>> this can't happen as the data comes from a correctly defined polygon >>> mosaic. >>> >>> From the lines of a polygon mosaic (directed lines node to node, no >>> double lines) I want to label what is left and what is right of a >>> polygon border. My theme is usage zones and I should label what is left >>> and right of the polygon border. >>> >>> Andreas >>> >>> Am 23.07.2013 16:48, schrieb Denis Rouzaud: >>>> Oops, here is the complete code: >>>> >>>> pointGeom << ST_Intersection( ST_MakeLine( >>>> ST_MakePoint(ST_XMin(lineGeom), ST_Y(pointGeom)), >>>> ST_MakePoint(ST_XMax(lineGeom), ST_Y(pointGeom)) >>>> ), lineGeom >>>> ) >>>> >>>> >>>> >>>> On 07/23/2013 04:31 PM, Denis Rouzaud wrote: >>>>> Hi Andreas, >>>>> >>>>> Do you mean you want to test to a segment? >>>>> >>>>> Because, I can't see a true answer for a line. >>>>> >>>>> If you want to do test to a segment, it should do the job to test if >>>>> the intersection with the horizontal line (dy=0) over your point and >>>>> your input line is on the left/right to your point. >>>>> >>>>> So, maybe test: >>>>> >>>>> pointGeom << ST_Intersection( ST_MakeLine( >>>>> ST_MakePoint(ST_XMin(lineGeom), ST_Y(pointGeom)), >>>>> ST_MakePoint(ST_XMax(lineGeom), ST_Y(pointGeom)) >>>>> ) >>>>> >>>>> You have to handle the case where your segment is horizontal, but then >>>>> a simple test with ST_Xmin/max should be enough. >>>>> >>>>> Cheers, >>>>> >>>>> Denis >>>>> >>>>> On 07/23/2013 03:54 PM, Andreas Neumann wrote: >>>>>> Hi, >>>>>> >>>>>> I want to test a point if it is left-of or right-of a given >>>>>> LINESTRING. >>>>>> I found the << >> and &< &> but they do not behave like I expected. >>>>>> >>>>>> Perhaps it is because they only test on the bounding box level and >>>>>> not >>>>>> on the real geometry? >>>>>> >>>>>> Is there a left/right of test available on the geometry instead of >>>>>> the >>>>>> bounding box? >>>>>> >>>>>> Thank you, >>>>>> Andreas >>>>>> _______________________________________________ >>>>>> postgis-users mailing list >>>>>> [email protected] >>>>>> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users >> >> _______________________________________________ >> postgis-users mailing list >> [email protected] >> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users > > _______________________________________________ > postgis-users mailing list > [email protected] > http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users _______________________________________________ postgis-users mailing list [email protected] http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
