FYI: the app we're building needs to support Oracle 9i + I was testing with Oracle 10g using the SDO_BUFFER function. When we tested against 9i, it broke. We looked the issue up and it appears that there was a bug in 9i with SDO_BUFFER that was fixed in 10g and apparently "it is too complex to backport" (their words).
So, there you have it. Now, I am forced to do the buffer calculation in Java anyway :) I have used Geotools long ago, so I am semi-familiar with it and I will probably try that first. First a dumb question...is this a naive solution to the same problem: http://mathforum.org/library/drmath/view/66987.html ...that is to say, couldn't I use the recommendation there to get a reasonable approximation of the buffer calculation from geographic coordinates, or am I missing something fundamental? Regards, Davis On Wed, Feb 11, 2009 at 12:39 PM, Stefan Steiniger <[email protected]> wrote: > well.. > > - Geotools: http://geotools.codehaus.org/Module+Matrix > > and > > - degree: > http://wald.intevation.org/plugins/scmsvn/viewcvs.php/docs/documentation/crs/?root=deegree > (I hope that is the correct link) > have projection functions > > I know this as we, from OpenJUMP, ponder with an implementation of those - > probably the latter one. Meanwhile we have only this plugin-workaround: > http://www.openjump.org/wiki/show/Working+with+Projections > > but to write back to oracle is probably a difficult part too? > > stefan > > Davis Ford wrote: >> >> Martin / Larry - thanks for the info. >> >> Any tips / pointers / clues on how to do the projection / >> re-projection using the JTS API? >> >> Regards, >> Davis >> >> On Wed, Feb 11, 2009 at 11:43 AM, Martin Davis <[email protected]> >> wrote: >>> >>> (I'm posting this to the JTS list, since it's really a JTS question) >>> >>> This seems to be geodetic month for JTS! >>> >>> Answers to your questions: >>> >>> 1. JTS is not "coordinate system-aware", and does not use the SRID in its >>> calculations. So you can set it or not, and it won't make any difference >>> >>> 2. JTS assumes that the coordinates of geometries are located in an >>> infinite >>> Cartesian (flat) 2D coordinate system. All quantities (length, area, >>> distance, angle, etc) are relative in this coordinate system. So since >>> you >>> are providing your input in decimal degrees, those are the units that the >>> buffer distance must be expressed in. Of course, this doesn't work all >>> that >>> well for large distances in a geodetic (ellipsoidal) coordinate system - >>> the >>> computed geoemtry will be only an approximation to the true shape. >>> >>> What people often do is project their geodetic data to a local planar >>> projection, compute there, and then reproject. There's been a bit of a >>> thread about this on the JTS list recently. (No code, though - which >>> would >>> be nice to have). >>> >>> As you point out, Oracle appears to do the "right thing" in this case - >>> kudos to them. They seem to seamlessly blend geodetic and planar data >>> handling, which is certainly nice to have. Maybe one day JTS will >>> support >>> this - but it's complex to implement. >>> >>> Davis Ford wrote: >>>> >>>> Hi, >>>> >>>> If I have an Oracle table with an SDO_GEOMETRY column, and I insert a >>>> point into it - example: >>>> >>>> MDSYS.SDO_GEOMETRY(2001, 8307, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1, 1, >>>> 1), MDSYS.SDO_ORDINATE_ARRAY(-82.90755596903085, 42.40409951227155)) >>>> >>>> Then I can use the SDO_GEOM.SDO_BUFFER function to get a buffer around >>>> it (and specify the units in miles) -> >>>> >>>> // 1.5 miles, 0.5 tolerance >>>> SELECT SDO_GEOM.SDO_BUFFER(a.geometry, 1.5, 0.5, 'unit=mile') geom >>>> FROM MY_TABLE a.id = 1; >>>> >>>> Simple enough, but how do I do the same thing in JTS? If I try the >>>> following: >>>> >>>> Geometry point = new WKTReader().read("POINT(-82.90755596903085 >>>> 42.40409951227155)"); >>>> >>>> // question1: should I set the SRID? Oracle uses 8307 for WGS:84, but >>>> JTS seems to ignore SRID in calculations, is this true? >>>> >>>> // question2: what units does buffer take? I make the assumption of >>>> meters, but this is wrong >>>> >>>> // try converting 1.5 miles to meters >>>> double meters = 2414.016 >>>> Geomtry buffer = point.buffer(meters); >>>> >>>> This is very wrong since it gives me polygon with coordinates that are >>>> outside -180/180, -90/90. Do I assume then that buffer takes radians >>>> I guess? >>>> >>>> I'm just trying to accomplish the same thing I can do in Oracle above >>>> with >>>> JTS. >>>> >>>> Thanks in advance, >>>> Davis >>>> >>>> >>> -- >>> Martin Davis >>> Senior Technical Architect >>> Refractions Research, Inc. >>> (250) 383-3022 >>> >>> _______________________________________________ >>> jump-users mailing list >>> [email protected] >>> http://lists.refractions.net/mailman/listinfo/jump-users >>> >> >> >> > _______________________________________________ > jump-users mailing list > [email protected] > http://lists.refractions.net/mailman/listinfo/jump-users > -- Zeno Consulting, Inc. home: http://www.zenoconsulting.biz blog: http://zenoconsulting.wikidot.com p: 248.894.4922 f: 313.884.2977 _______________________________________________ jump-users mailing list [email protected] http://lists.refractions.net/mailman/listinfo/jump-users
