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 > -- 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
