Python получить значение от Geojson - PullRequest
0 голосов
/ 17 сентября 2018

Пожалуйста, кто-нибудь может поделиться каким-нибудь скриптом на python, который будет проходить через этот геойсон и извлекать значения в разделе "вложение".Я борюсь с этими.

Спасибо

{
 "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
  }
]
}
}

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018

Приведенный вами образец json не похож на действительный geojson для меня.Вы можете найти синтаксические анализаторы, которые не так строги, но запятой (",") в конце строки "Tag_Number", например, быть не должно, и я ожидаю найти атрибут "type", определяющий любую геометрию илиfeatures.

Кроме того, geojson добавляет семантическое значение для json, чтобы вы могли для своих задач рассматривать его как любую задачу разбора json в Python.

Если ваши данные находятся в файлеsample.geojson вы можете читать из файла методом load():

import json

with open('sample.geojson') as data:
    geo = json.load(data)

В результате geo будет обычным Словарём Python , который вы можете просмотреть.Вызвав geo.keys(), вы можете найти все ключи в данных.

In [4]: geo.keys()
Out[4]: [u'fields', u'geom', u'extensions', u'id']

Вы получаете доступ к любым значениям, как к любому словарю Python, указав ключ: geo['extensions'].

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}

Поскольку extensions сам по себе является словарем, вы также можете ссылаться на него и циклически перебирать любые значения, являющиеся списком словарей.

In [6]: for item in geo['extensions']['attachment']:
    ...:     print(item['name'])
    ...:
1531402833735.jpg
1531402882838.jpg

ipython может оказаться полезным интерактивным инструментом, когда вы научитесь работать с данными и структурами данных в Python.

0 голосов
/ 17 сентября 2018

Пожалуйста, попробуйте это ниже код

 import geojson
 gj = geojson.loads(jsonstr)
 if "attachment" in gj:
     for attachment in gj["attachment"]:
        print (attachment)
...