title: 索引

weight: 6

codes_index_new_from_file

  1. iid = codes_index_new_from_file (file, keys)

返回创建的索引句柄。

codes_index_add_file

  1. codes_index_add_file (iid, file)

添加一个文件到索引。

codes_index_write

  1. codes_index_write (iid, file)

将索引写入文件,以便后续使用。

codes_index_read

  1. iid = codes_index_read (file)

codes_index_write 输出的文件中加载索引。

codes_index_release

  1. codes_index_release (iid)

释放索引。

codes_index_get_size

  1. size = codes_index_get_size (iid, key)

索引 key 不重复的键值总数

codes_index_get

  1. values = codes_index_get (iid, key, ktype=str)

获取索引 key 的不重复键值列表。

codes_index_select

  1. codes_index_select (iid, key, value)

选择满足 key==value 的 GRIB 消息子集。

codes_new_from_index

codes_grib_new_from_file 相同,并使用 codes_release 释放消息。

示例:

  1. from __future__ import print_function
  2. import click
  3. import eccodes
  4. @click.command()
  5. @click.argument('file_path')
  6. def cli(file_path):
  7. index_id = eccodes.codes_index_new_from_file(str(file_path), ["paramId"])
  8. eccodes.codes_index_add_file(index_id, str(file_path))
  9. param_size = eccodes.codes_index_get_size(index_id, "paramId")
  10. print("param id count:", param_size)
  11. param_id_list = eccodes.codes_index_get(index_id, "paramId")
  12. print("param id list:", param_id_list)
  13. eccodes.codes_index_select(index_id, "paramId", '131')
  14. handle = eccodes.codes_new_from_index(index_id)
  15. while handle is not None:
  16. short_name = eccodes.codes_get(handle, "shortName")
  17. date = eccodes.codes_get(handle, "dataDate")
  18. type_of_level = eccodes.codes_get(handle, "typeOfLevel")
  19. level = eccodes.codes_get(handle, "level")
  20. print(short_name, date, type_of_level, level)
  21. eccodes.codes_release(handle)
  22. handle = eccodes.codes_new_from_index(index_id)
  23. if __name__ == "__main__":
  24. cli()