2016-11-13 90 views
0

我有以下結構的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. ... 

我想根據我在Python計算每個單元單獨的屬性閱讀本GeoJSON的進入谷歌地圖,並有顏色的每個單元格。所以我最關心的問題是:如何用Python讀取geoJSON並向這些Polygons添加另一個屬性(有12000個多邊形,因此不能將它們逐個添加),然後編寫新文件?

我想我在找的是一個可以處理geoJSON的Python庫,所以我不必通過srting操作來添加這些功能。

+0

確定geojson顏色的值是什麼? 另外,爲什麼不只是在循環中添加屬性?肯定不會那麼慢? – alexisdevarennes

+0

這就是我的問題。我如何將geoJSON文件讀入Python,並添加一個特性並寫入新文件? –

回答

0

geoJSON只是一個JSON文檔(簡化,但你需要這個目的)。 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自定義類來幫助你添加的屬性。