本文整理汇总了Python中mongodb_store.message_store.MessageStoreProxy.query方法的典型用法代码示例。如果您正苦于以下问题:Python MessageStoreProxy.query方法的具体用法?Python MessageStoreProxy.query怎么用?Python MessageStoreProxy.query使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类mongodb_store.message_store.MessageStoreProxy
的用法示例。
在下文中一共展示了MessageStoreProxy.query方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: remove_node
# 需要导入模块: from mongodb_store.message_store import MessageStoreProxy [as 别名]
# 或者: from mongodb_store.message_store.MessageStoreProxy import query [as 别名]
def remove_node(self, node_name) :
rospy.loginfo('Removing Node: '+node_name)
msg_store = MessageStoreProxy(collection='topological_maps')
query = {"name" : node_name, "pointset": self.name}
query_meta = {}
query_meta["pointset"] = self.name
query_meta["map"] = self.map
available = msg_store.query(TopologicalNode._type, query, query_meta)
node_found = False
if len(available) == 1 :
node_found = True
rm_id = str(available[0][1]['_id'])
print rm_id
else :
rospy.logerr("Node not found "+str(len(available))+" waypoints found after query")
#rospy.logerr("Available data: "+str(available))
if node_found :
query_meta = {}
query_meta["pointset"] = self.name
edges_to_rm = []
message_list = msg_store.query(TopologicalNode._type, {}, query_meta)
for i in message_list:
for j in i[0].edges :
if j.node == node_name :
edge_rm = i[0].name+'_'+node_name
edges_to_rm.append(edge_rm)
for k in edges_to_rm :
print 'remove: '+k
self.remove_edge(k)
msg_store.delete(rm_id)
示例2: loadMap
# 需要导入模块: from mongodb_store.message_store import MessageStoreProxy [as 别名]
# 或者: from mongodb_store.message_store.MessageStoreProxy import query [as 别名]
def loadMap(self, point_set, filename):
point_set=str(sys.argv[1])
#map_name=str(sys.argv[3])
msg_store = MessageStoreProxy(collection='topological_maps')
query_meta = {}
query_meta["pointset"] = point_set
available = len(msg_store.query(TopologicalNode._type, {}, query_meta)) > 0
print available
if available <= 0 :
rospy.logerr("Desired pointset '"+point_set+"' not in datacentre")
rospy.logerr("Available pointsets: "+str(available))
raise Exception("Can't find waypoints.")
else :
query_meta = {}
query_meta["pointset"] = point_set
message_list = msg_store.query(TopologicalNode._type, {}, query_meta)
#node=TopologicalNode()
top_map=[]
for i in message_list:
nodeinf = {}
nodeinf["node"] = yaml.load(str(i[0]))
if nodeinf["node"]["localise_by_topic"]:
nodeinf["node"]["localise_by_topic"] = json.dumps(nodeinf["node"]["localise_by_topic"])
nodeinf["meta"] = i[1] #str(bson.json_util.dumps(i[1], indent=1))
nodeinf["meta"].pop("last_updated_by", None)
nodeinf["meta"].pop('inserted_at', None)
nodeinf["meta"].pop('last_updated_at', None)
nodeinf["meta"].pop('stored_type', None)
nodeinf["meta"].pop('stored_class', None)
nodeinf["meta"].pop('inserted_by', None)
nodeinf["meta"].pop('_id', None)
top_map.append(nodeinf)
#val = bson.json_util.dumps(nodeinf["meta"], indent=1)
top_map.sort(key=lambda x: x['node']['name'])
yml = yaml.safe_dump(top_map, default_flow_style=False)
#print yml
#print s_output
fh = open(filename, "w")
#s_output = str(bson.json_util.dumps(nodeinf, indent=1))
s_output = str(yml)
#print s_output
fh.write(s_output)
fh.close
示例3: loadConfig
# 需要导入模块: from mongodb_store.message_store import MessageStoreProxy [as 别名]
# 或者: from mongodb_store.message_store.MessageStoreProxy import query [as 别名]
def loadConfig(self, data_set):
msg_store = MessageStoreProxy(collection="hri_behaviours")
query_meta = {}
query_meta["collection"] = data_set
if len(msg_store.query(std_msgs.msg.String._type, {}, query_meta)) == 0:
rospy.logerr("Desired dialogue options '"+data_set+"' not in datacentre.")
raise Exception("Can't find data in datacentre.")
else:
message = msg_store.query(std_msgs.msg.String._type, {}, query_meta)
return json.loads(message[0][0].data)
示例4: test_add_message
# 需要导入模块: from mongodb_store.message_store import MessageStoreProxy [as 别名]
# 或者: from mongodb_store.message_store.MessageStoreProxy import query [as 别名]
def test_add_message(self):
msg_store = MessageStoreProxy()
POSE_NAME = "__test__pose__"
p = Pose(Point(0, 1, 2), Quaternion(0, 0, 0, 1))
# insert a pose object with a name
msg_store.insert_named(POSE_NAME, p)
# get it back with a name
stored, meta = msg_store.query_named(POSE_NAME, Pose._type)
self.assertIsInstance(stored, Pose)
self.assertEqual(stored.position.x, p.position.x)
self.assertEqual(stored.position.y, p.position.y)
self.assertEqual(stored.position.z, p.position.z)
self.assertEqual(stored.orientation.x, p.orientation.x)
self.assertEqual(stored.orientation.y, p.orientation.y)
self.assertEqual(stored.orientation.z, p.orientation.z)
self.assertEqual(stored.orientation.w, p.orientation.w)
p.position.x = 666
msg_store.update_named(POSE_NAME, p)
# get it back with a name
updated = msg_store.query_named(POSE_NAME, Pose._type)[0]
self.assertEqual(updated.position.x, p.position.x)
# # try to get it back with an incorrect name
wrong_name = "thid name does not exist in the datacentre"
none_item = msg_store.query_named(wrong_name, Pose._type)[0]
self.assertIsNone(none_item)
# # get all non-existant typed objects, so get an empty list back
none_query = msg_store.query( "not my type")
self.assertEqual(len(none_query), 0)
# add 100 query and sort by date inserted.
for i in range(100):
p = Pose(Point(0, 0, 0), Quaternion(i, 0, 100, 1))
msg_store.insert(p)
result = msg_store.query(Pose._type, message_query={ 'orientation.z': {'$gt': 10} }, sort_query=[("$natural", -1)])
self.assertEqual(len(result), 100)
self.assertEqual(result[0][0].orientation.x, 99)
# must remove the item or unittest only really valid once
print meta["_id"]
print str(meta["_id"])
deleted = msg_store.delete(str(meta["_id"]))
self.assertTrue(deleted)
示例5: loadMap
# 需要导入模块: from mongodb_store.message_store import MessageStoreProxy [as 别名]
# 或者: from mongodb_store.message_store.MessageStoreProxy import query [as 别名]
def loadMap(self, point_set):
point_set=str(sys.argv[1])
#map_name=str(sys.argv[3])
msg_store = MessageStoreProxy(collection='topological_maps')
query_meta = {}
query_meta["pointset"] = point_set
available = len(msg_store.query(TopologicalNode._type, {}, query_meta)) > 0
print available
if available <= 0 :
rospy.logerr("Desired pointset '"+point_set+"' not in datacentre")
rospy.logerr("Available pointsets: "+str(available))
raise Exception("Can't find waypoints.")
else :
query_meta = {}
query_meta["pointset"] = point_set
message_list = msg_store.query(TopologicalNode._type, {}, query_meta)
points = []
for i in message_list:
#print i[0].name
b = topological_node(i[0].name)
edges = []
for j in i[0].edges :
data = {}
data["node"]=j.node
data["action"]=j.action
edges.append(data)
b.edges = edges
verts = []
for j in i[0].verts :
data = [j.x,j.y]
verts.append(data)
b._insert_vertices(verts)
c=i[0].pose
waypoint=[str(c.position.x), str(c.position.y), str(c.position.z), str(c.orientation.x), str(c.orientation.y), str(c.orientation.z), str(c.orientation.w)]
b.waypoint = waypoint
b._get_coords()
points.append(b)
return points
示例6: NavRelaxant
# 需要导入模块: from mongodb_store.message_store import MessageStoreProxy [as 别名]
# 或者: from mongodb_store.message_store.MessageStoreProxy import query [as 别名]
class NavRelaxant(object):
def __init__(self, count_threshold):
super(NavRelaxant, self).__init__()
self.node_pairs = []
rospy.Subscriber('topological_map', TopologicalMap, self.map_callback)
self.msg_store = MessageStoreProxy(collection='nav_stats')
def map_callback(self, msg):
node_pairs = []
for node in msg.nodes:
for edge in node.edges:
node_pairs.append((node.name, edge.node, edge.edge_id))
self.node_pairs = node_pairs
def print_pair(self, start, end):
count = len(self.msg_store.query(NavStatistics._type, {"origin": start, "target": end, "final_node": end}))
rospy.loginfo('Nav stats from %s to %s: %s' % (start, end, count))
def print_nav_stats(self):
# only really needed for testing
while len(self.node_pairs) == 0 and not rospy.is_shutdown():
rospy.sleep(1)
rospy.loginfo('Waiting for nodes')
for (start, end, edge_id) in self.node_pairs:
self.print_pair(start, end)
示例7: add_localise_by_topic
# 需要导入模块: from mongodb_store.message_store import MessageStoreProxy [as 别名]
# 或者: from mongodb_store.message_store.MessageStoreProxy import query [as 别名]
def add_localise_by_topic(tmap, node, json_str):
#print req
#data = json.loads(req.content)
#print data
msg_store = MessageStoreProxy(collection='topological_maps')
query = {"name" : node, "pointset": tmap}
query_meta = {}
#query_meta["pointset"] = tmap
#query_meta["map"] = self.nodes.map
#print query, query_meta
available = msg_store.query(strands_navigation_msgs.msg.TopologicalNode._type, query, query_meta)
#print len(available)
if len(available) != 1:
#succeded = False
print 'there are no nodes or more than 1 with that name'
else:
#succeded = True
for i in available:
if not i[0].localise_by_topic:
msgid= i[1]['_id']
i[0].localise_by_topic=json_str
#print i[0]
print "Updating %s--%s" %(i[0].pointset, i[0].name)
msg_store.update_id(msgid, i[0], i[1], upsert = False)
示例8: TrajectoryQueryService
# 需要导入模块: from mongodb_store.message_store import MessageStoreProxy [as 别名]
# 或者: from mongodb_store.message_store.MessageStoreProxy import query [as 别名]
class TrajectoryQueryService():
def __init__(self):
self.gs = GeoSpatialStoreProxy('geospatial_store','soma')
self.ms = MessageStoreProxy(collection="people_trajectory")
# setting up the service
self.ser = rospy.Service('/trajectory_query', TrajectoryQuery, self.service_cb)
self.topic = 'trajectory_query'
self.vis = TrajectoryVisualizer(self.topic)
def retrieve_msg(self, uuid):
res = self.ms.query(Trajectory._type, message_query={"uuid": uuid})
if len(res) < 1:
rospy.logerr("Trajectory not found: %s" % uuid)
return None
elif len(res) > 1:
rospy.logerr("Multiple trajectories found: %s" % uuid)
t = res[0][0]
return t
t = res[0][0]
return t
def service_cb(self, req):
rospy.loginfo("Request received: %s" % req)
if req.visualize:
self.vis.clear()
res = TrajectoryQueryResponse()
res.trajectories = Trajectories()
try:
json_query = json.loads(req.query)
trajectories = self.gs.find(json_query)
except:
rospy.logerr("Invalid json => re-check syntax")
res.error = True
return res
count = 0
for t in trajectories:
if t.has_key('uuid'):
count += 1
#rospy.loginfo("retrieve msg for uuid: %s" % t['uuid'])
# otherwise result is not a trajectory => ignore
msg = self.retrieve_msg(t['uuid'])
if msg:
res.trajectories.trajectories.append(msg)
rospy.loginfo("Query result: %s trajectories" % count)
if req.visualize:
rospy.loginfo("Visualize result on topic: %s" % self.topic)
self.vis.visualize_trajectories(res.trajectories)
rospy.loginfo("Response returned")
res.error = False
return res
def main(self):
rospy.spin()
示例9: add_edge
# 需要导入模块: from mongodb_store.message_store import MessageStoreProxy [as 别名]
# 或者: from mongodb_store.message_store.MessageStoreProxy import query [as 别名]
def add_edge(self, or_waypoint, de_waypoint, action) :
#print 'removing edge: '+edge_name
rospy.loginfo('Adding Edge from '+or_waypoint+' to '+de_waypoint+' using '+action)
node_name = or_waypoint
#nodeindx = self._get_node_index(edged[0])
msg_store = MessageStoreProxy(collection='topological_maps')
query = {"name" : node_name, "pointset": self.name}
query_meta = {}
query_meta["pointset"] = self.name
query_meta["map"] = self.map
available = msg_store.query(TopologicalNode._type, query, query_meta)
if len(available) == 1 :
found =False
for i in available[0][0].edges :
#print i.node
if i.node == de_waypoint :
found=True
break
if not found :
edge = Edge()
edge.node = de_waypoint
edge.action = action
edge.top_vel = 0.55
available[0][0].edges.append(edge)
msg_store.update(available[0][0], query_meta, query, upsert=True)
else :
rospy.logerr("Edge already exist: Try deleting it first")
else :
rospy.logerr("Impossible to store in DB "+str(len(available))+" waypoints found after query")
rospy.logerr("Available data: "+str(available))
示例10: add_tag_cb
# 需要导入模块: from mongodb_store.message_store import MessageStoreProxy [as 别名]
# 或者: from mongodb_store.message_store.MessageStoreProxy import query [as 别名]
def add_tag_cb(self, msg):
#rospy.loginfo('Adding Tag '+msg.tag+' to '+str(msg.node))
succeded = True
for j in msg.node:
msg_store = MessageStoreProxy(collection='topological_maps')
query = {"name" : j, "pointset": self.nodes.name}
query_meta = {}
query_meta["pointset"] = self.nodes.name
query_meta["map"] = self.nodes.map
#print query, query_meta
available = msg_store.query(strands_navigation_msgs.msg.TopologicalNode._type, query, query_meta)
#print len(available)
for i in available:
msgid= i[1]['_id']
if 'tag' in i[1]:
if not msg.tag in i[1]['tag']:
i[1]['tag'].append(msg.tag)
else:
a=[]
a.append(msg.tag)
i[1]['tag']=a
meta_out = str(i[1])
msg_store.update_id(msgid, i[0], i[1], upsert = False)
#print trstr
if len(available) == 0:
succeded = False
return succeded, meta_out
示例11: rm_tag_cb
# 需要导入模块: from mongodb_store.message_store import MessageStoreProxy [as 别名]
# 或者: from mongodb_store.message_store.MessageStoreProxy import query [as 别名]
def rm_tag_cb(self, msg):
#rospy.loginfo('Adding Tag '+msg.tag+' to '+str(msg.node))
succeded = True
for j in msg.node:
msg_store = MessageStoreProxy(collection='topological_maps')
query = {"name" : j, "pointset": self.nodes.name}
query_meta = {}
query_meta["pointset"] = self.nodes.name
query_meta["map"] = self.nodes.map
#print query, query_meta
available = msg_store.query(strands_navigation_msgs.msg.TopologicalNode._type, query, query_meta)
#print len(available)
succeded = False
for i in available:
msgid= i[1]['_id']
if 'tag' in i[1]:
if msg.tag in i[1]['tag']:
print 'removing tag'
i[1]['tag'].remove(msg.tag)
print 'new list of tags'
print i[1]['tag']
msg_store.update_id(msgid, i[0], i[1], upsert = False)
succeded = True
meta_out = str(i[1])
return succeded, meta_out
示例12: get_maps
# 需要导入模块: from mongodb_store.message_store import MessageStoreProxy [as 别名]
# 或者: from mongodb_store.message_store.MessageStoreProxy import query [as 别名]
def get_maps():
"""
Queries the database and returns details of the available topological maps.
:return: A dictionary where each key is the name of a topological map and each
item is a dictionary of details. Details are:
"number_nodes" ; integer
"edge_actions" : list of action server names used for traversal
"last_modified" : datetime.datetime object for the last time a node was inserted
"""
maps = dict()
msg_store = MessageStoreProxy(collection='topological_maps')
nodes = msg_store.query(TopologicalNode._type)
for node in nodes:
pointset = node[1]["pointset"]
if not maps.has_key(pointset):
maps[pointset] = {"number_nodes": 0, "edge_actions": set(), "last_modified": ""}
maps[pointset]["number_nodes"] += 1
if (maps[pointset]["last_modified"] == "" or
node[1]["inserted_at"] > maps[pointset]["last_modified"]):
maps[pointset]["last_modified"] = node[1]["inserted_at"]
for edge in node[0].edges:
maps[pointset]["edge_actions"].add(edge.action)
return maps
示例13: DBPlay
# 需要导入模块: from mongodb_store.message_store import MessageStoreProxy [as 别名]
# 或者: from mongodb_store.message_store.MessageStoreProxy import query [as 别名]
class DBPlay(object):
def __init__(self):
self.db_name = rospy.get_param('~db_name','jsk_pr2_lifelog')
self.col_name = rospy.get_param('~col_name', 'pr1012')
self.duration = rospy.get_param('~duration', 30)
self.msg_store = MessageStoreProxy(database=self.db_name, collection=self.col_name)
rospy.loginfo("connected to %s.%s" % (self.db_name, self.col_name))
self.pub = rospy.Publisher('/object_detection_marker_array', MarkerArray)
self.marker_count = 0
objs = self.msg_store.query(type=Object6DPose._type,
meta_query={"inserted_at": {
"$gt": datetime.now() - timedelta(days=self.duration)
}},
sort_query=[("$natural", -1)])
first_obj_meta = objs[0][1]
trans = [tuple(self.msg_store.query(type=TransformStamped._type,
meta_query={"inserted_at": {
"$lt": first_obj_meta["inserted_at"]
}},
sort_query=[("$natural", -1)],
single=True))]
trans += self.msg_store.query(type=TransformStamped._type,
meta_query={"inserted_at": {
"$gt": first_obj_meta["inserted_at"]
}},
sort_query=[("$natural", -1)])
j = 0
m_arr = MarkerArray()
for i in range(len(objs)):
o,o_meta = objs[i]
t,t_meta = trans[j]
if o_meta["inserted_at"] > t_meta["inserted_at"]:
j += 1
t,t_meta = trans[j]
ps = T.transformPoseWithTransformStamped(o.pose, t)
m_arr.markers += V.poseStampedToLabeledSphereMarker([ps, o_meta], o.type)
while not rospy.is_shutdown():
self.pub.publish(m_arr)
rospy.sleep(1.0)
rospy.logdebug("publishing objectdetection_marker_array")
示例14: get_soma_objects
# 需要导入模块: from mongodb_store.message_store import MessageStoreProxy [as 别名]
# 或者: from mongodb_store.message_store.MessageStoreProxy import query [as 别名]
def get_soma_objects(self):
"""srv call to mongo and get the list of new objects and locations"""
msg_store = MessageStoreProxy(database="soma2data", collection="soma2")
objs = msg_store.query(SOMA2Object._type, message_query={"map_name":self.soma_map,"config":self.soma_conf})
print "queried soma2 objects >> ", objs
self.soma_objects = ce.get_soma_objects()
print "hard coded objects >> ", [self.soma_objects[r].keys() for r in self.soma_objects.keys()]
示例15: SOMAROIQuery
# 需要导入模块: from mongodb_store.message_store import MessageStoreProxy [as 别名]
# 或者: from mongodb_store.message_store.MessageStoreProxy import query [as 别名]
class SOMAROIQuery():
def __init__(self, soma_map, soma_conf):
self.soma_map = soma_map
self.soma_conf = soma_conf
self._msg_store=MessageStoreProxy(collection="soma_roi")
def get_polygon(self, roi_id):
objs = self._msg_store.query(SOMAROIObject._type, message_query={"map": self.soma_map,
"config": self.soma_conf,
"roi_id": roi_id})
ids = []
poses = []
for o,om in objs:
ids.append(o.id)
poses.append(o.pose)
sorted_poses = [_pose for (_id,_pose) in sorted(zip(ids, poses))]
poly = Polygon()
poly.points = []
for p in sorted_poses:
point = Point()
point.x = p.position.x
point.y = p.position.y
poly.points.append(point)
return poly
def get_rois(self, roi_type=None):
"""
Returns a set of roi IDs of the given type. If type not specified,
returns all rois in this map/configuration.
"""
if roi_type is not None:
objs = self._msg_store.query(SOMAROIObject._type,
message_query={"map": self.soma_map,
"config": self.soma_conf,
"type": roi_type})
else:
objs = self._msg_store.query(SOMAROIObject._type,
message_query={"map": self.soma_map,
"config": self.soma_conf} )
#TODO: here it would be nice to be able to use mongodb distinct function
rois=set()
for o in objs:
rois.add(o[0].roi_id)
return rois