Thanks for the community planning, the stuff you have me down for I have
been meaning to rant about, but where oh where is the time. Thanks for
the kick.
I played with the indexed shapefile datastore and was a little
disapointed with its performance. After some profiling I tracked the
problem to the dbf reader, in particular 40% of cpu time was being spent
reading strings and checking for whitespace.
My attempt at increasing performance involved creating an index for the
dbf file that contained information to make the parsing of character
fields fast. However, the performance gain was minimal.
After talking with Jesse we thought a second attempt at speeding it up
might involve creating a spatial index for the attributes which would
speed up bounding box queries. However I have not spent any time on this
yet.
Justin
[EMAIL PROTECTED] wrote:
Hi everyone, working on the weekend and trying to collect my thoughts. You
have all kindly put up with my ramblings about Feature Model these last weeks.
This email is not about that....
I am going to try a different approach this week. Normally I have these
separate conversations concerning something I am trying to pull together for
the "big picture".
If you are listed by name below you are part of this bigger picture I am
trying to pull together. If you did not know you were working together,
welcome to open-source development, please feel free to introduce yourself to
anyone you don't know.
Summary:
Filter - Chris Dillard, Gabriel
Random Access & Selection - Justin, Jesse, user list
Feature Versioning - Adrian and Dave Blasby
Factory Use & Injection - Justin & Martin
2.2 Release - Martin
For those not explicitly mentioned, please feel free to jump in ... this is
open-development :-) That especially goes for James and Justin -- let me know
what I am missing. Justin may have escaped but I still need to talk these
design ideas around, perhaps moving it into an open forum will help.
Chris Holmes - you can call my kettle black after this email,
Jody
PS. You may notice that this contains information about both GeoAPI and
GeoTools. If you are on only one of these lists kindly do not skip this
message. I intend for us to work together, not every issue is for both camps -
but the solution should be. (I promise this is not about Geometry, or Feature
Model)
Filter
======
Chris Dillard (probably the most startled to get this email) - I am still
waiting for ideas on how you would like to go forward on GeoAPI Filter
interfaces. As mentioned previously I would like an answer on how Filter 1.0
and Filter 1.1 can both be supported. (This is something I can do, but if you
had existing plans, or would like to minimize breakage, then I would like some
input).
What is on the table? Go general and and construct specific ...
- Making the set of "general" Filter interfaces matching the capabilities of
GeoTools (I cannot ask people to accept less).
- Marking down the set of Filter 1.0 filters, as per GeoAPI right now.
- Marking down an additional set of Filter 1.1 filters (there will be overlap)
- Produce two factories (one for each specification), each factory limited to
creating the scope of Filter expression supported by that standard.
This is preventing geotools from moving in the direction of GeoAPI, I have
mentioned it as a concern previously. At the very least this should be brought
up in the next OGC meeting as an issue worth looking at (how GeoAPI should be
future proofed).
There is an alternative (that I don't like) to the above idea - that is
considering all Filter 1.x specifications as "roughly the same" and breaking
out a getVersion() method and a mess of javadocs. This is much worse in that
client-code cannot explicitly indicate its limitations at the class-level. We
would be left with a mess of "optionality" which is the death of way more
standards then even the OGC produces...
Gabriel - as promissed I am looking into the XPath side of things (as a sanity
check on the Feature Model) this weekend. I saw that you planed to generalize
Filter to work against Attribute? I am working through the possible advantage
to that. Near as I can tell having an explicit Class for JXPath to bind
against would be the main benifit?
My only heistation is one of focus. I am 'happy' with the Feature Model
maintaining a level of indirection (it has to as it is a meta model). But I
had wanted Filter / Expression to be more hands on. Hands on should be read as
Object.
I have mentioned this in conversation repeatly, but I will explicitly lay
these cards down. I am interested in setting up the following concerns, and
making sure they are orthogonol.
Data language
- Feature
- Other: Metadata, Record
- Descriptor
Query language:
- Query
- Filter
- Expression
Client code:
- Portrayal (example)
Thus I dont't want to repeat a few past mistakes (like Feature being used as a
parameter by geotools FilterFactory.
Random Access and Selection (not Filter)
===========================
Justin - you have been working on Shapefile and optimizing for Attribtues for
rendering ...
User List - disgust was voiced about the Filter API not being what was
expected (someone had implemented a Filter and was unable to get processed)
...
Jesse - you have me down to make you a Random Access API by November. For
those that are not Jesse, if you need background please review the Confluence
site for these plans.
When I first started I did not *want* Filter - I wanted a Selection. The
difference is Filter is a rule used to define a sub set. A selection *is* the
subdivided Set. Admittedly there is no useful difference between Selection
and a FidFilter ...
One of the things that Filter 1.1 is going to kick us hard with is the need
for Order. Dave Blasby can remember the days of Cause & Effect (previous job)
where there was a separation between Content, Order and Selection.
I am thinking of representing these concerns as First class objects. Be it
FeatureList (defined by an Order), or Selection (made against a specific
FeatureCollection).
Justin about the consequences of this idea - each index can basically be
viewed as an "Order" of the origional content (arranged according to the the
attribute under discussion). You can start in on these ideas for shapefile
even before we figure out a way to out the idea as an interface. I am pretty
sure you never got around to telling the email list about your experimenets
with building attribtue indexes last week. This idea would dovetail nicely and
you could store the content in a easier to parse format, in the nodes of the
index (even just to speed up the process of index navigation).
Note - the process of making a Selection out of a Filter would be similar to
some of the workflows you see in ArcView. Note the AttributeIndex with
preparsed content would also be the correct mechaism to immplement the
traditional simple Join of temporary content to a shapefile seen in arcview.
Feature Versioning
==================
Adrian and Dave Blasby, one of the things that occured last week (in an IRC
session posted to the UDig site so you may have missed it) was that Adrian was
sending us right back to the origional OGC Feature Model. That is before it
was cleaned up a limited in scope for things like "Simple Feature Model", or
GML2 (or GML3).
James has given me a target of GML3 (at least the Level 0 Profile part), this
is also the target of Gabriel.
Adrian and Dave - you have a different problem in mind. I would like to
confirm that we are not painting you into a corner. Dave I am under the
impression that you would like to build Feature Versioning "on top" of a data
store infrastructure as a separate concern. Is this still your plan ... it
would be great if you could talk to Adrian who has similar concerns.
Adriand you were worried about Feature extending Attribute. Part of the fun is
that you have a slightly different impression of what Attributes are then that
OGC document I pointed you towards. I am waiting to hear back from you on your
revised understanding.... The word "properties" is also provided (of which
"attribtues" is a specific kind of property holding data). I admit that our
Feature Model is a *data model* and does not allow Object-oriented methods/
opperations at this time. The OGC is struggling with associatations linking
data to opperations as we speak as part of their Catalog Publish/Find/Bind
infrastrure. I cannot consider this as leadership - or a strong movement
towards object orientation.
Dave, Adrian is in a world where not only the attribute values change over
time. The schema changes over time. While the origional OGC Feature Model can
deal with this (for them a Feature is a bag of stuff with a fixed ID, the
stuff is captured as attribtues wach with a unique timestamp/value/etc...
different Application Schema are constructed (like views in a database)
offering a perspective on the content.
I can think of ways for you two to work together - serve up the "Feature"
based on timestamp, complete with the Schema for the content at that point in
time. Justin will call me out if I don't point out that "Extensible Interface"
idea of allowing you to query for the content in the shape needed for the task
at hand.
If that idea makes sense (to both of you), or if you think something else may
be better - perhaps you can take it up with Justin?
Factory Use & Injection
=======================
Justin & Martin. In geotools last year we ran into the limits of our Factory
system. We have achived independence of interface but the current state of
things is ill specified from a customizaton point of view. If you return back
to those orthogonal concerns at the top of the email you will see the things
that we need to be able to tweak.
Justin has experience with the different kinds of injection although has not
emailed about it. Martin I would like to see us take a step back from the
ImageIO plugin system. And I would like to see GeoAPI follow suite.
We can use setter injection to document dependencies that is required for
customization at the factory level. This also serves as the needed hooks for
any and all Container based system. It is also clear and explict for those
implementing geotools applications with normal java code.
I also would like to ask if GeoAPI can swtich to abstract classes for the data
only objects such as TransactionRequest? I don't see any advantage to using
interfaces in such cases, and an Abstract class can be customized with a
Factory just as easily as an interfaces. The advantage being that any
extention of the abstract class will not break client code. This doubles back
to my concerns for the Filter 1.0 / Filter 1.1 troubles.
James had some backstorey on why geoapo/geotools is so aggressivly pro
Factory/Interface. I liked the comment on the user list that such
understanding should not be required to use these libraries.
To help I am tempted to promote the following used of nested interfaces:
public interface Thing {
public interface Factory {
public Thing create();
public Thing create( int number );
public void setPreferences( Preferences preferences );
}
public int getNumnber();
public void setNumber( int number );
}
This technique is also compatible with the interface only approach used by
GeoAPI and offers a level of explictness that prevents GeoAPI factories from
being used in a production enviorment (where these concerns matter).
Note: the above includes an example of Setter injection, Preferences would be
created by a PreferencesFactory, allowing application code a way to supply a
default number for Thing creation, and probably a way for the Factory to
externalize any customization for use across geotools applications.
Aside: I would be happier with constructor based injection, but I imagine it
is a hard sell for GeoAPI with little benefit? For geotools code I will
endevour to make a constructor that matches the dependencies listed by the
setters.
2.2 Release
===========
Martin - thanks for taking on the next 2.2 release, the moment you are done we
will kick in the aggregate changes (well we are going to do this on the 24th)
and thus another milestone release.
As I recall you are stuck on javadocs ... just turn them off. This is only a
milestone release, for those following along at home and not using svn. It is
more important that we do this to reflect the accurate state of svn (and
progress).
The release notes say to give module maintainers 3 days after an email, lets
consider javadocs as of having its three days. Report a bug in Jira for James
or Justin and lets get this email out the door.
-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
Geotools-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-devel
--
Justin Deoliveira
The Open Planning Project
http://topp.openplans.org
-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
Geotools-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-devel