The idea is there is a very simple and accurate way to calculate scale if
the units are linear.  So ScaleUtilities uses 2 ways to calculate the scale
of the map.  The method should probably called usesAngularUnits or something
like that.  But I copied the method so I left the name alone.  If you can
determine a better way to detect if the units are angular please let me
know.

JEsse

On Thu, Apr 9, 2009 at 2:19 AM, Jody Garnett <[email protected]> wrote:

> Hi Harald:
>
> I am not sure what ScaleUtils is doing here; I expect there is a gap.
> I think the assumption is about "units" rather than the name "lat" or
> "long". I suspect Jesse has an optimized path for lat/long and this
> method is used to check what is going on before taking a longer more
> expensive code path involving transformations?
>
> Have a look at what calls this method? Also note we may need to teach
> the java units system about "NDS" in order to get this to work.
>
> Jody
>
>
> On Thu, Apr 9, 2009 at 2:11 AM, Wellmann, Harald
> <[email protected]> wrote:
> > I'm trying to make uDig use a non-standard CRS (called NDS) on my data,
> instead of converting all coordinates to WGS84 before uDig sees them.
> >
> > My CRS is simply a scaled version of WGS84, where 360° = 2^32. The CRS is
> defined by WKT, by replacing the UNIT clause from WGS84 by
> >
> > UNIT["NDS", 0.000000001462918079267]
> >
> > The MathTransforms between WGS84 and NDS seem to work.
> >
> > Now I'm getting the following exception when opening my map:
> >
> > Caused by: javax.measure.converter.ConversionException:
> rad*1.462918079267E-9 is not compatible with m
> >        at javax.measure.unit.Unit.getConverterTo(Unit.java:224)
> >        at
> net.refractions.udig.project.internal.render.impl.ScaleUtils.fromCrsToMeter(ScaleUtils.java:64)
> >        at
> net.refractions.udig.project.internal.render.impl.ScaleUtils.calculateScaleDenominator(ScaleUtils.java:325)
> >        at
> net.refractions.udig.project.internal.render.impl.ViewportModelImpl.getScaleDenominator(ViewportModelImpl.java:1048)
> >        at
> net.refractions.udig.render.internal.feature.basic.BasicFeatureRenderer.render(BasicFeatureRenderer.java:298)
> >
> >
> >
> > and the cause for this seems to be the isLatLong() method
> >
> >
> >        /**
> >         * Determines if the crs is a lat/long crs (has angular units)
> >         *
> >         * @return true if the crs is a latlong crs (has angular units)
> >         */
> >        public static boolean isLatLong(CoordinateReferenceSystem crs) {
> >                Unit<?> unit = getUnit(crs);
> >                Unit<?> degrees = getUnit(DefaultGeographicCRS.WGS84);
> >                boolean isLatLong = CRS.equalsIgnoreMetadata(unit,
> degrees);
> >                return isLatLong;
> >        }
> >
> > In fact the comment does not seem to match the implementation. My CRS is
> a lat/lon CRS and it has angular units, only the unit is not degree but a
> multiple of degree, both are derived from rad.
> >
> > Is something wrong with my definitions, is there a gap in the ScaleUtils,
> or are all my attempts futile, since the implicit assumption
> lat/long=degrees is used all over the place....?
> >
> > Any hints appreciated...
> >
> > Regards,
> >
> > Harald
> >
> > *******************************************
> > innovative systems GmbH Navigation-Multimedia
> > Geschaeftsfuehrung: Edwin Summers - Michael Juergen Mauser
> > Sitz der Gesellschaft: Hamburg - Registergericht: Hamburg HRB 59980
> >
> > *******************************************
> > Diese E-Mail enthaelt vertrauliche und/oder rechtlich geschuetzte
> Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail
> irrtuemlich erhalten haben, informieren Sie bitte sofort den Absender und
> loeschen Sie diese Mail. Das unerlaubte Kopieren sowie die unbefugte
> Weitergabe dieser Mail ist nicht gestattet.
> > This e-mail may contain confidential and/or privileged information. If
> you are not the intended recipient (or have received this e-mail in error)
> please notify the sender immediately and delete this e-mail. Any
> unauthorized copying, disclosure or distribution of the contents in this
> e-mail is strictly forbidden.
> > *******************************************
> > _______________________________________________
> > User-friendly Desktop Internet GIS (uDig)
> > http://udig.refractions.net
> > http://lists.refractions.net/mailman/listinfo/udig-devel
> >
> _______________________________________________
> User-friendly Desktop Internet GIS (uDig)
> http://udig.refractions.net
> http://lists.refractions.net/mailman/listinfo/udig-devel
>
_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel

Reply via email to