[Geomoose-users] Scalebar & Measure
Johan Forsman
Johan.Forsman at LA.GOV
Fri Dec 17 13:44:29 EST 2010
Yes, I also just attempted the geodesic:true setting both in main.js and compiled.js and it has no effect on the scale line. Was it not implemented in 2.8 perhaps? Well never mind; I just saw your followup indicating just that.
On point 2, if no OL function currently exists to perform the necessary correction, might it be possible to crudely apply a correction factor somewhere in the GM code for the selection buffer? It won't be accurate, but it will be substantially less inaccurate than the current state. Since mine appear to range from 0.89 to 0.86 (south to north) I might chose to use 0.875, which at worst results in a 2% deviation from the "true" value. Applied to the earlier example my 1-mile selection radius might then only be 0.98 miles (~100 feet to short), but this is far better than the current result of 0.86 miles.
From: Brent Fraser [mailto:bfraser at geoanalytic.com]
Sent: Friday, December 17, 2010 10:01 AM
To: Johan Forsman
Cc: 'geomoose-users at lists.sourceforge.net'
Subject: Re: [Geomoose-users] Scalebar & Measure
Johan,
Interesting stuff.
Looking at my experimental source from a few months back, I had added a property to main.js around line 98:
if(CONFIGURATION.scale_line.enabled) {
Map.addControl(new OpenLayers.Control.ScaleLine({
bottomOutUnits: CONFIGURATION.scale_line.bottom_units,
topOutUnits: CONFIGURATION.scale_line.top_units,
geodesic: true, /* bfraser */
maxWidth: CONFIGURATION.scale_line.width
}));
}
but testing today it seems to have no effect in "correcting" the scalebar length. I'll have to do more investigation. Note from the OpenLayers doc:
geodesic
{Boolean} Use geodesic measurement. Default is false. The recommended setting for maps in EPSG:4326 is false, and true EPSG:900913. If set to true, the scale will be calculated based on the horizontal size of the pixel in the center of the map viewport.
Your point 2 is a tough one. The search radius is a map projection distance and would have to be corrected by the map projection point scale factor, or adjusted to be a geodesic distance. I don't know if OpenLayers has a function to do either of those.
Best Regards,
Brent Fraser
On 12/17/2010 8:04 AM, Johan Forsman wrote:
All:
I just discovered this issue. After applying Brent's fix below the measure tool appears to return the correct values, but there are other remaining issues.
I am using the 900913 projection for all data.
1. The scale bar is off. 500 meters on the scale bar measures to 431 meters, or a factor of ~0.86. This is not a critical issue, but it would be "nice" if it measured the same.
2. The select feature, using By Point, is a very clever way to get all features within a certain radius of a point location. However this function will return a radius that is shorter by about the same amount as the scale bar. This is an important issue. I have attached 3 screenshots illustrating the problem.
The GM shot shows what is supposed to be a 1-mile radius, plus the new measurement (post-fix) to the most distant feature of interest.
The GE-EC shot shows the measured distance using an all-Google application.
The ArcGIS shot shows the actual size of a circle with an (presumably ArcGIS is authoritative) 1-mile radius in the same location. These data are in NAD83 UTM 15N.
I measured the scale factors on a 200 meter scale bar (1:6771) for my state (Louisiana) and found them to be about 0.86 at the northern extreme and 0.89 at the southern extreme.
Is there any way I can implement some type of automatic correction to the select tool, and any other tool that may be affected by this behavior? Certainly I can inform the users that they need to add x % to their chosen buffer, but I am not prepared to trust the users to really do that.
Thanks!
/Johan.
-----Original Message-----
From: Brent Fraser [mailto:bfraser at geoanalytic.com]
Sent: Wednesday, May 26, 2010 1:53 PM
To: Len Kne
Cc: 'geomoose-users at lists.sourceforge.net<mailto:geomoose-users at lists.sourceforge.net>'
Subject: Re: [Geomoose-users] Scalebar & Measure
Len(and others interested in measuring),
Here's my solution to the measure problem:
In main.js somewhere around line 138 add the two lines below marked with a
"//BWF":
Tools['measure'] = new
OpenLayers.Control.GeoMooseMeasure(OpenLayers.Handler.MeasurePath,
measureToolOptions);
Tools['measure'].geodesic = true; //BWF
Tools['measurearea'] = new
OpenLayers.Control.GeoMooseMeasure(OpenLayers.Handler.MeasurePolygon,
measureToolOptions);
Tools['measurearea'].geodesic = true; //BWF
Thoughts?
Brent
Brent Fraser wrote:
Paul, Len,
Our scale problem is a (mostly) map projection issue. All map
projections
introduce distortions in trying to represent a round(ish) Earth on a
flat plane.
Mercator is no different: it is like wrapping an up-right cylinder
around the
Earth, projecting light from the center onto the cylinder
(http://en.wikipedia.org/wiki/Mercator_projection). As you can imagine
the
distortions get "worse" the further from the equator. The distortions
can be
modeled as a Point Scale Factor. At the equator the Point Scale Factor
is 1.0,
at latitude 60 degrees North (or South), the scale factor is 0.5!
So what's the solution? Here's mine:
1. Enhance Proj4 (and Proj4js) to return the Point Scale factor
(given the
projection and a location)
2. Enhance MapServer and Openlayers to use the Point Scale Factor in
calculating distances and scale.
I'm trying to drum up interest, but so no takers....
http://osgeo-org.1803224.n2.nabble.com/Point-Scale-factor-service-
td4938743.html
http://osgeo-org.1803224.n2.nabble.com/Re-3265-Scale-dependent-layer-
switching-error-with-Mercator-td4966902.html
Best Regards,
Brent Fraser
Len Kne wrote:
The scale bar issue with the web Mercator projection is a limitation of
OpenLayers, the application GeoMOOSE 2.x uses to render the map frame.
There has been discussion on the OpenLayers site about providing a
patch (this link offers a patch http://trac.openlayers.org/ticket/1890
)
in the next version 2.9. I'm sure GM will upgrade to OL 2.9, but not
sure there is any schedule in place to do this.
The cursor issue is also kind of fun because it seems each browser
handles the custom icons differently. Here's the attribute in the
mapbook which defines the query for the Identify service:
cursor="url('cursors/identify2.cur') 9
9,url('cursors/identify2.cur'),auto"
This makes three attempts to draw the cursor, the first offsets the
mouse click 9 pixels from the top and the left. Firefox can use this
value and seems to line the mouse click up pretty good with the
crosshair. However, IE cannot handle the offset adjustment, so it
reads
the second cursor definition. There are tools like AT File Mole which
can be used to edit the hotspot of a cursor. Attached is the latest
version I have been using for Identify service, again this seems to
line
the crosshair up pretty well with the mouse click. If you are using
Safari or Chrome, these setting don't seem to work at all and I would
recommend not using customer cursors with those browsers.
Len
*From:* Wirth, Paul [mailto:Paul.Wirth at kniferiver.com]
*Sent:* Saturday, May 01, 2010 9:03 PM
*To:* 'geomoose-users at lists.sourceforge.net<mailto:geomoose-users at lists.sourceforge.net>'
*Subject:* [Geomoose-users] Scalebar & Measure
Two questions:
1. I have a web Mercator application, and I noticed that the
scalebar does not display the correct distance. For instance, when the
scalebar shows a distance of 20 miles, it measures only 13.8 miles. I
know the measure tools are working correctly, so I assume this is a
scalebar issue. Any thoughts on how to fix this?
2. I think this question was asked before, but I can't seem to
find it on the e-mail list. With the measure tools, the cursor does
not
start measuring at the "crosshairs" when the user clicks, but rather in
the NW quadrant of the crosshairs. Is there a way to change it so the
measure start point will be on the crosshairs?
-----------------------------------------------------------------------
-
-----------------------------------------------------------------------
-------
-----------------------------------------------------------------------
-
_______________________________________________
Geomoose-users mailing list
Geomoose-users at lists.sourceforge.net<mailto:Geomoose-users at lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/geomoose-users
------------------------------------------------------------------------
------
_______________________________________________
Geomoose-users mailing list
Geomoose-users at lists.sourceforge.net<mailto:Geomoose-users at lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/geomoose-users
--------------------------------------------------------------------------
----
_______________________________________________
Geomoose-users mailing list
Geomoose-users at lists.sourceforge.net<mailto:Geomoose-users at lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/geomoose-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/geomoose-users/attachments/20101217/f5f7e9f8/attachment.html
More information about the Geomoose-users
mailing list