[postgis-users] ST_Touches and line segment
mbdavis at refractions.net
Thu Mar 19 11:26:22 PDT 2009
Yes, an auxilary matching function would also work well, and might be
more modular. Although it's always nice to keep APIs as narrow as
possible, and in this case since the input is simply a string, there's a
lot of latitude in the semantics of how that string is interpreted.
One advantage of a separate function is that the intersection matrix
string could be computed once, and, and then the matching function could
be used potentially several times on it (if there was some wierd
situation which wasn't accounted for in the pattern language). Of
course, you could skip having a pattern language completely, and simply
express the logic in the host language - but this is likely to be less
clear than a special-purpose language.
One advantage of having the pattern matching take place inside the
relate function is that allows for potential optimization. Some
patterns might not require a full relationship computation (e.g.
Kevin Neufeld wrote:
> That might be a nice expansion (or as an array list) - I know I've
> come across situations where it would have been useful.
> Or/And, you could provide some routines that return TRUE on successful
> pattern matches, ie. ST_MatrixMatches('101-F00-FF2','1TT-F*T-***').
> In the same manner, one would only compute relate once (presumably in
> a subquery) and then compare the matrices.
> -- Kevin
> Martin Davis wrote:
>> I've had some thoughts that it would be nice to extend the concept of
>> Intersection Matrix Pattern to allow OR combinations of patterns.
>> This seems to indicate that it's also necessary to be able to specify
>> different patterns for different combinations of geometry dimension.
>> Perhaps a syntax like:
>> "PP:***-*1*-*** LL:1***-***-*** PL:***-1**-***"
>> The LP pattern can be automatically inferred from this.
>> Note that I'm also using a "dashed triplet" syntax, which is more
>> readable than a solid string of 9 chars (think phone numbers or IP
>> Kevin Neufeld wrote:
>>> Martin Davis wrote:
>>>> Kevin Neufeld wrote:
>>>>> If you have overlapping polygons then use ST_Relate with a custom
>>>>> matrix. IE. ST_Relate(g1, g2, '****1****') will return TRUE for
>>>>> all geometry pairs where the intersection of the boundaries occur
>>>>> on a line (1).
>>>> You need to know the type of the input geometries. The above
>>>> pattern will work for polygons, but not for lines. The L/L and P/L
>>>> situation require different patterns:
>>>> L/L: 1********
>>>> P/L: ***1*****
>>> Ah, yes, of course :)
>>> The symmetric relation is also true:
>>> L/P: *1*******
>>> -- Kevin
>>> postgis-users mailing list
>>> postgis-users at postgis.refractions.net
> postgis-users mailing list
> postgis-users at postgis.refractions.net
Senior Technical Architect
Refractions Research, Inc.
More information about the postgis-users