根据条件解析邮政编码边界 geojson 文件,然后在满足条件时附加到新的 json 文件

Parsing a zipcode boundary geojson file based on a condition, then appending to a a new json file if condition is met

我有一个邮政编码边界的 geojson 文件。

with open('zip_geo.json') as f: 
    gj = geojson.load(f)

gj['features'][0]['properties']

打印出来;

{'STATEFP10': '36',
 'ZCTA5CE10': '12205',
 'GEOID10': '3612205',
 'CLASSFP10': 'B5',
 'MTFCC10': 'G6350',
 'FUNCSTAT10': 'S',
 'ALAND10': 40906445,
 'AWATER10': 243508,
 'INTPTLAT10': '+42.7187855',
 'INTPTLON10': '-073.8292399',
 'PARTFLG10': 'N'}

我还有一个 pandas 数据框,其中一个字段是邮政编码。

仅当特定元素的 'ZCTA5CEO' 值出现在我的数据框的邮政编码列中时,我才想创建一个新的 geojson 文件。

我该怎么做?

我在想类似的事情; (这是伪代码)

new_dict = {}

for index,item in enumerate(gj):
    if item['features'][index]['properties']['ZCTACE10'] in df['zipcode']:
        new_dict += item

上面代码的语法显然是错误的,但我不确定如何解析多个嵌套字典并将结果附加到新字典中。


Link 到 geojson 文件:https://github.com/OpenDataDE/State-zip-code-GeoJSON/blob/master/ny_new_york_zip_codes_geo.min.json

简而言之,我想删除所有与邮政编码相关的元素,这些元素不在我的数据框中的邮政编码列中。

试试这个。只需更新您的 ziplist。然后你可以将新的 json 保存到本地文件

ziplist = ['12205', '14719', '12193', '12721'] #list of zips in your dataframe

url='https://github.com/OpenDataDE/State-zip-code-GeoJSON/raw/master/ny_new_york_zip_codes_geo.min.json'
gj =  requests.get(url).json()

inziplist = []
for  ft in gj['features']:
    if ft['properties']['ZCTA5CE10'] in ziplist:
        print(ft['properties']['ZCTA5CE10'])
        inziplist.append(ft)
print(len(inziplist))        

new_zip_json = {}
new_zip_json['type'] = 'FeatureCollection'
new_zip_json['features'] = inziplist
new_zip_json  = json.dumps(new_zip_json)