在Python中附加geoJSON功能?

时间:2016-11-13 14:08:53

标签: python geojson

我在geojsonfile中有以下结构:

{"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,并根据我在Python中为每个单元格单独计算的属性对每个单元格进行着色。所以我最大的问题是:如何用Python读取geoJSON并为这些多边形添加另一个属性(有12 000个多边形,所以逐个添加它们不是一个选项),然后写新文件? / p>

我认为我正在寻找的是一个可以处理geoJSON的Python库,所以我不必通过srting操作来添加这些功能。

2 个答案:

答案 0 :(得分:2)

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

有Feature,FeatureCollection和Custom类可帮助您添加属性。

答案 1 :(得分:1)

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"))

无需字符串操作,无需加载新库!