<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7652.24">
<TITLE>RE: [geos-devel] OverlayOp JTS port</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->

<P><FONT SIZE=2>Okay so I guess we still need the elevation thing.&nbsp; Can we get rid of the checkwrong thing or is that still needed for 64-bit systems?<BR>
<BR>
On a slightly (I like things I can understand note :)), can we update the header about the Last Ported. Its driving me a bit crazy that the last ported note doesn't actually<BR>
seem to match the vintage of the JTS code (i suspect there are toher classes where this is the case) and I'm having to verify that.&nbsp; That seems like an important thing to have handy if we are going to be migrating new changes from JTS into GEOS.<BR>
<BR>
Thanks,<BR>
Regina<BR>
<BR>
-----Original Message-----<BR>
From: geos-devel-bounces@lists.osgeo.org on behalf of Martin Davis<BR>
Sent: Wed 9/17/2008 7:09 PM<BR>
To: GEOS Development List<BR>
Subject: Re: [geos-devel] OverlayOp JTS port<BR>
<BR>
Not so much pure - I just like things that I can understand&nbsp; 8^)<BR>
<BR>
Paul Ramsey wrote:<BR>
&gt; Z-processing was added under contract to the Metropolitan Airport<BR>
&gt; Commission, some years ago, so that intersections (in particular)<BR>
&gt; would retain interpolated Z-values that &quot;made sense&quot;.&nbsp; This was<BR>
&gt; GEOS-only.<BR>
&gt;<BR>
&gt; Sandro also did a good deal of robustness work in GEOS only, which<BR>
&gt; dealt with failures showing up in 64-bit systems but not in 32-bit<BR>
&gt; systems. Mostly these were in the form of perturbation hacks, rounding<BR>
&gt; things up until they worked, and so on. Martin is (mostly) too pure to<BR>
&gt; result to these kinds of things :)<BR>
&gt;<BR>
&gt; P.<BR>
&gt;<BR>
&gt; On Wed, Sep 17, 2008 at 2:33 PM, Martin Davis &lt;mbdavis@refractions.net&gt; wrote:<BR>
&gt;&nbsp;&nbsp;<BR>
&gt;&gt; I can confirm - if GEOS is doing something with computing new Z-values this<BR>
&gt;&gt; is something which is NOT in JTS.&nbsp; I vaguely recollect that this is<BR>
&gt;&gt; something which Sandro added.<BR>
&gt;&gt;<BR>
&gt;&gt; Obe, Regina wrote:<BR>
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&gt;&gt;&gt; Okay I did a quick union run of a 3 d geometry in PostGIS and it<BR>
&gt;&gt;&gt; apparently does do something with the z index<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; SELECT ST_AsEWKT(ST_Union(ST_MakePoint(x,y,z)))<BR>
&gt;&gt;&gt; FROM generate_series(1,5) x<BR>
&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CROSS JOIN generate_series(2,10) y<BR>
&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CROSS JOIN generate_series(1,10) z;<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; yields<BR>
&gt;&gt;&gt; MULTIPOINT(1 2 9.001953125,1 3 9.001953125,1 4 9.001953125,1 5<BR>
&gt;&gt;&gt; 9.001953125,1 6 9.001953125,1 7 9.001953125,1 8 9.001953125,1 9<BR>
&gt;&gt;&gt; 9.001953125,1 10 9.001953125,2 2 9.001953125,2 3 9.001953125,2 4<BR>
&gt;&gt;&gt; 9.001953125,2 5 9.001953125,2 6 9.001953125,2 7 9.001953125,2 8<BR>
&gt;&gt;&gt; 9.001953125,2 9 9.001953125,2 10 9.001953125,3 2 9.001953125,3 3<BR>
&gt;&gt;&gt; 9.001953125,3 4 9.001953125,3 5 9.001953125,3 6 9.001953125,3 7<BR>
&gt;&gt;&gt; 9.001953125,3 8 9.001953125,3 9 9.001953125,3 10 9.001953125,4 2<BR>
&gt;&gt;&gt; 9.001953125,4 3 9.001953125,4 4 9.001953125,4 5 9.001953125,4 6<BR>
&gt;&gt;&gt; 9.001953125,4 7 9.001953125,4 8 9.001953125,4 9 9.001953125,4 10<BR>
&gt;&gt;&gt; 9.001953125,5 2 9.001953125,5 3 9.001953125,5 4 9.001953125,5 5<BR>
&gt;&gt;&gt; 9.001953125,5 6 9.001953125,5 7 9.001953125,5 8 9.001953125,5 9<BR>
&gt;&gt;&gt; 9.001953125,5 10 9.001953125)<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; Running the same exercise in OpenJump and looking at the output of GML,<BR>
&gt;&gt;&gt; WKT, CL I don't get a Z-axis.<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; I can't tell if its just that the z is not supported in those formats or<BR>
&gt;&gt;&gt; if its just because in JTS the z axis is thrown out.&nbsp; Looking at the JTS<BR>
&gt;&gt;&gt; code, I have no reason to believe its doing anything with z.<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; I presume the GEOS elevationMatrix-&gt;elevate(resultGeom) is responsible<BR>
&gt;&gt;&gt; for this.<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; The question I have is - isn't this hmm wrong - I suppose we can say its<BR>
&gt;&gt;&gt; fuzzily right.<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; Thanks,<BR>
&gt;&gt;&gt; Regina<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; -----Original Message-----<BR>
&gt;&gt;&gt; From: geos-devel-bounces@lists.osgeo.org<BR>
&gt;&gt;&gt; [<A HREF="mailto:geos-devel-bounces@lists.osgeo.org">mailto:geos-devel-bounces@lists.osgeo.org</A>] On Behalf Of Martin Davis<BR>
&gt;&gt;&gt; Sent: Wednesday, September 17, 2008 2:24 PM<BR>
&gt;&gt;&gt; To: GEOS Development List<BR>
&gt;&gt;&gt; Subject: Re: [geos-devel] OverlayOp JTS port<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; The original plan for GEOS was that it would track JTS 100%.&nbsp; This was to<BR>
&gt;&gt;&gt; simplify porting new functionality as it is added to JTS.&nbsp; However, at one<BR>
&gt;&gt;&gt; point I think Sandro did some extra work on trying to improve GEOS<BR>
&gt;&gt;&gt; robustness.&nbsp; This is probably where the checkObviouslyWrongResult came from.<BR>
&gt;&gt;&gt;&nbsp; After this was done, JTS caught up - so this method may not be needed any<BR>
&gt;&gt;&gt; more.<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; Obe, Regina wrote:<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&gt;&gt;&gt;&gt; I apologize for the barrage of questions.&nbsp; As far as I can tell the<BR>
&gt;&gt;&gt;&gt; OverlayOp.cpp is vintage JTS 1.7 (which I think is same as the JTS 1.9<BR>
&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&gt;&gt;&gt;&gt; for this class)<BR>
&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt; except it has the additional calls of<BR>
&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt; checkObviouslyWrongResult() - which most of that code looks like it would<BR>
&gt;&gt;&gt;&gt; never<BR>
&gt;&gt;&gt;&gt; be called because of the #ifdefs except for the<BR>
&gt;&gt;&gt;&gt; assert(resultGeom);<BR>
&gt;&gt;&gt;&gt; UNREFERENCED_PARAMETER(opCode); (have no clue what this does)<BR>
&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt; and also a<BR>
&gt;&gt;&gt;&gt; elevationMatrix-&gt;elevate(resultGeom);<BR>
&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt; which looks like will get called since USE_ELEVATION_MATRIX 1.<BR>
&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt; Is the elevationMatrix designed to deal with 3d geometries?&nbsp; Didn't<BR>
&gt;&gt;&gt;&gt; realize<BR>
&gt;&gt;&gt;&gt; Union actually works with those, but then I never tried it with 3d.<BR>
&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt; So I'm a little puzzled why these 2 extra function calls since I always<BR>
&gt;&gt;&gt;&gt; thought<BR>
&gt;&gt;&gt;&gt; GEOS was at best on par with JTS?<BR>
&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt; Thanks,<BR>
&gt;&gt;&gt;&gt; Regina<BR>
&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt; -----Original Message-----<BR>
&gt;&gt;&gt;&gt; From: geos-devel-bounces@lists.osgeo.org on behalf of Obe, Regina<BR>
&gt;&gt;&gt;&gt; Sent: Wed 9/17/2008 9:26 AM<BR>
&gt;&gt;&gt;&gt; To: GEOS Development List<BR>
&gt;&gt;&gt;&gt; Subject: [geos-devel] OverlayOp JTS port<BR>
&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt; I'm looking at the operation.overlay.OverlayOp in geos trunk<BR>
&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt; In the header it says<BR>
&gt;&gt;&gt;&gt; Last port: operation/overlay/OverlayOp.java rev. 1.23<BR>
&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt; But I don't believe this to be right since when I compare the<BR>
&gt;&gt;&gt;&gt; computeOverlay methods<BR>
&gt;&gt;&gt;&gt; against 1.2 and 1.3 versions of JTS codebase, it has an additional<BR>
&gt;&gt;&gt;&gt; EdgeNodingValidator check which wasn't introduced until later versions<BR>
&gt;&gt;&gt;&gt; of JTS.<BR>
&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt; So I'm wondering is the OverlayOp.cpp a mix of JTS versions or is the<BR>
&gt;&gt;&gt;&gt; comment above just plain wrong.<BR>
&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt; It also has a checkObviouslyWrongResult() check at the end of<BR>
&gt;&gt;&gt;&gt; computerOverlay which I haven't figured out which version that was<BR>
&gt;&gt;&gt;&gt; introduced in JTS (its not in 1.2,1.3, or 1.9).&nbsp; Is this a GEOS<BR>
&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&gt;&gt;&gt; specific<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&gt;&gt;&gt;&gt; check that has no JTS equivalent?<BR>
&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt; Thanks,<BR>
&gt;&gt;&gt;&gt; Regina<BR>
&gt;&gt;&gt;&gt; -----------------------------------------<BR>
&gt;&gt;&gt;&gt; The substance of this message, including any attachments, may be<BR>
&gt;&gt;&gt;&gt; confidential, legally privileged and/or exempt from disclosure<BR>
&gt;&gt;&gt;&gt; pursuant to Massachusetts law. It is intended<BR>
&gt;&gt;&gt;&gt; solely for the addressee. If you received this in error, please<BR>
&gt;&gt;&gt;&gt; contact the sender and delete the material from any computer.<BR>
&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt; _______________________________________________<BR>
&gt;&gt;&gt;&gt; geos-devel mailing list<BR>
&gt;&gt;&gt;&gt; geos-devel@lists.osgeo.org<BR>
&gt;&gt;&gt;&gt; <A HREF="http://lists.osgeo.org/mailman/listinfo/geos-devel">http://lists.osgeo.org/mailman/listinfo/geos-devel</A><BR>
&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&gt;&gt;&gt; ------------------------------------------------------------------------<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&gt;&gt;&gt;&gt; _______________________________________________<BR>
&gt;&gt;&gt;&gt; geos-devel mailing list<BR>
&gt;&gt;&gt;&gt; geos-devel@lists.osgeo.org<BR>
&gt;&gt;&gt;&gt; <A HREF="http://lists.osgeo.org/mailman/listinfo/geos-devel">http://lists.osgeo.org/mailman/listinfo/geos-devel</A><BR>
&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&gt;&gt; --<BR>
&gt;&gt; Martin Davis<BR>
&gt;&gt; Senior Technical Architect<BR>
&gt;&gt; Refractions Research, Inc.<BR>
&gt;&gt; (250) 383-3022<BR>
&gt;&gt;<BR>
&gt;&gt; _______________________________________________<BR>
&gt;&gt; geos-devel mailing list<BR>
&gt;&gt; geos-devel@lists.osgeo.org<BR>
&gt;&gt; <A HREF="http://lists.osgeo.org/mailman/listinfo/geos-devel">http://lists.osgeo.org/mailman/listinfo/geos-devel</A><BR>
&gt;&gt;<BR>
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&gt; _______________________________________________<BR>
&gt; geos-devel mailing list<BR>
&gt; geos-devel@lists.osgeo.org<BR>
&gt; <A HREF="http://lists.osgeo.org/mailman/listinfo/geos-devel">http://lists.osgeo.org/mailman/listinfo/geos-devel</A><BR>
&gt;<BR>
&gt;&nbsp;&nbsp;<BR>
<BR>
--<BR>
Martin Davis<BR>
Senior Technical Architect<BR>
Refractions Research, Inc.<BR>
(250) 383-3022<BR>
<BR>
_______________________________________________<BR>
geos-devel mailing list<BR>
geos-devel@lists.osgeo.org<BR>
<A HREF="http://lists.osgeo.org/mailman/listinfo/geos-devel">http://lists.osgeo.org/mailman/listinfo/geos-devel</A><BR>
<BR>
</FONT>
</P>

</BODY>
</HTML>