2016-11-13 11 views
0

I имеет следующую структуру в geojsonfile:Добавить функцию geoJSON с Python?

{"crs": 
    {"type": "name", 
    "properties": 
    {"name": "urn:ogc:def:crs:EPSG::4326"} 
    }, 
    "type": "FeatureCollection", 
    "features": [ 
    {"geometry": 
     {"type": "Polygon", 
     "coordinates": [[[10.914622377957983, 45.682007076150505], 
         [10.927456267537572, 45.68179119797432], 
         [10.927147329501077, 45.672795442796335], 
         [10.914315493899755, 45.67301125363092], 
         [10.914622377957983, 45.682007076150505]]]},   
     "type": "Feature", 
     "id": 0, 
     "properties": {"cellId": 38} 
    }, 
     {"geometry": 
     {"type": "Polygon", 
     "coordinates": 
    ... etc. ... 

Я хочу, чтобы прочитать эту GeoJSON в Google Maps и иметь каждую ячейку окрашенную на основе свойства I, вычисленное в Python для каждой ячейки в отдельности. Поэтому мой самый большой вопрос: как я могу прочитать geoJSON с помощью Python и добавить другое свойство в эти полигоны (там есть 12 000 полигонов, поэтому добавление их по одному не является вариантом), а затем записать новый файл?

Я думаю, что я ищу библиотеку для Python, которая может обрабатывать geoJSON, поэтому мне не нужно добавлять эту функцию с помощью обработки srting.

+0

Является ли значение, определяющее цвет в geojson? Кроме того, почему бы просто не добавить свойство в цикле? Неужели это не так медленно? – alexisdevarennes

+0

Это точно мой вопрос. Как я могу прочитать файл geoJSON в Python и добавить функцию и написать новый файл? –

ответ

0

GeoJSON - это всего лишь JSON doc (упрощение, но это все, что вам нужно для этой цели). Python читает это как объект dict.

С dict обновляются на месте, нам не нужно сохранять новую переменную для геообъектов.

import json 

# read in json 
geo_objects = json.load(open("/path/to/files")) 

# code ... 

for d in geo_objects: 
    d["path"]["to"]["field"] = calculated_value 

json.dump(geofiles, open("/path/to/output/file")) 

Не требуется никаких манипуляций с строкой, нет необходимости загружать новую библиотеку!

0

Существует способ с Python geojson package.

Как это, вы можете прочитать в формате GeoJSON имеет объект:

import geojson 
loaded = geojson.loads("Any geojson file or geojson string") 

for feature in loaded.features[0:50]: #[0:50] for the only first 50th. 
    print feature 

Существует особенность, FeatureCollection и пользовательские классы, чтобы помочь вам добавить свои атрибуты.

 Смежные вопросы

  • Нет связанных вопросов^_^