{"id":32175574,"url":"https://github.com/cnmetlab/cnmaps","last_synced_at":"2026-04-01T23:02:26.464Z","repository":{"id":37634229,"uuid":"388525569","full_name":"cnmetlab/cnmaps","owner":"cnmetlab","description":"这是一个可以让中国地图画起来更丝滑的python扩展包","archived":false,"fork":false,"pushed_at":"2024-09-17T18:39:35.000Z","size":69281,"stargazers_count":140,"open_issues_count":40,"forks_count":25,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-10-11T15:56:54.267Z","etag":null,"topics":["cartopy","china","gis","map","matplotlib","python"],"latest_commit_sha":null,"homepage":"https://cnmaps.rtfd.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cnmetlab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-07-22T16:18:08.000Z","updated_at":"2025-09-10T18:44:04.000Z","dependencies_parsed_at":"2022-07-12T16:34:51.829Z","dependency_job_id":"9f6c046d-c7a1-400c-b8de-291b4afa0c7a","html_url":"https://github.com/cnmetlab/cnmaps","commit_stats":null,"previous_names":["clarmy/cnmaps"],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/cnmetlab/cnmaps","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cnmetlab%2Fcnmaps","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cnmetlab%2Fcnmaps/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cnmetlab%2Fcnmaps/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cnmetlab%2Fcnmaps/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cnmetlab","download_url":"https://codeload.github.com/cnmetlab/cnmaps/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cnmetlab%2Fcnmaps/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280325269,"owners_count":26311417,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-21T02:00:06.614Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cartopy","china","gis","map","matplotlib","python"],"created_at":"2025-10-21T19:42:14.102Z","updated_at":"2026-04-01T23:02:26.458Z","avatar_url":"https://github.com/cnmetlab.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\" style=\"margin:1em;\"\u003e\n  \u003ca href=\"static/images/logo.png\"\u003e\n    \u003cimg src=\"static/images/logo.png\"\n         alt=\"cnmaps\"\u003e\u003c/a\u003e\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n\n\u003ca href=\"https://github.com/cnmetlab/cnmaps/actions/workflows/python-package.yml\"\u003e\n\u003cimg src=\"https://github.com/cnmetlab/cnmaps/actions/workflows/python-package.yml/badge.svg\"\n alt=\"Pytest\" /\u003e\u003c/a\u003e\n\n\u003ca href=\"https://github.com/cnmetlab/cnmaps/actions/workflows/pypi-publish.yml\"\u003e\n\u003cimg src=\"https://github.com/cnmetlab/cnmaps/actions/workflows/pypi-publish.yml/badge.svg\" \n alt=\"Pypi publish\"/\u003e \u003c/a\u003e\n\n\u003ca href=\"https://badge.fury.io/py/cnmaps\"\u003e\n\u003cimg src=\"https://badge.fury.io/py/cnmaps.svg\"\n alt=\"PyPI version\" /\u003e\u003c/a\u003e\n\n\u003ca href=\"https://pepy.tech/project/cnmaps\"\u003e\n\u003cimg src=\"https://static.pepy.tech/personalized-badge/cnmaps?period=total\u0026units=international_system\u0026left_color=grey\u0026right_color=orange\u0026left_text=Pypi%20Downloads\"\n alt=\"Pypi Downloads\" /\u003e\u003c/a\u003e\n  \n\u003ca href='https://cnmaps.readthedocs.io/zh_CN/latest/'\u003e\n    \u003cimg src='https://readthedocs.org/projects/cnmaps/badge/?version=latest' alt='Documentation Status' /\u003e\n\u003c/a\u003e\n  \n\u003ca href=\"https://www.codacy.com/gh/Clarmy/cnmaps/dashboard?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=Clarmy/cnmaps\u0026amp;utm_campaign=Badge_Grade\"\u003e\n  \u003cimg src=\"https://app.codacy.com/project/badge/Grade/ef6ab1893b0b47428b287f2f2875021c\"/\u003e\n \u003c/a\u003e\n \n\u003ca href=\"https://cnmetlab.github.io/cnmaps/performance-v2/\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/performance-benchmark-yellow\"/\u003e\n \u003c/a\u003e\n\n\u003ca href=\"https://codecov.io/gh/cnmetlab/cnmaps\" \u003e \n \u003cimg src=\"https://codecov.io/gh/cnmetlab/cnmaps/branch/main/graph/badge.svg?token=CF80D3CSR9\"/\u003e \n \u003c/a\u003e\n\n\u003ca href=\"https://github.com/Clarmy/cnmaps/issues\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat\"\n alt=\"contributions welcome\" /\u003e\u003c/a\u003e\n\n\u003ca href=\"https://github.com/psf/black\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/code%20style-black-000000.svg\"\n alt=\"style\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch4 align=\"center\"\u003e\n    cnmaps 是一个以中国领土主张为标准开发的地图类 Python 扩展包\n\u003c/h4\u003e\n\n## 安装\n安装 cnmaps 需要满足 Python 的解释器在 3.9 版本及以上。\n\n### 使用 pip 安装\n\ncnmaps 最简单也最快的安装方法是使用 pip：\n\n```bash\npip install -U cnmaps\n```\n\n从 `2.0.0` 开始，官方边界与样例数据已经拆分到独立包 [cnmaps-data](https://pypi.org/project/cnmaps-data/)；安装 `cnmaps` 时会默认一并安装该数据包，无需再手动准备内置数据目录。\n\n### 使用 conda 安装\n\n你也可以使用 conda-forge：\n\n```bash\nconda install -c conda-forge cnmaps\n```\n\n补充说明：conda-forge 当前只维护到 `1.1.7` 版本；`2.x` 及后续版本仅发布到 PyPI，conda 发行将停止后续维护。\n\n### 从源码安装（参与开发）\n\n若需修改源码或运行测试，可在克隆 [主仓库](https://github.com/cnmetlab/cnmaps) 后使用 [Poetry](https://python-poetry.org/) 安装依赖：\n\n```bash\npoetry install\n```\n\n## 快速开始\n\n### 绘制国界\n\n用最简单直接的方式，来绘制你的第一张中国地图。   \n\n```python\nimport cartopy.crs as ccrs\nimport matplotlib.pyplot as plt\nfrom cnmaps import get_adm_maps, draw_maps\n\nfig = plt.figure(figsize=(10,10))\nax = fig.add_subplot(111, projection=ccrs.PlateCarree())\n\ndraw_maps(get_adm_maps(country='中国', level='国'))\nplt.show()\n```\n\n![country-level](static/images/country-level.png)\n\n### 绘制省界\n\ncnmaps还可以绘制各省（特区/直辖市）的地图\n\n```python\nimport cartopy.crs as ccrs\nimport matplotlib.pyplot as plt\nfrom cnmaps import get_adm_maps, draw_maps\n\nfig = plt.figure(figsize=(10,10))\nax = fig.add_subplot(111, projection=ccrs.PlateCarree())\n\ndraw_maps(get_adm_maps(level='省'), linewidth=0.8, color='r') \n\nplt.show()\n```\n![province-level](static/images/province-level.png)\n\n### 绘制市界\n\ncnmaps可以绘制市级的行政区地图。\n\n```python\nimport cartopy.crs as ccrs\nimport matplotlib.pyplot as plt\nfrom cnmaps import get_adm_maps, draw_maps\n\nfig = plt.figure(figsize=(15,15))\nax = fig.add_subplot(111, projection=ccrs.PlateCarree())\n\ndraw_maps(get_adm_maps(level='市'), linewidth=0.5, color='g') \n\nplt.show()\n```\n![city-level](static/images/city-level.png)\n\n### 绘制区县界\n\ncnmaps可以绘制区县级的行政区地图。\n\n```python\nimport cartopy.crs as ccrs\nimport matplotlib.pyplot as plt\nfrom cnmaps import get_adm_maps, draw_maps\n\nfig = plt.figure(figsize=(20,20))\nax = fig.add_subplot(111, projection=ccrs.PlateCarree())\n\ndraw_maps(get_adm_maps(level='区县'), linewidth=0.8, color='r') \n\nplt.show()\n```\n![district-level](static/images/district-level.png)\n\n### 绘制全球国家边界\n\n如果你想快速验证 `cnmaps` 现在的全球国家级边界能力，可以直接执行下面这段最小示例代码。\n\n```python\nimport cartopy.crs as ccrs\nimport matplotlib.pyplot as plt\nfrom cnmaps import get_adm_maps, draw_maps\n\nfig = plt.figure(figsize=(14, 7))\nax = fig.add_subplot(111, projection=ccrs.PlateCarree(central_longitude=105))\n\ndraw_maps(get_adm_maps(level='国', source='世界银行'), linewidth=0.4, color='#666666')\ndraw_maps(get_adm_maps(country='中国', level='国'), linewidth=1.0, color='crimson')\n\nplt.show()\n```\n\n![world-countries-borders-flat](static/images/world-countries-borders-flat.png)\n\n## 使用指南\n\n针对本项目更多的使用方法，我们还有一份更详细的文档：[cnmaps使用指南](https://cnmaps.readthedocs.io/zh_CN/latest/index.html)\n\n## 引用\n\n本项目适用的地图边界的数据源包括：\n\n1. GaryBikini/ChinaAdminDivisonSHP: v2.0, 2021, DOI: 10.5281/zenodo.4167299\n\n海拔高度地形数据来自ASTER数字高程模型，并对原始数据进行了稀释。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcnmetlab%2Fcnmaps","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcnmetlab%2Fcnmaps","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcnmetlab%2Fcnmaps/lists"}