Thanks Jody -- this is a big help.

> I did it once when implementing an "auto" projection for WMS support (see

> org.geotools.referencing.crs.AUTOCRSAuthorityFactory.AUTO42004) . But the

> real thing is here rather than looking up a formal definition using

> CRS.decode("EPSG:3005") ... you would be wither generating some WKT and then

> parsing it; or making use of the referencing module factories to construct

> the object you want an element at a time.

>

> The user guide has some examples:

> -

http://docs.codehaus.org/display/GEOTDOC/03+CoordinateReferenceSystem>

> But as to the specifics of what you want to generate; lets look at the WKT

> definition of an equal area projection together and see what can be figured

> out - here is the definition of 3005... grabbed out of uDig 1.1.1 (which

> uses the older epsg-properties module).

>

> PROJCS["NAD83 / BC Albers",

> GEOGCS["NAD83",

> DATUM["North_American_Datum_1983",

> SPHEROID["GRS 1980", 6378137.0, 298.257222101,

> AUTHORITY["EPSG","7019"]],

> TOWGS84[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],

> AUTHORITY["EPSG","6269"]],

> PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]],

> UNIT["degree", 0.017453292519943295],

> AXIS["Lon", EAST],

> AXIS["Lat", NORTH],

> AUTHORITY["EPSG","4269"]],

> PROJECTION["Albers_Conic_Equal_Area"],

> PARAMETER["central_meridian", -126.0],

> PARAMETER["latitude_of_origin", 45.0],

> PARAMETER["standard_parallel_1", 50.0],

> PARAMETER["false_easting", 1000000.0],

> PARAMETER["false_northing", 0.0],

> PARAMETER["standard_parallel_2", 58.5],

> UNIT["m", 1.0],

> AXIS["x", EAST],

> AXIS["y", NORTH],

> AUTHORITY["EPSG","3005"]]

>

> So you can see the axis are in meters which is good; the projection is an

> albers conic equal area which is what we want; I would start fiddling with

> the central meridian and latitude of origion to line this thing up with your

> data. I would consider using udig; or your own view to visualize what is

> going on as you change the values; and once you understand what they do you

> can write some java code to reproduce your result.

>

> Jody

>

>

> On Fri, Feb 13, 2009 at 1:58 PM, Davis Ford <

[hidden email]>

> wrote:

>>

>> Thank you Jody -- I appreciate the answer.

>>

>> I'd be interested in figuring out how to generate a CRS on the fly. I

>> will investigate this more. Any pointers / tips / references are

>> greatly appreciated.

>>

>> Final quick question: is there a general projected CRS that would work

>> for North America? I am still learning all the different EPSG.

>>

http://spatialreference.org/ is great. For instance, I am using

>> EPSG:2807 and it does what I want if I insert that in the code I

>> pasted, because my point is in Michigan, but I am wondering if there

>> is one that would work (albeit with less accuracy) for North America

>> in general.

>>

>> Regards,

>> Davis

>>

>> On Thu, Feb 12, 2009 at 5:54 PM, Jody Garnett <

[hidden email]>

>> wrote:

>> > I am going to try and quickly answer; but you will need others to fill

>> > in

>> > the details:

>> > - I often know a good equal area projection for the area I will be

>> > working

>> > in (EPSG:3005 bc albers is a good CRS for working in western canada for

>> > example).

>> > - you could study how bc albers is defined and make yourself a

>> > CoordinateReferenceSystem on the fly for the specific point you are

>> > interested in

>> >

>> > Once you have the point in an equal area projection you can use buffer

>> > to

>> > get a polygon; and then transform this polygon back to the google

>> > projection

>> > if you like (it will show up as an ellipse).

>> >

>> > Jody

>> >

>> > Davis Ford wrote:

>> >>

>> >> Hi, I have a simple point obtained from Google Earth and I want to

>> >> calculate a buffer around this in units of miles. So, I think the

>> >> general pattern is like this:

>> >>

>> >> Geometry source= new WKTReader().read("POINT(-82.90755596903085

>> >> 42.40409951227155)");

>> >> CoordinateReferenceSystem sourceCRS = CRS.decode("EPSG:4326");

>> >> // what should I project it to?

>> >> CoordinateReferenceSystem targetCRS = CRS.decode("???????");

>> >> MathTransform transform = CRS.findMathTransform(sourceCRS, targetCRS,

>> >> true);

>> >>

>> >> Geometry target = JTS.transform(source, transform);

>> >>

>> >> // buffer by 1 mile (meters)

>> >> Geometry buffer = target.buffer(1609.344);

>> >>

>> >> // re-project

>> >> transform = CRS.findMathTransform(targetCRS, sourceCRS, true);

>> >> Geometry geometry = JTS.transform(buffer, transform);

>> >>

>> >> I'm not exactly sure what CRS I should project it to. If I know

>> >> exactly in the world where this is I could use that, but is there a

>> >> general EPSG that I can use where the units of distance are in meters,

>> >> so I can use the JTS buffer method correctly?

>> >>

>> >> Also, I read on the Wiki that Google is not really WGS84 -- will this

>> >> cause issues or should I try to use the CRS posted on the Wiki to get

>> >> more accurate results:

>> >>

>> >>

http://docs.codehaus.org/display/GEOTDOC/08+Google+Maps+Projection>> >>

>> >> Thanks in advance,

>> >> Davis

>> >>

>> >>

>> >>

>> >> ------------------------------------------------------------------------------

>> >> _______________________________________________

>> >> Geotools-gt2-users mailing list

>> >>

[hidden email]
>> >>

https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users>> >>

>> >

>> >

>>

>>

>>

>> --

>> Zeno Consulting, Inc.

>> home:

http://www.zenoconsulting.biz>> blog:

http://zenoconsulting.wikidot.com>> p: 248.894.4922

>> f: 313.884.2977

>

>

Zeno Consulting, Inc.