[postgis-users] Left of/Right of test

Andreas Neumann a.neumann at carto.net
Tue Jul 23 12:07:09 PDT 2013


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
>>>>>> postgis-users 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
> 
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org
> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users



More information about the postgis-users mailing list