Thanks Craig! I'll not only play around with it tonight, but you nudged me
towards finally installing uDig.

Bryce

On Tue, Jan 18, 2011 at 6:45 PM, Craig Taverner <cr...@amanzi.com> wrote:

> Hi Bryce,
>
> While I had this on my mind, I decided to look into the code and I went
> ahead developed the first approach. So now we index osm nodes in the r-tree
> also (in addition to ways). By default, only nodes that have tags are added
> to the index, because these are seen as 'points of interest', while all
> other nodes are assumed to only be interesting as part of a way. However, I
> added a new method to the OSMImporter that allows you to turn on indexing
> of
> all nodes, regardless of whether they are points of interest or not.
>
> Just replace the old call to osmImporter.importFile(batchInserter,filePath)
> with instead osmImporter.importFile(batchInserter,filePath,true). The last
> parameter turns on indexing of all nodes. I've attached an image from the
> AWE product (based on uDig) that shows a large number of dynamic layers
> exported from the OSM model of Malmö, and you can see all nodes are
> visible.
> This is the output from the TestDynamicLayers unit test, run with the
> boolean set to true.
>
> If you are curious, the Neo Technology office is actually included in this
> image :-)
>
> I have just pushed the code to github, so you need to get the latest from
> there.
>
> Regards, Craig
>
> On Tue, Jan 18, 2011 at 9:27 PM, Craig Taverner <cr...@amanzi.com> wrote:
>
> > Hi Bryce,
> >
> > Currently the OSM model in Neo4j Spatial only indexes the ways, which
> means
> > that when you do spatial searches on the layers, you are always talking
> > about the  ways. Whether this suites you or not depends on your specific
> use
> > case. You could search for the closest ways, and the use the
> > SpatialTopologyUtils to snap to the point node on the way that is closest
> to
> > your point of interest, which may give you the result you want.
> >
> > If you are specifically interested in only searching on nodes, not ways,
> > then there are two options, both requiring some refactoring of the OSM
> model
> > (ie. you need to make changes to Neo4j Spatial).
> >
> >    - In the OSMImporter code, simply add all nodes as Point geometries to
> >    the index. This is simple to code and will get what you want, but
> might not
> >    lead to the most efficient index, since both the ways and the nodes
> they are
> >    composed of get indexed in the same index.
> >    - Enhance the OSM model to support multiple indexes, for nodes, ways
> >    and relationships. This requires much more code, but opens the
> possibility
> >    to enhance the performance by allowing the index to be optimized for
> the
> >    geometries and densities seen in the dataset.
> >
> > The reasons we have not done this yet are:
> >
> >    - Existing use cases have not required it (but we are reaching cases
> >    that do now)
> >    - It is not clear yet which of the above options is the best overall
> >    (one index or several). Originally I believed in the multiple-index
> >    approach, mostly because points can be indexed with very different
> indexes
> >    than geometries (eg. we can even place lucene behind the point index,
> which
> >    we cannot do for geometries). But at the moment I am leaning back
> towards
> >    the single index approach (simpler code).
> >
> > So, I hope the approach of searching for close ways, and then using the
> > topology utils to snap to the closest point is the right solution for
> you.
> > Otherwise considering contributing to the updates necessary to complete
> the
> > point index :-)
> >
> > Regards, Craig
> >
> > On Tue, Jan 18, 2011 at 6:08 PM, bryce hendrix <brycehend...@gmail.com
> >wrote:
> >
> >> Peter,
> >>
> >> I think my problem is more of understanding how the graph is built from
> >> OSM
> >> data. The method of find the closest edge gives me the way geometry, but
> >> (please correct me if I am wrong) I need to find the closest OSM node
> >> (Node
> >> with "lat" and "lon" properties) in the geometry.
> >>
> >> Thanks,
> >> Bryce
> >>
> >> On Tue, Jan 18, 2011 at 2:05 AM, Peter Neubauer <
> >> peter.neuba...@neotechnology.com> wrote:
> >>
> >> > Bryce,
> >> > are you looking for some kind of "snapping" to the nearest geometry? I
> >> > was doing something like that, Craig did a test on that, see
> >> >
> >> >
> >>
> https://github.com/neo4j/neo4j-spatial/blob/master/src/test/java/org/neo4j/gis/spatial/TestSpatialUtils.java#L53
> >> > ,
> >> > there is some basic support for that in
> >> >
> >> > SpatialTopologyUtils.java.
> >> >
> >> > Does that help to get started? Feel free to add more utilities and
> >> > maybe a routing example, when you get it working.
> >> >
> >> > Cheers,
> >> >
> >> > /peter neubauer
> >> >
> >> > GTalk:      neubauer.peter
> >> > Skype       peter.neubauer
> >> > Phone       +46 704 106975
> >> > LinkedIn   http://www.linkedin.com/in/neubauer
> >> > Twitter      http://twitter.com/peterneubauer
> >> >
> >> > http://www.neo4j.org               - Your high performance graph
> >> database.
> >> > http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing
> party.
> >> >
> >> >
> >> >
> >> > On Tue, Jan 18, 2011 at 5:50 AM, bryce hendrix <
> brycehend...@gmail.com>
> >> > wrote:
> >> > > Craig,
> >> > >
> >> > > I've ran into a bit of a stumbling block. I am attempting to do find
> a
> >> > > simple route using A* from 2 nodes on 2 different ways. What is the
> >> best
> >> > way
> >> > > to find the points closest to 2 reference points which are on ways?
> >> > Assuming
> >> > > I've got those nodes, is there anything special I have to do, other
> >> than
> >> > > setting up the estimate and cost evaluators?
> >> > >
> >> > > If I can figure this out, I'll submit my example back to you guys.
> I'm
> >> > > excited about this stuff, but I seem to be discovering the limits of
> >> the
> >> > > docs.
> >> > >
> >> > > Bryce
> >> > >
> >> > > On Sun, Jan 16, 2011 at 7:11 PM, Craig Taverner <cr...@amanzi.com>
> >> > wrote:
> >> > >
> >> > >> Great that they all work :-)
> >> > >>
> >> > >> Good luck with the rest of the project and keep us posted, we're
> >> > interested
> >> > >> in any feedback on the API.
> >> > >>
> >> > >> (getting lat/long mixed up is one of those things we all keep
> doing,
> >> I'm
> >> > >> pretty sure I did it once as recently as last month ... ;-)
> >> > >>
> >> > >> On Sun, Jan 16, 2011 at 11:52 PM, bryce hendrix <
> >> brycehend...@gmail.com
> >> > >> >wrote:
> >> > >>
> >> > >> > Craig, Peter,
> >> > >> >
> >> > >> > Its useful if I get the latitude and longitude in the correct
> order
> >> > for
> >> > >> the
> >> > >> > Point. Ugh. I've found
> >> > >> > that SearchPointsWithinOrthodromicDistance, SearchClosest,
> >> > >> > and SpatialTopologyUtils.findClosestEdges all work for me. Looks
> >> like
> >> > my
> >> > >> > project is well on its way now, thanks for the help.
> >> > >> >
> >> > >> > Bryce
> >> > >> >
> >> > >> > On Sun, Jan 16, 2011 at 3:16 PM, Craig Taverner <
> cr...@amanzi.com>
> >> > >> wrote:
> >> > >> >
> >> > >> > > The SearchPointsWithinOrthodromicDistance basically does a
> search
> >> on
> >> > a
> >> > >> > > rectangular bounding box, and then inside the result set
> filters
> >> by
> >> > >> > > distance
> >> > >> > > from the center. The filter probably works only on points as
> >> implied
> >> > by
> >> > >> > the
> >> > >> > > class name.
> >> > >> > >
> >> > >> > > The SpatialTopologyUtils class has a method findClosestEdge,
> >> which
> >> > will
> >> > >> > do
> >> > >> > > what you are looking for. If you call it without a distance
> >> value,
> >> > it
> >> > >> > will
> >> > >> > > take 1% of the total span of your layer as the search window,
> so
> >> if
> >> > >> this
> >> > >> > > does not make sense for your data (eg. your layer covers a
> small
> >> > area,
> >> > >> as
> >> > >> > > you hinted at), then pass in the distance in units of the
> >> coordinate
> >> > >> > system
> >> > >> > > of the layer (probably WGS84, degrees, if you are using only
> OSM
> >> > data).
> >> > >> > Try
> >> > >> > > it out and let us know.
> >> > >> > >
> >> > >> > > See:
> >> > >> > >
> >> > >> > >   -
> >> > >> > >
> >> > >> > >
> >> > >> >
> >> > >>
> >> >
> >>
> https://github.com/neo4j/neo4j-spatial/blob/master/src/main/java/org/neo4j/gis/spatial/SpatialTopologyUtils.java
> >> > >> > >   -
> >> > >> > >
> >> > >> > >
> >> > >> >
> >> > >>
> >> >
> >>
> https://github.com/neo4j/neo4j-spatial/blob/master/src/test/java/org/neo4j/gis/spatial/TestSpatialUtils.java
> >> > >> > >
> >> > >> > >
> >> > >> > > On Sun, Jan 16, 2011 at 11:19 AM, Peter Neubauer <
> >> > >> > > peter.neuba...@neotechnology.com> wrote:
> >> > >> > >
> >> > >> > > > Bryce,
> >> > >> > > > I think (Craig, correct me if I'm wrong) you need to have a
> >> Point
> >> > >> > > > layer to be able to do that search. The default OSM layer is
> >> > >> > > > containing a lot of geometries, so I think you first should
> >> define
> >> > a
> >> > >> > > > layer on top of the full imported one, then search. I did
> >> > something
> >> > >> > > > like that in another spike, see
> >> > >> > > >
> >> > >> > > >
> >> > >> > >
> >> > >> >
> >> > >>
> >> >
> >>
> https://github.com/popdevelop/snapplr/blob/master/server_java/src/main/java/com/geosnappr/TaginfoImporter.java#L312
> >> > >> > > >
> >> > >> > > > The layer is defined with something like
> >> > >> > > >
> >> > >> > > >
> >> > >> > >
> >> > >> >
> >> > >>
> >> >
> >>
> https://github.com/neo4j/neo4j-spatial/blob/master/src/test/java/org/neo4j/gis/spatial/TestDynamicLayers.java#L26
> >> > >> > > > on top of the imported full data layer.
> >> > >> > > >
> >> > >> > > > Does that help?
> >> > >> > > >
> >> > >> > > > Cheers,
> >> > >> > > >
> >> > >> > > > /peter neubauer
> >> > >> > > >
> >> > >> > > > GTalk:      neubauer.peter
> >> > >> > > > Skype       peter.neubauer
> >> > >> > > > Phone       +46 704 106975
> >> > >> > > > LinkedIn   http://www.linkedin.com/in/neubauer
> >> > >> > > > Twitter      http://twitter.com/peterneubauer
> >> > >> > > >
> >> > >> > > > http://www.neo4j.org               - Your high performance
> >> graph
> >> > >> > > database.
> >> > >> > > > http://www.thoughtmade.com - Scandinavia's coolest
> >> Bring-a-Thing
> >> > >> > party.
> >> > >> > > >
> >> > >> > > >
> >> > >> > > >
> >> > >> > > > On Sat, Jan 15, 2011 at 10:58 PM, bryce hendrix <
> >> > >> > brycehend...@gmail.com>
> >> > >> > > > wrote:
> >> > >> > > > > I'm pretty new to neo4j, so please excuse me if this is a
> >> FAQ.
> >> > >> > > > >
> >> > >> > > > > I exported OSM data for a city from the OSM site, then
> >> imported
> >> > it
> >> > >> > > using
> >> > >> > > > the
> >> > >> > > > > OSMImporter. I can see the layer via the webserver, so I
> know
> >> if
> >> > >> got
> >> > >> > > > > imported okay. Now I would like to find the way nearest to
> a
> >> > >> > coordinate
> >> > >> > > > via
> >> > >> > > > > the Java API, but I'm not really sure how to do that. I've
> >> tried
> >> > >> > using
> >> > >> > > > > SearchPointsWithinOrthodromicDistance, but the results of
> the
> >> > query
> >> > >> > are
> >> > >> > > > > always empty. Can someone give me some tips, or provide a
> >> simple
> >> > >> > > example?
> >> > >> > > > >
> >> > >> > > > > Thanks in advance,
> >> > >> > > > > Bryce
> >> > >> > > > > _______________________________________________
> >> > >> > > > > Neo4j mailing list
> >> > >> > > > > User@lists.neo4j.org
> >> > >> > > > > https://lists.neo4j.org/mailman/listinfo/user
> >> > >> > > > >
> >> > >> > > > _______________________________________________
> >> > >> > > > Neo4j mailing list
> >> > >> > > > User@lists.neo4j.org
> >> > >> > > > https://lists.neo4j.org/mailman/listinfo/user
> >> > >> > > >
> >> > >> > > _______________________________________________
> >> > >> > > Neo4j mailing list
> >> > >> > > User@lists.neo4j.org
> >> > >> > > https://lists.neo4j.org/mailman/listinfo/user
> >> > >> > >
> >> > >> > _______________________________________________
> >> > >> > Neo4j mailing list
> >> > >> > User@lists.neo4j.org
> >> > >> > https://lists.neo4j.org/mailman/listinfo/user
> >> > >> >
> >> > >> _______________________________________________
> >> > >> Neo4j mailing list
> >> > >> User@lists.neo4j.org
> >> > >> https://lists.neo4j.org/mailman/listinfo/user
> >> > >>
> >> > > _______________________________________________
> >> > > Neo4j mailing list
> >> > > User@lists.neo4j.org
> >> > > https://lists.neo4j.org/mailman/listinfo/user
> >> > >
> >> > _______________________________________________
> >> > Neo4j mailing list
> >> > User@lists.neo4j.org
> >> > https://lists.neo4j.org/mailman/listinfo/user
> >> >
> >> _______________________________________________
> >> Neo4j mailing list
> >> User@lists.neo4j.org
> >> https://lists.neo4j.org/mailman/listinfo/user
> >>
> >
> >
>
> _______________________________________________
> Neo4j mailing list
> User@lists.neo4j.org
> https://lists.neo4j.org/mailman/listinfo/user
>
>
_______________________________________________
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to