根据条件解析邮政编码边界 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)
我有一个邮政编码边界的 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)