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

Reply via email to