Hi Craig, 

As always thanks for your nice reply. 

I understood the problem but not the solution yet. The fact is I have 
points, lines, and polygons as geometries. 
Four main queries which I have are as follows:

1- given coordinates of an arbitrary point (i.e., not a node in the graph) 
find the polygon node which enclose it

2- given a point node find all other nodes which are withing distance r of 
it. 

3- given a point node find all k nearest neighbors point node of it

4- given two polygon determines if they intersect and perhaps find the size 
of intersection

I defined my layer as follows (I tried with WKB too):

        EditableLayer runningLayer = (EditableLayer) 
graphDBSpatial.getOrCreateLayer(layerName, 
                    WKTGeometryEncoder.class, 
                        EditableLayerImpl.class, 
                            "x:y:z"); 

Then I create my nodes as follows: 

// point node
Point p = runningLayer.getGeometryFactory().createPoint(coord);
        SpatialDatabaseRecord v = runningLayer.add(p);

// edge node
LineString lineString = 
runningLayer.getGeometryFactory().createLineString(coord); 
        SpatialDatabaseRecord e = runningLayer.add(lineString);

// polygon node
Polygon poly = 
runningLayer.getGeometryFactory().createPolygon(coordinates); 
        SpatialDatabaseRecord tc = runningLayer.add(poly);

Based on what you said I should have a separate layer for point, right? If 
the answer is yes, then while querying I should load two layers 
based on which of the queries above is requested (WKT layer for queries 1 
and 4 and Point layer for 2 and 3), is that correct ?

Cheers,
Alireza

On Monday, August 10, 2015 at 11:09:21 AM UTC+2, Craig Taverner wrote:
>
> Hi Alireza,
>
> I wrote some test code using your layer creation and neighbour search code 
> that you pasted, and it works fine. So what I think has happened is that 
> you have somehow added nodes with a different layer config to the same 
> index that you are now using for WKB. Perhaps the nodes used to be points 
> in a simple point layer, and now you changed to a WKB layer, it is no 
> longer compatible.
>
> I can make a few suggestions:
>
>    - Make sure your nodes were added using the layer.add(Geometry) 
>    method. If you used layer.add(Node) then it is your responsibility to make 
>    sure the node conforms to the same layer config that you are planning to 
>    use. For example, do not add a simple point node (with lat/lon attributes) 
>    to a WKT layer, or you are likely to create this kind of issue.
>    - Since you are working with points, can I suggest you not use the WKB 
>    layer config, but rather use the SimplePointLayer, as created by 
>    SpatialGraphDatabase.createSimplePointLayer(name) 
>    or SpatialGraphDatabase.createSimplePointLayer(name,xProp,yProp)
>
> Regards, Craig
>
> On Sun, Aug 9, 2015 at 12:02 AM, Alireza Rezaei Mahdiraji <
> [email protected] <javascript:>> wrote:
>
>>
>> Let me ask you a design kind of question: the nodes in my graph could 
>> have various geometry: point, line, or polygon. 
>> I used the following layer definition (but I am not sure that is the best 
>> way to do it)"
>>
>> EditableLayer runningLayer = (EditableLayer) 
>>                 graphDBSpatial.getOrCreateLayer(layerName, 
>>                     WKBGeometryEncoder.class, 
>>                         EditableLayerImpl.class, 
>>                             geomEncoderConfig);
>>
>> I appreciate if you comment on this.  
>>
>> Alireza
>>
>>
>> On Saturday, August 8, 2015 at 11:48:24 PM UTC+2, Michael Hunger wrote:
>>>
>>> It seems you created the layer with a WKB (well known binary) 
>>> representation config
>>>
>>> but now your location properties are not decodable as WKB because they 
>>> are double's ?
>>>
>>> Michael
>>>
>>> Perhaps you can share a test that reproduces the issue?
>>>
>>> Am 08.08.2015 um 23:26 schrieb Alireza Rezaei Mahdiraji <
>>> [email protected]>:
>>>
>>>
>>> Here are the stacks for the two cases (very similar):
>>>
>>> Exception in thread "main" java.lang.ClassCastException: 
>>> java.lang.Double cannot be cast to [B
>>>     at 
>>> org.neo4j.gis.spatial.WKBGeometryEncoder.decodeGeometry(WKBGeometryEncoder.java:41)
>>>     at 
>>> org.neo4j.gis.spatial.filter.SearchIntersectWindow.onEnvelopeIntersection(SearchIntersectWindow.java:48)
>>>     at 
>>> org.neo4j.gis.spatial.rtree.filter.AbstractSearchEnvelopeIntersection.geometryMatches(AbstractSearchEnvelopeIntersection.java:45)
>>>     at 
>>> org.neo4j.gis.spatial.rtree.RTreeIndex$SearchEvaluator.checkPosition(RTreeIndex.java:286)
>>>     at 
>>> org.neo4j.gis.spatial.rtree.RTreeIndex$SearchEvaluator.isStopNode(RTreeIndex.java:299)
>>>     at 
>>> org.neo4j.kernel.impl.traversal.OldTraverserWrapper$Pruner.evaluate(OldTraverserWrapper.java:260)
>>>     at 
>>> org.neo4j.graphdb.traversal.Evaluator$AsPathEvaluator.evaluate(Evaluator.java:69)
>>>     at 
>>> org.neo4j.kernel.impl.traversal.MultiEvaluator.evaluate(MultiEvaluator.java:62)
>>>     at 
>>> org.neo4j.kernel.impl.traversal.MonoDirectionalTraverserIterator.evaluate(MonoDirectionalTraverserIterator.java:61)
>>>     at 
>>> org.neo4j.kernel.impl.traversal.TraversalBranchImpl.evaluate(TraversalBranchImpl.java:125)
>>>     at 
>>> org.neo4j.kernel.impl.traversal.TraversalBranchImpl.initialize(TraversalBranchImpl.java:130)
>>>     at 
>>> org.neo4j.kernel.impl.traversal.TraversalBranchImpl.next(TraversalBranchImpl.java:151)
>>>     at 
>>> org.neo4j.kernel.impl.traversal.TraversalBranchWithState.next(TraversalBranchWithState.java:32)
>>>     at 
>>> org.neo4j.kernel.impl.traversal.StartNodeTraversalBranch.next(StartNodeTraversalBranch.java:50)
>>>     at 
>>> org.neo4j.graphdb.traversal.PreorderDepthFirstSelector.next(PreorderDepthFirstSelector.java:49)
>>>     at 
>>> org.neo4j.kernel.impl.traversal.MonoDirectionalTraverserIterator.fetchNextOrNull(MonoDirectionalTraverserIterator.java:70)
>>>     at 
>>> org.neo4j.kernel.impl.traversal.MonoDirectionalTraverserIterator.fetchNextOrNull(MonoDirectionalTraverserIterator.java:36)
>>>     at 
>>> org.neo4j.helpers.collection.PrefetchingIterator.peek(PrefetchingIterator.java:60)
>>>     at 
>>> org.neo4j.helpers.collection.PrefetchingIterator.hasNext(PrefetchingIterator.java:46)
>>>     at 
>>> org.neo4j.helpers.collection.PrefetchingIterator.next(PrefetchingIterator.java:75)
>>>     at 
>>> org.neo4j.kernel.impl.traversal.OldTraverserWrapper$TraverserImpl.next(OldTraverserWrapper.java:86)
>>>     at 
>>> org.neo4j.kernel.impl.traversal.OldTraverserWrapper$TraverserImpl.next(OldTraverserWrapper.java:47)
>>>     at 
>>> org.neo4j.gis.spatial.filter.SearchRecords.next(SearchRecords.java:53)
>>>     at 
>>> org.neo4j.gis.spatial.filter.SearchRecords.next(SearchRecords.java:29)
>>>     at 
>>> org.neo4j.gis.spatial.pipes.GeoPipeline$1.next(GeoPipeline.java:134)
>>>     at 
>>> org.neo4j.gis.spatial.pipes.GeoPipeline$1.next(GeoPipeline.java:126)
>>>     at 
>>> org.neo4j.gis.spatial.pipes.impl.LastElementIterator.next(LastElementIterator.java:19)
>>>     at 
>>> org.neo4j.gis.spatial.pipes.impl.IdentityPipe.processNextStart(IdentityPipe.java:18)
>>>     at 
>>> org.neo4j.gis.spatial.pipes.impl.AbstractPipe.next(AbstractPipe.java:72)
>>>     at 
>>> org.neo4j.gis.spatial.pipes.AbstractGeoPipe.processNextStart(AbstractGeoPipe.java:49)
>>>     at 
>>> org.neo4j.gis.spatial.pipes.AbstractGeoPipe.processNextStart(AbstractGeoPipe.java:31)
>>>     at 
>>> org.neo4j.gis.spatial.pipes.impl.AbstractPipe.next(AbstractPipe.java:72)
>>>     at org.neo4j.gis.spatial.pipes.impl.Pipeline.next(Pipeline.java:113)
>>>     at 
>>> org.neo4j.gis.spatial.pipes.GeoPipeline.toNodeList(GeoPipeline.java:1015)
>>>     
>>>
>>> Exception in thread "main" java.lang.ClassCastException: 
>>> java.lang.Double cannot be cast to [B
>>>     at 
>>> org.neo4j.gis.spatial.WKBGeometryEncoder.decodeGeometry(WKBGeometryEncoder.java:41)
>>>     at 
>>> org.neo4j.gis.spatial.filter.SearchIntersectWindow.onEnvelopeIntersection(SearchIntersectWindow.java:48)
>>>     at 
>>> org.neo4j.gis.spatial.rtree.filter.AbstractSearchEnvelopeIntersection.geometryMatches(AbstractSearchEnvelopeIntersection.java:45)
>>>     at 
>>> org.neo4j.gis.spatial.rtree.RTreeIndex$SearchEvaluator.checkPosition(RTreeIndex.java:286)
>>>     at 
>>> org.neo4j.gis.spatial.rtree.RTreeIndex$SearchEvaluator.isStopNode(RTreeIndex.java:299)
>>>     at 
>>> org.neo4j.kernel.impl.traversal.OldTraverserWrapper$Pruner.evaluate(OldTraverserWrapper.java:260)
>>>     at 
>>> org.neo4j.graphdb.traversal.Evaluator$AsPathEvaluator.evaluate(Evaluator.java:69)
>>>     at 
>>> org.neo4j.kernel.impl.traversal.MultiEvaluator.evaluate(MultiEvaluator.java:62)
>>>     at 
>>> org.neo4j.kernel.impl.traversal.MonoDirectionalTraverserIterator.evaluate(MonoDirectionalTraverserIterator.ja
>>>
>>> ...
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Neo4j" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to