[OpenLayers-Dev] Patrch for getting vector drawing working over
the 180 line going.
Tim Schaub
tschaub at opengeo.org
Fri Aug 20 11:38:19 EDT 2010
On 8/19/10 8:34 PM, Phil Scadden wrote:
>
>> My comment here was meant to say that I would not be in favor of any
>> change that made it so the distance between (-170, 0) and (170, 0) was
>> 20 (by default).
Currently, our geometries don't know anything about coordinate reference
systems.
So, yes, the distance between (-170, 0) and (170, 0) is 340. And this
is not an angular measure. And there are no units.
And, the distance between (-170000, 0) and (170000, 0) is 340000. And
these are perfectly valid geometries.
Again, in the future, geometry calculations may be smarter. I'm just
describing the way things are now.
> Am I not correct though in assuming that current geometric model assumes
> by default that the angular distance is 340? I am contending that this
> is a very poor default because I cannot think of a real world line
> structure where this is likely to be the correct way to construct the line.
>
>> I understand the frustration. If you can get involved in (or have
>> suggestions for) OpenLayers 3.0 with regard to a different geometry
>> model (or changes at some other level), that would be great.
>>
> Well the question of the how a line represented by only two points 170
> 0, -170 0 is surely key. It is inherently ambiguous so some convention
> must be applied. Inhouse we use shortest angular difference. In
> principle, rendering on the sphere means operating in angles but
> pragmatically projected coordinates can often be used. I dont like
> coordinates where abs(lon)> 180 but can the projection system be
> confident that servers will not supply this? I think OL can be
> re-engineered to do this in several way without a rewrite into angular
> geometry which I agree would be slow. There is generally only a problem
> when
> a/ ESPG indicates that OL is dealing with an earth projection (a not say
> a building map or drawing schematic).
> b/ the 180 line is within the viewport. (which is automatically the case
> when either pole in within the viewport.
>
> Detection of this need only happen when extent or projection changes and
> a variable "IDL in viewport" true/false can be set in the map object.
>
> When IDL in viewport, then special handing is required in a number of
> places and it would be good to have utility routines to make the
> programming reasonably uniform. The issues as I see it ( and I dont know
> enough to answer them).
>
> 1/ should extent be allowed to exceed to baselayer.maxextent? At moment,
> this is a good way to detect the presence of 180 line. It would make an
> extent of (170, -10, -170 10) (or strictly projected equivalent) legal.
> I actually think this is bad idea. Extents should forced so right
> exceeds left or maths gets way too messy. A property for extent of
> includesIDL to indicate that coordinates being tested need to be
> corrected for IDL prior to test.
>
> 2/ interaction with server. this applied to coordinates passed to WFS
> spatial queries and any calls that would create geometry in the server.
> Only geoserver, (and only in experimental config) as far as I know
> handles IDL. ArcGIS server does okay provided projection has horizons
> (ie not a whole earth projection).
>
> 3/ Location of IDL handling code for vector rendering. Is it high level
> (eg in the handler at moment, but this doesnt deal with GML/KML/etc)? or
> is it low level (eg elements or right down in the renderers). I
> personally dont think you can deal with IDL on a per point basis,
> ignoring the line relationship or you will get the issue of 170 0, -170
> 0 making life difficult. If map extent exceeded 180 degrees, then you
> are surely left with having to check for shortest path? I'm inclined to
> try a suck-and-see approach with lowest part of elements but
> verification looks tricky. The problem with doing it in the renderer.js
> is that you change geometry. This could be a problem if passed back to a
> server.
>
>
--
Tim Schaub
OpenGeo - http://opengeo.org
Expert service straight from the developers.
More information about the Dev
mailing list