So far I’m in pretty good shape- I can store and retrieve SimpleFeatures, and I can see said features on OpenLayers and in ArcMap (via WFS). In the end, not too hard to do, once I got all of the dependencies right.
Now on to bboxes…
Bounding boxes, as near as I can tell, work as follows- assume you have a 3D coordinate space, X, Y, Z. Z is elevation, and is often 0. You need to figure out quickly which Features of a given type intersect a given rectangular box (min/max along each dimension, representing what the user is currently looking at), keeping in mind that features may be non-rectangular and may not have any points inside of the rectangle. For example, given the bounding box ((0,0),(10,10)), that box is intersected by the triangle (polygon) ((5,12),(12,5),(12,12)) even though none of those points fall inside of the box. This is complicated by the fact that the bounding box may be small or quite large (e.g. the whole world). From my reading, it seems like the way that this is done is first to geohash the centroid of any given SimpleFeature, then truncate the geohash to an acceptable search range (I am assuming that this derives from the size of the bbox?), then calculate the 9 neighbors of that geohash (resulting in a 3x3 rectangle of 9 geohashes). That gives you 9 prefixes that you need to search on in order to quickly find the features in a bounding box around the feature. Is that right?
So in my case, I have effectively unlimited storage space (literally petabytes) and fixed lookup/sorted scan time. Given that, I could generate a row for every possible prefix for any given feature centroid geohash I’ve indexed (e.g. “a”, “ab”, “abc”, abc1", “abc12”, “abc123”), and in each of those rows, a value for every feature id with that geohash prefix (I also have the pleasure of being schemaless). That way given a bounding box with a given centroid geohash and precision (again, does geohash precision correspond to size of the bounding box?), I can always look up in exactly 9 fetches operations everything in that bbox. Does that seem right?
On Thu, Nov 17, 2011 at 4:26 AM, Andrea Aime <andrea.aime@anonymised.com> wrote:
On Thu, Nov 17, 2011 at 1:05 AM, Chris Shain <chris@anonymised.com> wrote:
FYI the immediate reason that my data source was not showing up was that I was building against the wrong version of the GeoTools libs (duh). I had been building against 8.0-M3, but the stable version of GeoServer uses 2.7.3 it seems.
Correct. New developments are always made first against trunk and then backported to the stable series once they are good, that’s why I pointed you there.
Also, the set of stores based on ContentDataStore on 2.7.x is a lot smaller (basically just the jdbc ones).
The next question that I have is around packaging. It seems that most of the other data stores have very minimal additional baggage, but unfortunately the HBase client carries ~50MB of additional dependencies. Obviously including all of that in the plugin jar isn’t optimal. Is there an application-level way to instruct GeoServer to append some folder (or set of jars) to it’s classpath? Everything I read suggests that it is the (WAR’d) application’s responsibility (in this case GeoServer) to manage dependencies, not the application server, which kind of makes sense to me.
GeoServer does not have, at the moment, the ability to pick jars from a random folder. Extensions are zip files containing a set of jars that you unzip and drop in WEB-INF/lib.
If someone wants to try and add support for loading external jars it may be good, I guess.
The thing is that, regardless, there is no guarantee that an extension built for 2.1.1 will work for 2.1.2 (a datastore will, something that depends on some internal
GeoServer class might not), so putting them, say, in the data dir, might cause quite a bit of confusion when people upgrade GeoServer.
Cheers
Andrea
–
Ing. Andrea Aime
GeoSolutions S.A.S.
Tech lead
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 962313
http://www.geo-solutions.it
http://geo-solutions.blogspot.com/
http://www.youtube.com/user/GeoSolutionsIT
http://www.linkedin.com/in/andreaaime
http://twitter.com/geowolf