Nebula-sdk 解析Point数据

  • nebula 版本:2.6.2

  • python-sdk版本:nebula2-python 2.6.0

  • 部署方式:分布式

  • 安装方式: RPM

  • 是否为线上版本:Y

  • 硬件信息

    • 磁盘( SSD)
  • 问题的具体描述

库里插入了一些地理节点数据,使用python-sdk进行节点获取和解析,无法获取到其对应的坐标值;

【数据插入语句】
INSERT VERTEX LBS(GeoData) VALUES "BEBD2384032C124D08A8E340F58B2D32":(ST_Point(109.185063,34.670475))

【后端获取数据】
ResultSet(keys: ['n'], values: [("BEBD2384032C124D08A8E340F58B2D32" :LBS{GeoData: POINT(Point(
    coord=Coordinate(
        x=109.185063,
        y=34.670475))))])

【问题描述】
使用python-sdk获取到相应数据后,进行了as_geography().as_point()后转换成了PointWrapper,
使用其中的get_coordinate方法,应该会得到一个CoordinateWrapper类型,从而可以使用get_x,y 获取坐标值;
但是得到的是一个point类型,无上面两个方法

  • 代码
result = session.execute('''MATCH (n) WHERE id(n) IN ["BEBD2384032C124D08A8E340F58B2D32"] RETURN n''')
result_src = list(result.column_values('n'))
for i in result_src:
    node = i.as_node()
    node_tags = node.tags()
    for _tag in node_tags:
        _node_properties = node.properties(_tag)
        if _node_properties['GeoData'].as_geography().is_point():
            _point = _node_properties['GeoData'].as_geography().as_point()
            print(_point.get_coordinate().get_x())

请问刨除 INSERT 的返回,如果用读的 QUERY 得到的 ResultSet 这么 as_geography().as_point() 也会遇到一样的问题吗?

如果是的,可以来 Nebula-Python github 上提一个 issue 么?

INSERT返回指的插入后直接返回的结果吗?读的QUERY指的是python-sdk的execute查询语句获取的结果方式吗

嗯嗯 可能我误解了 你这个resultset 是 insert 语句的返回还是 其他query 的返回?

这个resultset 是直接通过sdk execute match语句接收到的返回

result = session.execute('''MATCH (n) WHERE id(n) IN ["BEBD2384032C124D08A8E340F58B2D32"] RETURN n''')
result_src = list(result.column_values('n'))

感谢,我回电脑时候重现看看哈

浙ICP备20010487号