【问题标题】:OrientDB GraphDB Spatial Module SupportOrientDB GraphDB 空间模块支持
【发布时间】:2016-05-07 17:04:34
【问题描述】:

OrientDB 有一个新的空间模块 (http://orientdb.com/docs/2.1/Spatial-Module.html),可用于 2.2 版。我想知道它是否适用于图数据库?

当我阅读他们的文档时,上面写着“OrientDB 将这些对象存储为具有特殊类的嵌入式文档”。并且给定的示例 Java 代码仅适用于文档数据库。

ODocument location = new ODocument("OPoint");
location.field("coordinates", Arrays.asList(12.4684635, 41.8914114));

ODocument doc = new ODocument("Restaurant");
doc.field("name","Dar Poeta");
doc.field("location",location);

doc.save(); 

我尝试将 OPoint 实例作为属性添加到 OrientVertex,但它不起作用。下面的异常是 throw;

 com.orientechnologies.orient.core.exception.OSchemaException: Document belongs to abstract class OPoint and cannot be saved
Storage URL="remote:127.0.0.1/phd2"
at com.orientechnologies.orient.core.tx.OTransactionAbstract.getClusterName(OTransactionAbstract.java:236)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.saveRecord(OTransactionOptimistic.java:374)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.save(ODatabaseDocumentTx.java:2480)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.save(ODatabaseDocumentTx.java:118)
at com.orientechnologies.orient.core.record.impl.ODocument.save(ODocument.java:1812)
at com.orientechnologies.orient.core.record.impl.ODocument.save(ODocument.java:1808)
at com.tinkerpop.blueprints.impls.orient.OrientElement.save(OrientElement.java:325)
at com.tinkerpop.blueprints.impls.orient.OrientBaseGraph.addVertex(OrientBaseGraph.java:588)

我的示例代码是这样的;

    String id = "HERE+IS+ID";   
    ODocument location = new ODocument("OPoint");
    location.field("coordinates", Arrays.asList(12.2323, 34.3233));       
    Vertex sink = graph.addVertex(id, Constants.NAME, "Sink-Root", Constants.LOCATION, location);

您能帮我解决我的 OrientDB 图形数据库(不是文档数据库)使用空间查询的问题吗?示例 Java 代码将非常有帮助。

非常感谢。

【问题讨论】:

    标签: orientdb


    【解决方案1】:

    你应该在你的顶点类中创建嵌入属性,就像在文档示例中一样

    CREATE PROPERTY Restaurant.location EMBEDDED OPoint
    

    【讨论】:

      【解决方案2】:

      感谢 wolf4ood 提供准确答案的路径。这是在 OrientDB 中创建 Spatial 属性的 Java 代码。

          manager.createVertexClass(SensorNodeType.Sink, SensorNodeType.Sink);
          OrientVertexType vertex = graph.getVertexType(SensorNodeType.Sink);
      
          if (vertex.getProperty(Constants.NAME) == null) {
             vertex.createProperty(Constants.NAME, OType.STRING);
          }
          if (vertex.getProperty(Constants.POSITION) == null) {
             ODocument location = new ODocument("OPoint");
             vertex.createProperty(Constants.POSITION, OType.EMBEDDED, location.getSchemaClass());
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-03-06
        • 2016-03-25
        • 2017-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-05
        相关资源
        最近更新 更多