我在Python中从Firestore Geopoint对象检索纬度和经度时遇到困难。我试过多种方法,但似乎都不起作用。有什么建议吗?地理点对象位于dict.中的alertLocation
代码:
docs = db.collection(u'users').where(u'first', u'==', u'MyFirstName').stream()
for doc in docs:
logger.log_text(f'{doc.id} => {doc.to_dict()}')
输出:
HHA5pGRN1rBtGtHRgDS7 => {'alertLocation': <google.cloud.firestore_v1._helpers.GeoPoint object at 0x3e1877599e50>, 'first': 'MyFirstName', 'email': 'me@email.com', 'last': 'mylastname'}
使用doc.to_dict()
返回文档的字典;您想要的是访问GeoPoint
对象(即您想要doc.to_dict()['alertLocation']
(。纬度和经度作为属性存储在GeoPoint对象上,可通过点表示法进行访问。例如,将格式字符串替换为f'{doc.id} => {doc.to_dict()['alertLocation'].latitude}'
将为您提供自由度。默认的GeoPoint
对象表示只提供对象id(在内存中(,而不是显示纬度和经度的漂亮表示。
显然,我的问题是我试图使用的记录器函数,而访问地理点对象中的属性则不那么重要。我需要将纬度转换为一个字符串,以使log_text方法正常工作。
logger.log_text(str(doc.to_dict()["alertLocation"].latitude))