I'm still a little confused on this and am hoping for more clarification,
I'm still on the very steep learning curve side of "newbie", please bear
with me...

I can start up a neo4j rest server and successfully add nodes and edges. 
I can see that I have neo4j spatial installed.

I can also start up geoserver, and it connects without complaint to my
neo4j database via the "file:" interface.  Unfortunately it doesn't see
anything in it.

I have my raw data in various formats, including a geojson file.  I tried
just adding the geojson structure as a node, but that didn't work...

I'm still really unclear as to how to get my data into a layer in neo4j
(preferably using the REST interface) that will be recognized by
geoserver.

I'm guessing that first you can create an empty "layer".  In your example
below, is that what you are doing?  What do you mean by "returns the
original node"?

I suppose a single neo4j instance can have multiple independent layers in
it.  Is that true?

Your example layer appears to be titled "buildings".  Does that mean it
will contain the shapes of buildings, or the point locations of buildings
(or both)?  How do you add a 'building' (of either type) to the layer? 
I'm assuming your example does not add any buildings because there is no
discernible location information in the data below.

My locations are all defined by latitude/longitude pairs.  At the moment
I'd like to start by adding simple "points" in a layer.  Eventually I'd
like to add edges and shapes, but I'd be really happy just to be able to
get points mapped first.

aTdHvAaNnKcSe !


> Axel,
> I just pushed a first version of a Neo4j Spatial server plugin to github,
> see
>
> https://github.com/neo4j/neo4j-spatial/blob/f9e75ac62867ecd3fc178f01cfc8bbb40abda3ff/src/main/java/org/neo4j/gis/spatial/server/plugin/SpatialPlugin.java
>
> Basically, you copy all dependencies and the neo4j-spatial JARs (get
> them with "mvn dependency:copy-dependencies" into target/dependency)
> into $NEO$J_SERVER/plugins and you should get something like
>
> [~] $curl  -H "Accept: application/json" http://localhost:7474/db/data/
> {
>   "extensions-info" : "http://localhost:7474/db/data/ext";,
>   "node" : "http://localhost:7474/db/data/node";,
>   "node-index" : "http://localhost:7474/db/data/index/node";,
>   "relationship-index" :
> "http://localhost:7474/db/data/index/relationship";,
>   "reference_node" : "http://localhost:7474/db/data/node/0";,
>   "extensions" : {
>     "GetAll" : {
>       "get_all_nodes" :
> "http://localhost:7474/db/data/ext/GetAll/graphdb/get_all_nodes";,
>       "getAllRelationships" :
> "http://localhost:7474/db/data/ext/GetAll/graphdb/getAllRelationships";
>     },
>     "SpatialPlugin" : {
>       "addPointToLayer" :
> "http://localhost:7474/db/data/ext/SpatialPlugin/graphdb/addPointToLayer";
>     }
>   }
> }
>
> And then you add stuff with
>
>
> [~] $curl  -H "Accept: application/json" -d
> "node=http://localhost:7474/db/data/node/0&layer=buildings";
> http://localhost:7474/db/data/ext/SpatialPlugin/graphdb/addPointToLayer
> [ {
>   "outgoing_relationships" :
> "http://localhost:7474/db/data/node/0/relationships/out";,
>   "data" : {
>     "name" : "Fredrik"
>   },
>   "traverse" :
> "http://localhost:7474/db/data/node/0/traverse/{returnType}";,
>   "all_typed_relationships" :
> "http://localhost:7474/db/data/node/0/relationships/all/{-list|&|types}",
>   "property" : "http://localhost:7474/db/data/node/0/properties/{key}";,
>   "self" : "http://localhost:7474/db/data/node/0";,
>   "properties" : "http://localhost:7474/db/data/node/0/properties";,
>   "outgoing_typed_relationships" :
> "http://localhost:7474/db/data/node/0/relationships/out/{-list|&|types}",
>   "incoming_relationships" :
> "http://localhost:7474/db/data/node/0/relationships/in";,
>   "extensions" : {
>     "ShortestPath" : {
>       "shortestPath" :
> "http://localhost:7474/db/data/ext/ShortestPath/node/0/shortestPath";
>     },
>     "DepthTwo" : {
>       "nodesOnDepthTwo" :
> "http://localhost:7474/db/data/ext/DepthTwo/node/0/nodesOnDepthTwo";,
>       "relationshipsOnDepthTwo" :
> "http://localhost:7474/db/data/ext/DepthTwo/node/0/relationshipsOnDepthTwo";,
>       "pathsOnDepthTwo" :
> "http://localhost:7474/db/data/ext/DepthTwo/node/0/pathsOnDepthTwo";
>     }
>   },
>   "create_relationship" :
> "http://localhost:7474/db/data/node/0/relationships";,
>   "all_relationships" :
> "http://localhost:7474/db/data/node/0/relationships/all";,
>   "incoming_typed_relationships" :
> "http://localhost:7474/db/data/node/0/relationships/in/{-list|&|types}"
> } ]
>
> Of course, this just creates the layer and returns the original node,
> but still, looking at the db give us
>
> [~] $neo4j-shell
> :/Users/peterneubauer/program/neo4j-server/lib/geronimo-jta_1.1_spec-1.1.1.jar:/Users/peterneubauer/program/neo4j-server/lib/neo4j-1.2.M06.jar:/Users/peterneubauer/program/neo4j-server/lib/neo4j-examples-1.2.M06.jar:/Users/peterneubauer/program/neo4j-server/lib/neo4j-graph-algo-0.7-1.2.M06.jar:/Users/peterneubauer/program/neo4j-server/lib/neo4j-ha-0.5-1.2.M06.jar:/Users/peterneubauer/program/neo4j-server/lib/neo4j-index-1.2-1.2.M06.jar:/Users/peterneubauer/program/neo4j-server/lib/neo4j-kernel-1.2-1.2.M06.jar:/Users/peterneubauer/program/neo4j-server/lib/neo4j-lucene-index-0.2-1.2.M06.jar:/Users/peterneubauer/program/neo4j-server/lib/neo4j-management-1.2-1.2.M06.jar:/Users/peterneubauer/program/neo4j-server/lib/neo4j-online-backup-0.7-1.2.M06.jar:/Users/peterneubauer/program/neo4j-server/lib/neo4j-remote-graphdb-0.8-1.2.M06.jar:/Users/peterneubauer/program/neo4j-server/lib/neo4j-shell-1.2-1.2.M06.jar:/Users/peterneubauer/program/neo4j-server/lib/neo4j-udc-0.1-1.2.M06-neo4j!
 
.jar:/Users/peterneubauer/program/neo4j-server/lib/netty-3.2.1.Final.jar:/Users/peterneubauer/program/neo4j-server/lib/org.apache.servicemix.bundles.jline-0.9.94_1.jar:/Users/peterneubauer/program/neo4j-server/lib/org.apache.servicemix.bundles.lucene-3.0.1_2.jar:/Users/peterneubauer/program/neo4j-server/lib/protobuf-java-2.3.0.jar
> NOTE: Remote Neo4j graph database service 'shell' at port 1337
> Welcome to the Neo4j Shell! Enter 'help' for a list of commands
>
> neo4j-sh (Fredrik,0)$ ls
> *name =[Fredrik]
> (me) --[KNOWS]-> (2)
> (me) --[SPATIAL]-> (34)
> neo4j-sh (Fredrik,0)$ ls 34
> *type =[spatial]
> (34) --[LAYER]-> (35)
> (34) --[LAYER]-> (38)
> (34) <-[SPATIAL]-- (me)
> neo4j-sh (Fredrik,0)$ ls 38
> *ctime       =[1293647341655]
> *geomencoder =[org.neo4j.gis.spatial.WKBGeometryEncoder]
> *layer       =[buildings]
> *layer_class =[org.neo4j.gis.spatial.EditableLayerImpl]
> (38) <-[LAYER]-- (34)
> (38) --[RTREE_METADATA]-> (39)
> (38) --[RTREE_ROOT]-> (40)
>
> So the layer is there :)
>
> Feel free to tinker around with this and add meaningful stuff to it!
>
> 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 Thu, Nov 18, 2010 at 8:57 PM, Peter Neubauer
> <peter.neuba...@neotechnology.com> wrote:
>> Alex,
>> sounds great, don't hesitate to get back to the list with question and
>> suggestions!
>>
>> 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 Wed, Nov 17, 2010 at 6:23 PM, Axel Morgner <a...@morgner.de> wrote:
>>> Currently, I'm still busy with a customer project, but when open
>>> sourcing the software end of the year, I'll document it.
>>>
>>> Am 16.11.2010 00:01, schrieb Peter Neubauer:
>>>> Axel,
>>>> nice it worked out for you! Would be great if you could write up a
>>>> small blog or so on this, and give us some feedback on what to improve
>>>> to make the component more usable. WDYT?
>>>>
>>>> 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 Mon, Nov 15, 2010 at 10:03 PM, Axel Morgner<a...@morgner.de>
>>>>  wrote:
>>>>> On 02.11.2010 14:52, Craig Taverner wrote:
>>>>>>> Adding neo4j spatial to the picture should enable the CMS handling
>>>>>>> geo
>>>>>>> data objects without adding to much complexity (I hope).
>>>>>> OK. I think I'm beginning to get an idea of what you want. You have
>>>>>> a CMS,
>>>>>> and some of the data is geolocated, in the sense that you know what
>>>>>> countries it is associated with, and perhaps you even have
>>>>>> relationships to
>>>>>> 'country' nodes (or other nodes) representing locations. Now you
>>>>>> want to use
>>>>>> Neo4j Spatial to perform simple spatial queries on this.
>>>>> Your analysis is correct and brilliant. :-)
>>>>>
>>>>> In my case, the CMS payload data itself (like HTML, Images, Videos,
>>>>> CSS,
>>>>> JS, Blogs etc.) is stored in neo4j nodes. But logging data, too, of
>>>>> course.
>>>>>
>>>>>>    I could imagine something like:
>>>>>>
>>>>>> 'give me all countries in the specified region (bounding box) and
>>>>>> include
>>>>>> the number of pages as an attribute of the result set'bute?
>>>>> Right now I'm using the SearchIntersectWindow class to determine
>>>>> which
>>>>> countries are needed to display within a certain global region. The
>>>>> countries data is loaded as a set of GeoJSON files via Javascript
>>>>> (using
>>>>> Polymaps), so neo4j spatial does only provide the country names.
>>>>>
>>>>>> I think you should either use the original shapefiles and the
>>>>>> existing ShapefileImporter or move to OSM data models for connected
>>>>>> topologies.
>>>>>>
>>>>>> A GeoJSON importer is a nice idea, but not worth the effort if you
>>>>>> already
>>>>>> have shapefiles.
>>>>> Indeed! I ended up with using the shapefile importer, using neo4j
>>>>> spatial to serve geodata nodes which are then connected on-the-fly
>>>>> with
>>>>> geo-tagged CMS data.
>>>>>
>>>>> Your comments and suggestions helped me a lot, so I just wanted to
>>>>> say
>>>>> thanks again.
>>>>>
>>>>> Axel
>>>>>
>>>>>
>>>
>>> _______________________________________________
>>> 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
>


-- 
Rick Otten
rot...@windfish.net
O=='=+


_______________________________________________
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to