Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[udig-devel] Thoughts on the CRS builder ui

So after a little research and a little nervous laughter, here's my
attempt at compiling a list of my thoughts on the CRS builder ui.

I assume that the end result of this builder is to make a CRS which is
available to the system through the Window | Preferences.  In v0.8 the
preference page pulls only from the ESPG authority.  In the trunk code
the CRSPropertyPage class uses the CRSChooser which appears to pull
authorities and their associated codes.

It seems to me that the appropriate Object to store any user
configured CRS data should implement CRSFactory instead of
CRSAuthorityFactory.  However, I'm not sure how interchangable the two
are, and that may be more of a philosophical debate.  So I'm working
under the assumption that user generated CRS data should be in a
UserCRSAuthorityFactory.     Code indexes can probably be managed
internally by the factory assuming users are willing to  have unique
names for their CRS objects.

But then perhaps this is overkill.  Perhaps the CRSPropertyPage should
simply have a custom CRS object which the user directly manipulates
through the preferences.

As to the actual builder interface, I can see why no one has made too
much of an attempt.  There are 7 varieties of Coordinate System
objects which play a game of mix and match with a dozen or so other
objects some of which are managed by the authority.  Then there is the
variable list of Coordinate System dependent parameters...  the WKT
format is deceptively simple compared to the complexity of a complete
CRS builder ui.

It seems to me that the builder ui should probably have a dialog of
some sort for each of the CS types and for starters it may be
sufficient just to have Projection and Geographic CS builder pages.
In fact, pramsey has suggested providing only the Projection CS and
restricting the modifiable properties to just Projection Type,
Ellipsoid, optional Datum, and a parameter list.  My gut reaction is
that many people who would use the custom CRS would need access to the
fairly non-standard options and would likely find this approach
limiting.  These are pretty hypothetical people however, and I may be
over complicating the issue.

This sort of process lends itself very well to a wizard style
solution, at least in my mind.  This would be a fairly straightforward
wizard, I would think, as long as the user is required to enter all
the information.  If we make the wizard more powerful by allowing the
user to select appropriate values from an authority, yet still give
them the option of entering their own values as they see fit, we might
have a wizard process that only a wizard could use.  For instance...

Select the Coordinate System and Name:  Projected,  Fuwjax PCS

For "Fuwjax PCS", select a Geographic Coordinate System or create your
own and name it:  Create,  Fuwjax GCS

For "Fuwjax GCS", select a Datum or create your own and name it:
Create, Fuwjax Datum

For "Fuwjax Datum", select a Spheroid or create your own and name it:
ESPG:Clarke 1866

I'm sure you're about tired of this, and there are still a dozen more
properties to set.  It is quite possible I'm being overdramatic about
the bloat this wizard could achieve, but again, it seems to me that
the complexity of a full solution to a CRS builder ui is staggering
especially compared to the presumably few people who would appreciate
its capabilities.

An initial iteration of the builder perhaps should simply be a text
box on the preference page that parses a WKT string and supplies the
resulting CRS to the Map instances.  This satisfies the natural
requirement of getting a CRS in the system without requiring it to be
in the authority list.  Perhaps then this text box could be extended
into a WKT editor which could perform quick assists from a selected
authority.  This has the advantage of allowing novices and CRS gurus
alike to build a CRS from scratch yet provides a way for Martin's
suggestion of editing an existing CRS.

After a conversation with pramsey, here's the gameplan (from pramsey
with context added by me in brackets):

(a) turn the [CRS list on the preference page] into a search box with
a listbox below...

(b) add the custom ui as a simple WKT text box in a second tab

(c) enhance the custom ui to add some controls that allow clicky
building of [a Projection CS] for simple cases [as mentioned above]

(d) somewhere over the rainbow, do something with categorizing the [CRS list]

Mike


Back to the top