Nick, First, there was a typo in my announcement that I just realized. The second last paragraph should state that the "current version of the application does NOT demonstrate use of the datastore", that is, I am still in the process of implementing fetches of WKT from my entities, but that's the plan.
As to your questions: 1) JTS indexes. From their technical spec: "There is a large literature of efficient algorithms for intersection detection. Unfortunately, many of them involve substantial code complexity. JTS tries to balance code simplicity with performance gains. It uses some special techniques to produce substantial performance gains for common types of input data. These techniques include in-memory spatial indexes of various types, and sophisticated methods for structuring data such as the technique of Monotone Chains." (See http://www.vividsolutions.com/jts/bin/JTS%20Technical%20Specs.pdf). 2) I am using brute force (ie CPU) to do point-in-polygon and polygon-in-polygon in this version of the app, so I am letting JTS worry about managing its own in-memory indexes. Nothing fancy built on top of AppEngine (yet), but I will be looking at App Engine indexes and perhaps blobs. Stuart On Fri, Jul 10, 2009 at 7:21 AM, Nick Johnson (Google) < [email protected]> wrote: > > Hi Stuart, > > Very nice! > > Out of curiosity, what indexing scheme does JTS use? Are you building > an R-Tree or other tree based structure on top of the datastore, or > are you using a hilbert-curve type approach? > > -Nick Johnson > > On Fri, Jul 10, 2009 at 8:03 AM, Stuart Moffatt<[email protected]> > wrote: > > > > Announcement: > > > > The GIS in the Cloud (App Engine + JTS) reference project is now > > available at http://giscloud.appspot.com with the source code > > available at http://giscloud.googlecode.com (documentation > > forthcoming). > > > > While many GIS/spatial App Engine discussions center on the python SDK > > (with pre-computing grids or geocells and heavy lifting done with set > > membership in the datastore), this reference project uses the Java > > Topology Suite (http://www.vividsolutions.com/jts/jtshome.htm) within > > the App Engine server to demonstrate point-in-polygon and polygon-in- > > polygon spatial queries. > > > > The GIS in the Cloud app is pure Java and was built with > > > > * Google App Engine SDK for Java > > * Google Plugin for Eclipse > > * Google Web Toolkit > > * Google Web Toolkit API Libraries - Google Maps 1.0 Library > > * Java Topology Suite > > > > The Java Topology Suite was ported to C++ and became GEOS, which was > > embedded in PostgreSQL to become PostGIS, allowing users access to > > spatial functions within SQL. While App Engine does not give us > > spatial functions in GQL, the GIS in the Cloud app will demonstrate a > > GQL/JTS combination to accomplish the same effect. > > > > The current version of the application does demonstrate use of the > > datastore (TODO), but it does employ JTS to query point-in-polygon and > > polygon-in-polygon. Single clicks on the map trigger the point-in- > > polygon test (the point is the map center and the polygon is Salt Lake > > County). With zoom or drag, the polygon-in-polygon test is triggered. > > The first polygon is the map bounds and the second is Salt Lake > > County. > > > > Future versions will use the datastore and be able to access OGC Well > > Known Text (WKT) from which geometry can be created for features such > > as: tracts, census block groups, census blocks, and parcels. > > > > > > > > > > > > > > > > > > > > > > > -- > Nick Johnson, App Engine Developer Programs Engineer > Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration > Number: 368047 > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en -~----------~----~----~----~------~----~------~--~---
