Good point, Michael.  That would be an elegant and efficient way to
implement the "strict crosses" predicate.

And there's a fair bit of existing SegmentIntersector code which does
"almost" the needed thing.  See for instance SegmentIntersectionDetector.
The net new code needed is the code to build the local topology at each
 intersection to test for strict crossing.

On Mon, Oct 20, 2014 at 2:48 PM, Michael Michaud <
[email protected]> wrote:

>  Hi,
>
> It has been a long time I've not played with noding package, but would a
> Noder (ex. MCIndexNoder) with an appropriate SegmentIntersector be a
> solution ?
>
> Michaƫl
>
> Unfortunately the DE-9IM model (which is used to define the OGC SFS
> spatial predicates which JTS implements) doesn't allow specifying true line
> crossing (as far as I can tell).  So there's no direct way to compute this
> using existing JTS predicates.
>
>  Determining this condition would require building a simple topological
> structure for each LineString (essentially a chain of segments). Then each
> segment can be checked against all others to determine if a true crossing
> exists.  There are three situations which need to be checked: a) crossing
> at interior point of 2 segments, (b) crossing at a vertex on one segment,
> and (c) crossing at vertices on both segments.  (This is why the full
> topology is required, rather than just checking segments individually).  To
> make this performant, the segments would need to be indexed in some way
> (for instance, using the JTS STRtree
>
>  This seems like a useful predicate to have for JTS.  Feel free to post
> the code if you implement it.
>
>
> On Mon, Oct 20, 2014 at 6:28 AM, Tore Halset <[email protected]> wrote:
>
>> Hello.
>>
>> I have two LineString depth contours that I want to check for crossing.
>> For this domain, overlap/touch is fine, but not crossing.
>>
>> The following junit-formatted example show two LineStrings that touch
>> each other in (2 2). This is reported as a crossing by
>> LineString#crosses(LineString), but for my domain this is not a cross.
>>
>>     public void testCrosses() throws ParseException {
>>         WKTReader r = new WKTReader();
>>         LineString ls1 = (LineString) r.read("LINESTRING (1 2, 3 2)");
>>         LineString ls2 = (LineString) r.read("LINESTRING (1 1, 2 2, 3
>> 1)");
>>         assertFalse(ls1.crosses(ls2));
>>     }
>>
>> Any tips to how I can check for crossing, but not touches like this?
>>
>> Regards,
>> Tore Halset.
>>
>> ------------------------------------------------------------------------------
>> Comprehensive Server Monitoring with Site24x7.
>> Monitor 10 servers for $9/Month.
>> Get alerted through email, SMS, voice calls or mobile push notifications.
>> Take corrective actions from your mobile device.
>> http://p.sf.net/sfu/Zoho
>> _______________________________________________
>> Jts-topo-suite-user mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/jts-topo-suite-user
>>
>
>
>
> ------------------------------------------------------------------------------
> Comprehensive Server Monitoring with Site24x7.
> Monitor 10 servers for $9/Month.
> Get alerted through email, SMS, voice calls or mobile push notifications.
> Take corrective actions from your mobile device.http://p.sf.net/sfu/Zoho
>
>
>
> _______________________________________________
> Jts-topo-suite-user mailing 
> [email protected]https://lists.sourceforge.net/lists/listinfo/jts-topo-suite-user
>
>
>
>
> ------------------------------------------------------------------------------
> Comprehensive Server Monitoring with Site24x7.
> Monitor 10 servers for $9/Month.
> Get alerted through email, SMS, voice calls or mobile push notifications.
> Take corrective actions from your mobile device.
> http://p.sf.net/sfu/Zoho
> _______________________________________________
> Jts-topo-suite-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/jts-topo-suite-user
>
>
------------------------------------------------------------------------------
Comprehensive Server Monitoring with Site24x7.
Monitor 10 servers for $9/Month.
Get alerted through email, SMS, voice calls or mobile push notifications.
Take corrective actions from your mobile device.
http://p.sf.net/sfu/Zoho
_______________________________________________
Jts-topo-suite-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jts-topo-suite-user

Reply via email to