oh, that's actually a good idea. Thanks!

2015-02-12 11:24 GMT-03:00 Craig Taverner <[email protected]>:

> One compromise you could go for is to use both Java and Cypher. Use
> spatial and the Java API to load country polygons and airport locations.
> Use Java to perform spatial queries to locate airports in countries, and
> persist this as :IN relationships, and then use Cypher (as described in the
> previous email) to query this structure.
>
> You could call the cypher from Java if you want to make the entire thing a
> Java app. Alternatively, an approach I think is nice is to write a Java
> unmanaged extension that focuses on data import, does the spatial stuff I
> described in Java during the import of country polygons and city locations.
> And then you can access the server remotely with cypher (through the
> browser, or any client you prefer) and run the cypher queries from there.
>
>
> On Thu, Feb 12, 2015 at 3:20 PM, Fede Martinez <
> [email protected]> wrote:
>
>> Craig,
>> I know the model I presented is not the best and that using edges between
>> countries and airports is more sensible, but the idea was to apply spatial,
>> because my essay is about that. It's like a toy example
>>
>> I think I'll go with java then. I wanted to use Cypher because ArangoDB,
>> the other database I'm using, exposes all its spatial functions (way more
>> basic than the ones that Neo4j supports through java) in its query language
>> AQL.
>>
>> Thank you!
>>
>> 2015-02-12 11:10 GMT-03:00 Craig Taverner <
>> [email protected]>:
>>
>>> Hi,
>>>
>>> In current Neo4j releases the cypher support is limited to only the
>>> legacy indexes, and as Michael pointed out, the 'withinDistance' type
>>> queries you can use with the legacy index. However, your use case sounds
>>> like something entirely separate from this. I see no distance calculation
>>> need at all. You are only asking about connected edges between airports,
>>> correlated to knowledge about which countries those airports are in. In
>>> fact there is no need for Neo4j Spatial at all, because the knowledge of
>>> the country an airport belongs to is always known about all airports.
>>>
>>> Your graph model would have country nodes (no polygons required) and the
>>> airport nodes would be attached to the country nodes to which they belong.
>>> Edges between airports indicate routes. Then the two use cases you asked
>>> about would be solved like this:
>>>
>>>    - From what airports in Argentina is it possible to arrive to England
>>>
>>> *MATCH (:Country
>>>    
>>> {name:"Argentina"})<-[:IN]-(a:Airport)-[:ROUTE*1..2]-(:Airport)-[:IN]->(:Country
>>>    {name:"England")"}) RETURN a.name <http://a.name>;*
>>>    - A list of route options that leave a US city, have one stop
>>>    somewhere else and then arrive in Germany
>>>
>>>
>>> *MATCH (:Country
>>>    {name:"USA"})<-[:IN]-(a:Airport), (b:Airport)-[:IN]->(:Country
>>>    {name:"Germany")"}) MATCH (a)-[:ROUTE]->(x)-[:ROUTE]->(b) RETURN a.name
>>>    <http://a.name> as depart, x.name <http://x.name> as transit, b.name
>>>    <http://b.name> as arrive;*
>>>
>>> None of the above requires Neo4j Spatial, or the import of any spatial
>>> information into the database at all.
>>>
>>> However, if you are especially interested in using Neo4j Spatial, and
>>> want to have queries that make use of country polygons, you will need to
>>> use the Java embedded API, which allows you to import polygons into the
>>> spatial index and perform queries on those. For your use case I do not see
>>> the need, so I will not describe that option further, unless you also
>>> suggest some use cases that do.
>>>
>>> Regards, Craig
>>>
>>> On Thu, Feb 12, 2015 at 1:27 PM, fede martinez <
>>> [email protected]> wrote:
>>>
>>>> Thanks Michael,
>>>>
>>>> I had already read that link but I wasn't sure if the other operations
>>>> from *jts *were available or not. Aslo, in all the examples the geo
>>>> functions are used with constants. Is it possible to use them with
>>>> attributes from other nodes? I mean something like:
>>>> 'withinDistance:[another_node.x, another_node.y, 100]' instead of
>>>> 'withinDistance:[60.0,15.0, 100.0]'
>>>>
>>>> Fede
>>>>
>>>> El miércoles, 11 de febrero de 2015, 21:34:28 (UTC-3), Michael Hunger
>>>> escribió:
>>>>>
>>>>> you can use withindistance, bbox and within geometry queries from
>>>>> cypher,
>>>>>
>>>>> see the neo4j-spatial docs:
>>>>>
>>>>> http://neo4j-contrib.github.io/spatial/#rest-api-find-
>>>>> geometries-in-a-bounding-box-using-cypher
>>>>>
>>>>> HTH Michael
>>>>>
>>>>> Am 11.02.2015 um 23:06 schrieb fede martinez <[email protected]>:
>>>>>
>>>>> Hello,
>>>>> I'm working on a school project which consists of comparing Neo4j
>>>>> spatial capabilities vs ArangoDB.
>>>>>
>>>>> My idea is to load in Neo4j a list of airports with latitude and long
>>>>> and then a list of countries which would be polygons. The airports have
>>>>> edges if there is a route between them. I'd like to able to extract data
>>>>> such as:
>>>>>
>>>>> * From what airports in Argentina is it possible to arrive to England
>>>>> * A list of route options that leave a US city, have one stop
>>>>> somewhere else and then arrive in Germany
>>>>>
>>>>> What I would like to know is if I should create a layer for the
>>>>> airports and another for the countries or if I should use only one, 
>>>>> because
>>>>> I don't know if can do "cross layers" queries. Also I'd like to know,
>>>>> because so far I haven't been able to find the information, if I can use
>>>>> all the operations from the *jts* using Cypher, and if not, which
>>>>> ones are the operations I can do using Cypher?
>>>>>
>>>>> Thanks in advance
>>>>>
>>>>> Federico Martinez
>>>>>
>>>>> --
>>>>> 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.
>>>>>
>>>>>
>>>>>
>>>
>>  --
>> 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.
>>
>
>  --
> You received this message because you are subscribed to a topic in the
> Google Groups "Neo4j" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/neo4j/dbbFZ-R78DI/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> 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