Python从Geojson获取值
请有人分享一些python脚本,该脚本将循环使用此geojson并检索“附件”下的值。我正在努力解决这些问题 多谢各位Python从Geojson获取值,python,json,geojson,Python,Json,Geojson,请有人分享一些python脚本,该脚本将循环使用此geojson并检索“附件”下的值。我正在努力解决这些问题 多谢各位 { "id": 3, "geom": "POINT (-65621.7187500000000000 6688807.5000000000000000)", "fields": { "Identifier": null, "Species": null, "Tag_Number": "Quercus robur 505", }, "extensions": {
{
"id": 3,
"geom": "POINT (-65621.7187500000000000 6688807.5000000000000000)",
"fields": {
"Identifier": null,
"Species": null,
"Tag_Number": "Quercus robur 505",
},
"extensions": {
"description": null,
"attachment": [
{
"id": 7,
"name": "1531402833735.jpg",
"size": 4559151,
"mime_type": "image/jpeg",
"description": "",
"is_image": true
},
{
"id": 8,
"name": "1531402882838.jpg",
"size": 6418150,
"mime_type": "image/jpeg",
"description": "",
"is_image": true
}
]
}
}
请尝试下面的代码
import geojson
gj = geojson.loads(jsonstr)
if "attachment" in gj:
for attachment in gj["attachment"]:
print (attachment)
您提供的示例json对我来说似乎无效。您可以找到不那么严格的解析器,但例如“Tag_Number”行末尾的逗号(“,”)不应该在那里,我希望找到定义任何几何体或特征的“type”属性 除此之外,geojson为json添加了语义含义,因此您可以将其视为Python中的任何json解析任务 如果数据位于文件
sample.geojson
中,则可以使用load()
方法从文件中读取:
import json
with open('sample.geojson') as data:
geo = json.load(data)
这导致geo
成为您可以检查的常规产品。通过调用geo.keys()
可以找到数据中的所有键
In [4]: geo.keys()
Out[4]: [u'fields', u'geom', u'extensions', u'id']
通过指定键:geo['extensions']
,可以像访问任何Python字典一样访问任何值
In [5]: geo['extensions']
Out[5]:
{u'attachment': [{u'description': u'',
u'id': 7,
u'is_image': True,
u'mime_type': u'image/jpeg',
u'name': u'1531402833735.jpg',
u'size': 4559151},
{u'description': u'',
u'id': 8,
u'is_image': True,
u'mime_type': u'image/jpeg',
u'name': u'1531402882838.jpg',
u'size': 6418150}],
u'description': None}
因为,扩展本身就是一个字典,所以您也可以引用它并循环任何碰巧是字典列表的值
In [6]: for item in geo['extensions']['attachment']:
...: print(item['name'])
...:
1531402833735.jpg
1531402882838.jpg
在学习使用Python处理数据和数据结构时,您可能会发现一个有用的交互式工具。Python JSON包可以轻松地将JSON转换为dict。感谢您的帮助。我试过了,但什么也没回。如果我将“附件”更改为“扩展”,我会得到响应。就像它看不见里面一样。。。。