如何使用Python访问Firestore Geopoint对象的纬度和经度(这应该很容易!)



我在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))

相关内容

最新更新