Adrian Custer wrote:
Hey all,
in trying to build a map from scratch I've run into a number of
questions.
*) The Iresolve (and friends) mechanism seems to be based on the
extensive use of URL/URI. e.g. the URL in the constructor of the
MemoryServiceImpl(). I can see that it's value is
http://localhost/scratch/ but what is this supposed to be? Does each
'resolveable' instance get its own URL so that the whole system is
dependent on programmer's tracking these URLs?
We are supposed to change this to a URI - URL actually hits the web to
figure out an IP address for its hashcode.
We are simply using this to "locate" the resource - for memory datastore
localhost seemed to describe the machine it
was on, and we were going to name them "Scracth1" "Scratch2" etc...
The idea is that this is a temporary layer to mess around on, or for an
operation to store result on. And the user can
save the layer out to a shapefile/database/etc if they like what they see.
And yes looking up data in the catalog requires a URI, the
GISApplication stores this information
out with each project (along with any additional connection parameters).
The URI is also supposed to
be used by a security module to retrieve any login credentials (so they
are not stored out with the project file
and shared between users accidentally).
The explanation currently has a bunch of references to how Eclipse does
things without any link to the docs where that is explained. Some extra
links or documentation is needed to explain the idea and the relevance
of the URL in the resolve system.
Can you link to the exact page? Or are you taking about the javadocs? I
assume the documentation refers
to IResource ...
*) What are the differences between IService and IGeoResource? From the
recent doc, I see there's a split between the two but I don't understand
the relevance of the split. IService appears to be more generic and
useable for information whereas IGeoResource must be used for actual
geographic data. Is that the right idea?
Yes that is pretty good.
IService is a handle to the service where the data comes from (a file on
disk, a sever on the web etc...)
IGeoResource is a handle to the data itself, often available as a
FeatureStore or a WMS Layer.
*) What's the terminological difference between a Coordinate Reference
System (CRS) and a Spatial Reference System (SRS)? While the use of all
these terms around the web is generally sloppy I have not yet been able
to figure out a reasonable distinction between these two ideas.
CRS has a formal definition -it is a real object that defines what the
heck is going on with a data set.
Usually defined as WKT, or a short definition "EPSG:4326" where EPSG is
the name of
an authority. In the case of EPSG the authority publishes a database in
which the number 4326 means
something.
In short CRS can be used to understand what the data is.
SRS means almost nothing, it is supposed to indicate a CRS - somehow.
SRS may be the SRID used by an oracle database,
it may be WKT, it may be an EPSG code (just the raw number). According
to the specifications it is a URI of some format
I have never seen used.
A super conservative response is this: SRS can be used with the service
that gave it to you. As an example a WFS advertises data in a SRS you
can ask for data in that SRS.
A pragmatic response is this: uDig makes a series of educated guesses
(if it starts with EPSG or AUTO or AUTO2 then that is pretty good).
Does that help?
Jody
*) What elements in the data stack have their own CRS info?
Data has a CRS, GIS data with out a CRS is like a distance without
"meters" or "feet".
A displayed map must have its own CRS with all input layers transformed
to that when added. Presumably, by default, the map uses a CRS of one of
the initial layers added when crated but it must also be possible to
create a map with a programmer defined CRS.
The Map actually is being lazy - it has a projection. One of the things
needed to understand GIS data
(and thus defined inside a CRS) is a projection. So the Map is holding
onto a full CRS object (because
people understand those), but only using the projection part for display.
As a consequence several CRS instnaces with the same projection would
look identical as far as the
Map is concerned.
Once your map is created you can adjust the CRS - it is part of the
viewport model (and is used to understand the viewport model's bounding
box).
In the layer stack, where does the feature's CRS get stored? As one of
the attributes of Feature? As one of the Attribute of FeatureType? While
I can now create a layer from scratch, I've not yet figured out where to
add the CRS in the construction process.
Okay I can help there, the CRS for a feature is stored in the
FeatureType, explicitly in the GeometryAttributeType (once again without
this
metadata about the Geometry the feature would mean anything).
Are there other CRS's stored? What docs explain this stuff?
Geotools tutorials. And some slides in the uDig training after I had a
bit of experience. I think the Mapping Hacks book has a good section, but
I will ask someone else to confirm that.
Jody
_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel