Giter Club home page Giter Club logo

cnmaps's Introduction

Pytest Pypi publish Anaconda Conda downloads PyPI version Pypi Downloads Documentation Status contributions welcome style

cnmaps 是一个可以让**地图画起来更丝滑的地图类 python 扩展包

安装

安装 cnmaps 需要满足 Python 的解释器在 3.9 版本及以上。

使用pip安装

cnmaps 最简单也最快的安装方法是使用 pip 来安装 cnmaps: $ pip install -U cnmaps

使用conda安装

你也可以使用 conda 安装: $ conda install -c conda-forge cnmaps

快速开始

绘制国界

用最简单直接的方式,来绘制你的第一张**地图。

import cartopy.crs as ccrs
import matplotlib.pyplot as plt
from cnmaps import get_adm_maps, draw_maps

fig = plt.figure(figsize=(10,10))
ax = fig.add_subplot(111, projection=ccrs.PlateCarree())

draw_maps(get_adm_maps(level='国')) 
plt.show()

country-level

绘制省界

cnmaps还可以绘制各省(特区/直辖市)的地图

import cartopy.crs as ccrs
import matplotlib.pyplot as plt
from cnmaps import get_adm_maps, draw_maps

fig = plt.figure(figsize=(10,10))
ax = fig.add_subplot(111, projection=ccrs.PlateCarree())

draw_maps(get_adm_maps(level='省'), linewidth=0.8, color='r') 

plt.show()

province-level

绘制市界

cnmaps可以绘制市级的行政区地图。

import cartopy.crs as ccrs
import matplotlib.pyplot as plt
from cnmaps import get_adm_maps, draw_maps

fig = plt.figure(figsize=(15,15))
ax = fig.add_subplot(111, projection=ccrs.PlateCarree())

draw_maps(get_adm_maps(level='市'), linewidth=0.5, color='g') 

plt.show()

city-level

绘制区县界

cnmaps可以绘制区县级的行政区地图。

import cartopy.crs as ccrs
import matplotlib.pyplot as plt
from cnmaps import get_adm_maps, draw_maps

fig = plt.figure(figsize=(20,20))
ax = fig.add_subplot(111, projection=ccrs.PlateCarree())

draw_maps(get_adm_maps(level='区县'), linewidth=0.8, color='r') 

plt.show()

district-level

Logo

本项目的Logo地图是如何绘制的?请执行下面的代码。

import cartopy.crs as ccrs
import matplotlib.pyplot as plt
from cnmaps import get_adm_maps

fig = plt.figure(figsize=(5,5))
proj = ccrs.Orthographic(central_longitude=100.0, central_latitude=30)
ax = fig.add_subplot(111, projection=proj)

ax.stock_img()
china, sourth_sea = get_adm_maps(level='国', only_polygon=True)

ax.set_global()
ax.add_geometries(china, crs=ccrs.PlateCarree(), edgecolor='r', facecolor='r')
ax.add_geometries(sourth_sea, crs=ccrs.PlateCarree(), edgecolor='r')
ax.outline_patch.set_edgecolor('white')

plt.savefig('../static/images/logo-base.png', bbox_inches='tight')

logo-base

使用指南

针对本项目更多的使用方法,我们还有一份更详细的文档:cnmaps使用指南

引用

本项目适用的地图边界的数据源包括:

  1. GaryBikini/ChinaAdminDivisonSHP: v2.0, 2021, DOI: 10.5281/zenodo.4167299

海拔高度地形数据来自ASTER数字高程模型,并对原始数据进行了稀释。

cnmaps's People

Contributors

clarmy avatar zhajiman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

cnmaps's Issues

查找时一次性选择多个省/市/县

get_adm_maps 选取省/市/县时,只能传入单个,如果我们想要同时选择河南省和安徽省,要么就要写一个循环查找这两个,要么就是一次性查找省级地图,以 geopandas 引擎返回后再在 GeoDataFrame 里筛选。

我认为应该在传入查找名称时,可以传入一个列表,然后在查库的时候就把这多个省市的数据直接查了,让地图查找更优雅。

类似这样的用法:

from cnmaps import get_adm_maps

some_provinces = get_adm_maps(province=['河南省', '安徽省'], levels='省')

合并边界报错

尝试合并边界:
beijing = get_adm_maps(province='北京市', only_polygon=True, record='first')
tianjin = get_adm_maps(province='天津市', only_polygon=True, record='first')
hebei = get_adm_maps(province='河北省', only_polygon=True, record='first')

jingjinji = beijing + tianjin + hebei
报错:
TypeError Traceback (most recent call last)
Cell In[33], line 9
6 tianjin = get_adm_maps(province='天津市', only_polygon=True, record='first')
7 hebei = get_adm_maps(province='河北省', only_polygon=True, record='first')
----> 9 jingjinji = beijing + tianjin + hebei
11 fig = plt.figure(figsize=(5,5))
12 ax = fig.add_subplot(111, projection=ccrs.PlateCarree())

TypeError: unsupported operand type(s) for +: 'MultiPolygon' and 'MultiPolygon'

使用国界shp裁剪等值线数据后无法zoom in

想要达到的效果是白化**国界线以外的区域,并且仅绘制100°E以东的地区,因此首先使用clip_contours_by_map裁剪数据,再通过set_extent设置了绘图范围,代码如下:

    # draw contours
    cs = ax.contourf(data_draw.coords['lon'],data_draw.coords['lat'],data_draw, 
                    cmap='Spectral_r', 
                    levels=levels, 
                    extend='both',
                    transform=proj) 
    # clip contour by map
    clip_contours_by_map(cs, map_polygon)
    ax.set_extent([100.,135,15.,55.])

绘图结果如下:
Snipaste_2023-06-28_15-29-57
最终使用salem裁剪数据+set_extent达到了目的,但由于是对数据进行裁剪,边缘非常粗糙。我尝试了不使用clip_contour_by_map,并不会出现数据溢出绘图范围的情况,想知道是什么原因导致了这个问题呢?

使用简化地图的方式对地图绘图模块进行性能优化

在 Intel MacBook Pro 上的测试,下列脚本在1.1.0版本下的执行耗时仍然需要大约1分钟左右才能出图,这速度有点无法接受,这个慢的主要原因是矢量边界过于精细,需要处理的点太多,计算压力大。但是对于类似下面这种尺度的绘图,其实并不需要这么精细的边界数据,因此可以尝试将其精细度进行简化,达到一个不那么精细,但是出图效果从肉眼也察觉不出来的那种程度。

geopandas 提供了 simplify 的函数

import time

import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
from cnmaps import get_adm_maps, clip_contours_by_map, draw_map
from cnmaps.sample import load_dem

lons, lats, data = load_dem()

t0 = time.time()
fig = plt.figure(figsize=(10, 10))
ax = fig.add_subplot(111, projection=ccrs.PlateCarree())
map_polygon = get_adm_maps(country="中华人民共和国", record="first", only_polygon=True)

cs = ax.contourf(
    lons,
    lats,
    data,
    cmap=plt.cm.terrain,
    levels=np.linspace(-2800, data.max(), 10),
    transform=ccrs.PlateCarree(),
)

clip_contours_by_map(cs, map_polygon)
draw_map(map_polygon, color="k", linewidth=1)

plt.savefig('./china.png')

t1 = time.time()

time_delta = t1 - t0

print("time_delta", time_delta)

Failed to install

(xxx) C:\Users\Jkdell>pip install cnmaps
Collecting cnmaps
Using cached cnmaps-0.1.10.tar.gz (2.3 MB)
Preparing metadata (setup.py) ... error
error: subprocess-exited-with-error

× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [6 lines of output]
Traceback (most recent call last):
File "", line 2, in
File "", line 34, in
File "C:\Users\Jkdell\AppData\Local\Temp\pip-install-9qi40z8x\cnmaps_4a8842083b524713a538b30839062a41\setup.py", line 7, in
long_description = fh.read()
UnicodeDecodeError: 'gbk' codec can't decode byte 0xaa in position 17: illegal multibyte sequence
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

支持导出边界文件功能

  1. 增加支持导出边界文件的功能,应支持的格式包括:
  • geojson
  • shapefile
    2.应支持自定义地图对象元信息的功能

希望 draw_map 函数中不要重复新建 CRS 对象

画地图多边形的 draw_map 函数中有这样一行坐标转换的代码
x, y = ax.projection.transform_point(*coord, src_crs=ccrs.PlateCarree())
其中 ccrs.PlateCarree() 创建 CRS 对象的操作很费时,当多边形含有的坐标很多时,就会反复创建 CRS 对象,非常拖慢画图速度。
看起来包中的地图数据都基于 PlateCarree 坐标系,希望能在这个函数的开头定义 src_crs = ccrs.PlateCarree(),然后再在坐标转换的代码中重复使用创建好的对象,个人测试后发现这样能加快画图速度。

关于“clip_contours_by_map”裁剪栅格数据的问题

您好,我想问一下,假如我要使用"clip_contours_by_map"方法对0.5°空间分辨率的数据进行掩膜裁剪,裁剪后的数据范围是与边界贴合的。那么位于裁剪边界的栅格数据是被插值处理还是把边界外的部分数据删掉了呢?

对 shapely >= 2.0.* 版本的支持

目前对地图多边形对象是直接继承 shapely.geometry.MultiPolygon 对象。而在 shapely >= 2.0.* 版本以后不再支持这种继承,目前的解决方法是在构建的时候限制 shapely 的版本号必须低于2.0,但是长期这样会导致未来在其他依赖不断迭代的的过程中,如果出现不支持 shapely < 2.0 的依赖限制时,则 cnmaps 可能会难以迭代。因此需要尽快重构部分代码以适配 shapely 2.0 及以上版本的兼容。

安装cnmaps后绘图报错(包版本:1.1.7)

1、在进行合并边界(示例)操作时报错:

jingjinji = beijing + tianjin + hebei
Traceback (most recent call last):

  Cell In[24], line 1
    jingjinji = beijing + tianjin + hebei

  File D:\anaconda\Lib\site-packages\cnmaps\maps.py:43 in __add__
    return self.union(other)

  File D:\anaconda\Lib\site-packages\cnmaps\maps.py:78 in union
    union_result = super().union(other)

  File D:\anaconda\Lib\site-packages\shapely\geometry\base.py:704 in union
    return geom_factory(self.impl['union'](self, other))

  File D:\anaconda\Lib\site-packages\shapely\topology.py:69 in __call__
    product = self.fn(this._geom, other._geom, *args)

OSError: exception: access violation reading 0x00000000000001A4

2、安装cnmaps后,原本能正常出图的代码,在运行matplotlib绘图时同样报错:

fig_ax1.set_extent([leftlon,rightlon,lowerlat,upperlat],crs=ccrs.PlateCarree())
Traceback (most recent call last):

  Cell In[26], line 1
    fig_ax1.set_extent([leftlon,rightlon,lowerlat,upperlat],crs=ccrs.PlateCarree())

  File D:\anaconda\Lib\site-packages\cartopy\mpl\geoaxes.py:858 in set_extent
    projected = self.projection.project_geometry(domain_in_crs, crs)

  File D:\anaconda\Lib\site-packages\cartopy\crs.py:817 in project_geometry
    return getattr(self, method_name)(geometry, src_crs)

  File D:\anaconda\Lib\site-packages\cartopy\crs.py:823 in _project_line_string
    return cartopy.trace.project_linear(geometry, src_crs, self)

  File lib/cartopy/trace.pyx:585 in cartopy.trace.project_linear

  File D:\anaconda\Lib\site-packages\shapely\impl.py:37 in wrapper
    return func(*args, **kwargs)

  File D:\anaconda\Lib\site-packages\shapely\prepared.py:61 in covers
    return bool(self.impl['prepared_covers'](self, other))

  File D:\anaconda\Lib\site-packages\shapely\predicates.py:15 in __call__
    return self.fn(this._geom, other._geom, *args)

OSError: exception: access violation reading 0xFFFFFFFFFFFFFFFF

1

3

用conda install -c conda-forge cnmaps默认安装了0.2.1版

按照前面文档conda install -c conda-forge cnmaps来安装,结果安装了0.2.1版
然而当前最新版是1.1.1

然后指定版本安装说找不到。

$ conda install -c conda-forge cnmpas=1.1.1
Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Collecting package metadata (repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.

PackagesNotFoundError: The following packages are not available from current channels:

  - cnmpas=1.1.1

Current channels:

  - https://conda.anaconda.org/conda-forge/linux-64
  - https://conda.anaconda.org/conda-forge/noarch
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/noarch
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/linux-64
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/noarch
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/linux-64
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/noarch
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/linux-64
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/noarch

尝试搜索了,但又能找到

$ conda search cnmaps
Loading channels: done
# Name                       Version           Build  Channel
cnmaps                         0.2.1    pyhd8ed1ab_0  anaconda/cloud/conda-forge
cnmaps                         0.2.1    pyhd8ed1ab_0  conda-forge
cnmaps                         1.0.1    pyhd8ed1ab_0  anaconda/cloud/conda-forge
cnmaps                         1.0.1    pyhd8ed1ab_0  conda-forge
cnmaps                         1.0.3    pyhd8ed1ab_0  anaconda/cloud/conda-forge
cnmaps                         1.0.3    pyhd8ed1ab_0  conda-forge
cnmaps                         1.0.4    pyhd8ed1ab_0  anaconda/cloud/conda-forge
cnmaps                         1.0.4    pyhd8ed1ab_0  conda-forge
cnmaps                         1.1.0    pyhd8ed1ab_1  anaconda/cloud/conda-forge
cnmaps                         1.1.0    pyhd8ed1ab_1  conda-forge
cnmaps                         1.1.1    pyhd8ed1ab_0  anaconda/cloud/conda-forge
cnmaps                         1.1.1    pyhd8ed1ab_0  conda-forge

bug修复,修复绘制only_polygan为True时报错的问题

使用xian = get_adm_maps(city='西安市', only_polygon=True, record='first')获取地图边界后,再使用draw_maps绘制会报错UnboundLocalError: local variable 'geometries' referenced before assignment
经过排查后发现在draw_maps函数中先判断maps的属性是否为listGeoDataFrame再使用draw_map函数绘图。而获取的地图边界数据属性是MapPolygon,不在默认属性判断中,但可以直接使用draw_map函数绘制。
因此对draw_maps函数修改为如图可以正常绘图:
image

WGS84 坐标加载优化

在加载数据时,若对其进行坐标转换,则效率会很低,需要优化:

Total time: 102.962 s
File: /Users/clarmylee/github/cnmaps/cnmaps/maps.py
Function: read_mapjson at line 261

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
   261                                           @profile
   262                                           def read_mapjson(fp, wgs84=True):
   263                                               """
   264                                               读取geojson地图边界文件
   265                                           
   266                                               参数:
   267                                                   fp (str, 可选): geojson文件名.
   268                                                   wgs84 (bool, 可选): 是否使用 WGS84 坐标
   269                                           
   270                                               返回值:
   271                                                   MapPolygon: 地图边界对象
   272                                               """
   273      3332     136463.0     41.0      0.1      with open(fp, encoding="utf-8") as f:
   274      3332    2940811.0    882.6      2.9          map_json = json.load(f)
   275                                           
   276      3332       1730.0      0.5      0.0      if "geometry" in map_json:
   277         1          0.0      0.0      0.0          geometry = map_json["geometry"]
   278                                               else:
   279      3331       1022.0      0.3      0.0          geometry = map_json
   280                                           
   281      3332       1160.0      0.3      0.0      polygon_list = []
   282      3332       1882.0      0.6      0.0      if "Polygon" in geometry["type"]:
   283     14938       4784.0      0.3      0.0          for _coords in geometry["coordinates"]:
   284     23782       8746.0      0.4      0.0              for coords in _coords:
   285     12175       3152.0      0.3      0.0                  if wgs84:
   286     12175      28350.0      2.3      0.0                      single_coords = []
   287   7198792    1877076.0      0.3      1.8                      for coord in coords:
   288   7186617   97058212.0     13.5     94.3                          single_coords.append(gcj02_to_wgs84(*coord))
   289     12175     425158.0     34.9      0.4                      polygon_list.append(sgeom.Polygon(single_coords))
   290                                                           else:
   291                                                               polygon_list.append(sgeom.Polygon(coords))
   292                                           
   293      3331     473342.0    142.1      0.5          return MapPolygon(polygon_list)
   294                                           
   295         1          0.0      0.0      0.0      elif geometry["type"] == "MultiLineString":
   296         1        109.0    109.0      0.0          return sgeom.MultiLineString(geometry["coordinates"])

裁剪后区域超出原设置区域

image

采用以下方式设置了边界,并添加了南海小地图,但裁剪后会忽视边界设置,超出范围

    lon_min,lon_max = 80,130
    lat_min,lat_max = 15,55  
    ax.set_extent([lon_min, lon_max, lat_min, lat_max], data_proj)

对 draw_map 函数的改进,以及 1.03 版本下 cartopy <= 0.19 时的报错

改动主要有三个:

  1. 1.03 版本里用到了pyproj 的 Transformer 类对每个点进行坐标变换,加快了运行速度。其实 shapely 的文档介绍过,利用 shapely.ops.transform 函数,将 Transformer.transform 方法作为可调用对象传入,可以将整个几何对象从源坐标系变换到新坐标系中。变换失败的数值会以 inf 填充,而不会产生报错。
  2. 加入了 ax.projection 是否等价于地图数据坐标系的判断。这样一来,如果 GeoAxes 基于无参数的等经纬度投影,就能直接跳过坐标变换的步骤。
  3. 考虑到 map_polygon 参数只可能是 MapPolygon(继承自 sgeom.MultiPoygon)或 sgeom.MultiLineString 对象,简化了绘图步骤。
import numpy as np
import shapely.ops as sops

def draw_map(map_polygon: Union[MapPolygon, sgeom.MultiLineString], **kwargs):
    ax = plt.gca()
    crs_from = ccrs.PlateCarree()
    crs_to = ax.projection
    if crs_from != crs_to:
        transformer = Transformer.from_crs(crs_from, crs_to, always_xy=True)
        map_polygon = sops.transform(transformer.transform, map_polygon)

    if 'color' not in kwargs and 'c' not in kwargs:
        kwargs['color'] = 'k'

    if isinstance(map_polygon, sgeom.MultiPolygon):
        for polygon in map_polygon.geoms:
            for ring in [polygon.exterior] + polygon.interiors[:]:
                coords = np.array(ring.coords)
                ax.plot(coords[:, 0], coords[:, 1], **kwargs)
    elif isinstance(map_polygon, sgeom.MultiLineString):
        for line in map_polygon.geoms:
            coords = np.array(line.coords)
            ax.plot(coords[:, 0], coords[:, 1], **kwargs)

测试代码如下,画出兰伯特投影的**省界

from cnmaps import get_adm_maps, draw_maps
provinces = get_adm_maps(level='省')
crs = ccrs.LambertConformal(central_longitude=105, standard_parallels=(25, 47))
fig = plt.figure()
ax = fig.add_subplot(111, projection=crs)
draw_maps(provinces, lw=0.5)
ax.set_extent([78, 128, 15, 55], crs=ccrs.PlateCarree())

fig.savefig('draw_maps.png')
plt.close(fig)

结果图片为

draw_maps

基于同样的测试代码,对 1.03 的 draw_map 函数应用 line_profiler 模块,耗时 14 s。

Total time: 14.3249 s
File: .\revised.py
Function: draw_map at line 236

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
   236                                           @profile
   237                                           def draw_map(map_polygon, **kwargs):
   238                                               """
   239                                               绘制单个地图边界线
   240                                           
   241                                               参数:
   242                                                   map_polygon (Union[MapPolygon,  sgeom.MultiLineString]): 地图边界线对象
   243                                           
   244                                               示例:
   245                                                   >>> beijing = get_adm_maps(city='北京市', level='市')[0]
   246                                                   >>> beijing
   247                                                   {'国家': '中华人民共和国', '省/直辖市': '北京市', '市': '北京市', '区/县': None, '级别': '市', '来源': '高德', '类型': '陆地', 'geometry': <cnmaps.maps.MapPolygon object at 0x7f92fe514490>}
   248                                           
   249                                                   >>> beijing_polygon = get_adm_maps(city='北京市', level='市')[0]['geometry']
   250                                                   >>> beijing_polygon
   251                                                   <cnmaps.maps.MapPolygon object at 0x7f92fe4fe410>
   252                                           
   253                                                   >>> draw_map(beijing_polygon)
   254                                           
   255                                                   >>> get_adm_maps(city='北京市', level='市')[0]['geometry'] == get_adm_maps(city='北京市', level='市', only_polygon=True, record='first')
   256                                                   True
   257                                                   >>> draw_map(get_adm_maps(city='北京市', level='市', only_polygon=True, record='first'))
   258                                               """
   259        34        746.3     22.0      0.0      ax = plt.gca()
   260        34      14779.4    434.7      0.1      crs = ccrs.PlateCarree()
   261        34     255073.7   7502.2      1.8      transformer = Transformer.from_crs(crs, ax.projection, always_xy=True)
   262      2036      51407.3     25.2      0.4      for geometry in map_polygon.geoms:
   263      2002       1967.1      1.0      0.0          if isinstance(map_polygon, sgeom.MultiPolygon):
   264      2002        877.3      0.4      0.0              try:
   265      2002      81090.5     40.5      0.6                  coords = geometry.boundary.coords
   266                                                       except NotImplementedError:
   267                                                           exterior_coords = geometry.exterior.coords
   268                                                           interiors = geometry.interiors
   269                                                           xs = []
   270                                                           ys = []
   271                                                           for coord in exterior_coords:
   272                                                               try:
   273                                                                   x, y = transformer.transform(*coord)
   274                                                               except AttributeError:
   275                                                                   x, y = coord
   276                                                               xs.append(x)
   277                                                               ys.append(y)
   278                                           
   279                                                           ax.plot(xs, ys, **kwargs)
   280                                                           for interior in interiors:
   281                                                               interior_coords = interior.coords
   282                                                               xs = []
   283                                                               ys = []
   284                                                               for coord in interior_coords:
   285                                                                   try:
   286                                                                       x, y = transformer.transform(*coord)
   287                                                                   except AttributeError:
   288                                                                       x, y = coord
   289                                                                   xs.append(x)
   290                                                                   ys.append(y)
   291                                                               ax.plot(xs, ys, **kwargs)
   292                                                           continue
   293                                                   elif isinstance(map_polygon, sgeom.MultiLineString):
   294                                                       coords = geometry.coords
   295      2002       4784.1      2.4      0.0          xs = []
   296      2002       4023.5      2.0      0.0          ys = []
   297    788498     416001.5      0.5      2.9          for coord in coords:
   298    786496     311393.0      0.4      2.2              try:
   299    786496   11158540.7     14.2     77.9                  x, y = transformer.transform(*coord)
   300                                                       except AttributeError:
   301                                                           x, y = coord
   302    786496     395319.6      0.5      2.8              xs.append(x)
   303    786496     406209.2      0.5      2.8              ys.append(y)
   304      2002       1573.8      0.8      0.0          if kwargs.get("color"):
   305      2002    1221139.4    610.0      8.5              ax.plot(xs, ys, **kwargs)
   306                                                   else:
   307                                                       ax.plot(xs, ys, color="k", **kwargs)

而改动后的 draw_map 耗时 2.8 s。

Timer unit: 1e-06 s

Total time: 2.84613 s
File: .\revised.py
Function: draw_map at line 236

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
   236                                           @profile
   237                                           def draw_map(map_polygon, **kwargs):
   238        34        571.5     16.8      0.0      ax = plt.gca()
   239        34      14208.4    417.9      0.5      crs_from = ccrs.PlateCarree()
   240        34         39.5      1.2      0.0      crs_to = ax.projection
   241        34      42037.9   1236.4      1.5      if crs_from != crs_to:
   242        34     233624.2   6871.3      8.2          transformer = Transformer.from_crs(crs_from, crs_to, always_xy=True)
   243        34    1272800.0  37435.3     44.7          map_polygon = sops.transform(transformer.transform, map_polygon)
   244                                           
   245        34         68.9      2.0      0.0      if 'color' not in kwargs and 'c' not in kwargs:
   246        34         26.3      0.8      0.0          kwargs['color'] = 'k'
   247                                           
   248        34         49.3      1.5      0.0      if isinstance(map_polygon, sgeom.MultiPolygon):
   249      2036      36299.7     17.8      1.3          for polygon in map_polygon.geoms:
   250      4004      87826.7     21.9      3.1              for ring in [polygon.exterior] + polygon.interiors[:]:
   251      2002     104124.4     52.0      3.7                  coords = np.array(ring.coords)
   252      2002    1054452.6    526.7     37.0                  ax.plot(coords[:, 0], coords[:, 1], **kwargs)
   253                                               elif isinstance(map_polygon, sgeom.MultiLineString):
   254                                                   for line in map_polygon.geoms:
   255                                                       coords = np.array(line.coords)
   256                                                       ax.plot(coords[:, 0], coords[:, 1], **kwargs)

个人感觉 shapely 的 transform 函数有助于加快运行速度,同时将坐标变换的部分移出循环,从而简化代码。

另外测试发现,当 cartopy <= 0.19 时,cartopy 的 CRS 类并非简单继承自 pyproj 的 CRS 类,而是与 _crs.pxd_crs.pyx_proj4.pxd 等文件有关。具体我也不懂,反正 0.19 的 cartopy 在执行 Transformer.from_crs(crs_from, crs_to, always_xy=True) 时会产生如下错误

CRSError                                  Traceback (most recent call last)
<ipython-input-5-e063796a802e> in <module>
----> 1 t = Transformer.from_crs(crs_from, crs_to, always_xy=True)

/data/anaconda3/envs/pp/lib/python3.7/site-packages/pyproj/transformer.py in from_crs(crs_from, crs_to, skip_equivalent, always_xy)
    151         transformer = Transformer(
    152             _Transformer.from_crs(
--> 153                 CRS.from_user_input(crs_from),
    154                 CRS.from_user_input(crs_to),
    155                 skip_equivalent=skip_equivalent,

/data/anaconda3/envs/pp/lib/python3.7/site-packages/pyproj/crs.py in from_user_input(cls, value)
    427         if isinstance(value, _CRS):
    428             return value
--> 429         return cls(value)
    430 
    431     def get_geod(self):

/data/anaconda3/envs/pp/lib/python3.7/site-packages/pyproj/crs.py in __init__(self, projparams, **kwargs)
    294             projstring = projparams.to_wkt()
    295         else:
--> 296             raise CRSError("Invalid CRS input: {!r}".format(projparams))
    297 
    298         super(CRS, self).__init__(projstring)

CRSError: Invalid CRS input: <cartopy.crs.PlateCarree object at 0x7fa8fc554b30>

对于老版本的 cartopy,也许可以继续沿用 ax.projection.transform_point

考虑使用 topojson 格式来降低数据大小

经过比对,同为山西省的矢量数据,用 geojson 存储的文件大小是 360kb ,而用 topojson 存储的文件大小仅为 85kb,在QGIS中检查二者在精确程度上没有任何区别。

但 topojson 是一个小众的格式,对应的 python sdk 功能并不完善,如果使用 topojson 来存储的话,对于格式的各种转换会产生额外的开销,但同时 topojson 有另一个好处是它可以很方便对矢量数据进行精细度调整并不破坏其拓扑关系。

参考资料:

some city geo can't plus together, raise ValueError

get_adm_maps(city='长春市', level='市', only_polygon=True, record='first') + get_adm_maps(city='吉林市', level='市', only_polygon=True, record='first')
Traceback (most recent call last):
File "", line 1, in
File "/Users/jcma/.conda/envs/citynetwork/lib/python3.9/site-packages/cnmaps/maps.py", line 43, in add
return self.union(other)
File "/Users/jcma/.conda/envs/citynetwork/lib/python3.9/site-packages/cnmaps/maps.py", line 78, in union
return self.drop_inner_duplicate(MapPolygon(union_result))
File "/Users/jcma/.conda/envs/citynetwork/lib/python3.9/site-packages/cnmaps/maps.py", line 69, in drop_inner_duplicate
polygons.remove(other)
ValueError: list.remove(x): x not in list

安装过程中可能会遇到的报错

案例1

Collecting fiona>=1.8 (from geopandas->cnmaps)
Using cached https://files.pythonhosted.org/packages/67/5c/4e028e84a1f0cb3f8a994217cf2366360ca984dfc1433f6171de527d0dca/Fiona-1.8.21.tar.gz
ERROR: Complete output from command python setup.py egg_info:
ERROR: A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.

案例2

pip install cnmaps
(cnmaps) C:\WINDOWS\system32>pip install cnmaps
Collecting cnmaps
Using cached cnmaps-1.0.1-py3-none-any.whl
Collecting geopandas
Using cached geopandas-0.9.0-py2.py3-none-any.whl (994 kB)
Requirement already satisfied: Shapely in c:\programdata\anaconda3\envs\cnmaps\lib\site-packages (from cnmaps) (1.7.1)
Requirement already satisfied: matplotlib in c:\programdata\anaconda3\envs\cnmaps\lib\site-packages (from cnmaps) (3.3.4)
Requirement already satisfied: numpy in c:\programdata\anaconda3\envs\cnmaps\lib\site-packages (from cnmaps) (1.19.5)
Collecting netCDF4
Using cached netCDF4-1.5.8.tar.gz (767 kB)
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\netcdf4_3fcc1ebed01a4b81bc036b9d6e94fb5a\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\netcdf4_3fcc1ebed01a4b81bc036b9d6e94fb5a\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-pip-egg-info-v17gg4z0’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\netcdf4_3fcc1ebed01a4b81bc036b9d6e94fb5a\
Complete output (26 lines):
Traceback (most recent call last):
File “”, line 1, in
File “C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\netcdf4_3fcc1ebed01a4b81bc036b9d6e94fb5a\setup.py”, line 419, in
_populate_hdf5_info(dirstosearch, inc_dirs, libs, lib_dirs)
File “C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\netcdf4_3fcc1ebed01a4b81bc036b9d6e94fb5a\setup.py”, line 360, in _populate_hdf5_info
raise ValueError(‘did not find HDF5 headers’)
ValueError: did not find HDF5 headers
reading from setup.cfg…

HDF5_DIR environment variable not set, checking some standard locations ..
checking C:\ProgramData\Anaconda3\envs\cnmaps\include …
hdf5 headers not found in C:\ProgramData\Anaconda3\envs\cnmaps\include
checking C:\ProgramData\Anaconda3\envs\cnmaps\Library\include …
hdf5 headers not found in C:\ProgramData\Anaconda3\envs\cnmaps\Library\include
checking C:\Users\hejiashan\include …
hdf5 headers not found in C:\Users\hejiashan\include
checking /usr/local\include …
hdf5 headers not found in /usr/local\include
checking /sw\include …
hdf5 headers not found in /sw\include
checking /opt\include …
hdf5 headers not found in /opt\include
checking /opt/local\include …
hdf5 headers not found in /opt/local\include
checking /usr\include …
hdf5 headers not found in /usr\include
—————————————-
WARNING: Discarding https://files.pythonhosted.org/packages/e4/09/c7582134adb67b2ef136b954344d0522e9e3e1c7a292004eec0e8f8b1f0d/netCDF4-1.5.8.tar.gz#sha256=ca3d468f4812c0999df86e3f428851fb0c17ac34ce0827115c246b0b690e4e84 (from https://pypi.org/simple/netcdf4/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Using cached netCDF4-1.5.7.tar.gz (763 kB)
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\netcdf4_d6f5ec8fd80b47ac9d84a257752f809b\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\netcdf4_d6f5ec8fd80b47ac9d84a257752f809b\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-pip-egg-info-emphis6d’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\netcdf4_d6f5ec8fd80b47ac9d84a257752f809b\
Complete output (26 lines):
Traceback (most recent call last):
File “”, line 1, in
File “C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\netcdf4_d6f5ec8fd80b47ac9d84a257752f809b\setup.py”, line 419, in
_populate_hdf5_info(dirstosearch, inc_dirs, libs, lib_dirs)
File “C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\netcdf4_d6f5ec8fd80b47ac9d84a257752f809b\setup.py”, line 360, in _populate_hdf5_info
raise ValueError(‘did not find HDF5 headers’)
ValueError: did not find HDF5 headers
reading from setup.cfg…

HDF5_DIR environment variable not set, checking some standard locations ..
checking C:\ProgramData\Anaconda3\envs\cnmaps\include …
hdf5 headers not found in C:\ProgramData\Anaconda3\envs\cnmaps\include
checking C:\ProgramData\Anaconda3\envs\cnmaps\Library\include …
hdf5 headers not found in C:\ProgramData\Anaconda3\envs\cnmaps\Library\include
checking C:\Users\hejiashan\include …
hdf5 headers not found in C:\Users\hejiashan\include
checking /usr/local\include …
hdf5 headers not found in /usr/local\include
checking /sw\include …
hdf5 headers not found in /sw\include
checking /opt\include …
hdf5 headers not found in /opt\include
checking /opt/local\include …
hdf5 headers not found in /opt/local\include
checking /usr\include …
hdf5 headers not found in /usr\include
—————————————-
WARNING: Discarding https://files.pythonhosted.org/packages/df/e7/0eb5a6788502f0a1843f6b45a273c786a52d80c88003ce3d135a8c6da1bf/netCDF4-1.5.7.tar.gz#sha256=d145f9c12da29da3922d8b8aafea2a2a89501bcb28a219a46b7b828b57191594 (from https://pypi.org/simple/netcdf4/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Using cached netCDF4-1.5.6-cp36-cp36m-win_amd64.whl (3.1 MB)
Collecting pyproj>=2.2.0
Using cached pyproj-3.0.1-cp36-cp36m-win_amd64.whl (14.6 MB)
Collecting pandas>=0.24.0
Using cached pandas-1.1.5-cp36-cp36m-win_amd64.whl (8.7 MB)
Collecting fiona>=1.8
Using cached Fiona-1.8.21.tar.gz (1.0 MB)
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_0fa83e1a03f64559a463afcb96b40e37\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_0fa83e1a03f64559a463afcb96b40e37\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-pip-egg-info-h1518k5t’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\fiona_0fa83e1a03f64559a463afcb96b40e37\
Complete output (1 lines):
A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
—————————————-
WARNING: Discarding https://files.pythonhosted.org/packages/67/5c/4e028e84a1f0cb3f8a994217cf2366360ca984dfc1433f6171de527d0dca/Fiona-1.8.21.tar.gz#sha256=3a0edca2a7a070db405d71187214a43d2333a57b4097544a3fcc282066a58bfc (from https://pypi.org/simple/fiona/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Using cached Fiona-1.8.20.tar.gz (1.3 MB)
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_504f5a3a46f143fd9f2c37299e596f8e\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_504f5a3a46f143fd9f2c37299e596f8e\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-pip-egg-info-7hc6ajkq’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\fiona_504f5a3a46f143fd9f2c37299e596f8e\
Complete output (1 lines):
A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
—————————————-
WARNING: Discarding https://files.pythonhosted.org/packages/ec/f7/093890341a7e8fbfcdfa04caf4dfb588ebab32c13ceaa6a3819da79ea106/Fiona-1.8.20.tar.gz#sha256=a70502d2857b82f749c09cb0dea3726787747933a2a1599b5ab787d74e3c143b (from https://pypi.org/simple/fiona/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Using cached Fiona-1.8.19.tar.gz (1.3 MB)
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_8f7e35806db24ccfa6caf10071a2fc70\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_8f7e35806db24ccfa6caf10071a2fc70\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-pip-egg-info-ek7kvlfm’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\fiona_8f7e35806db24ccfa6caf10071a2fc70\
Complete output (1 lines):
A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
—————————————-
WARNING: Discarding https://files.pythonhosted.org/packages/a0/d9/6042aeb073d11341f7726de0586ff71c13117c34959dcf07bd4ee6d4b93e/Fiona-1.8.19.tar.gz#sha256=b9059e0b29c2e9e6b817e53f941e77e1aca7075f986005d38db307067b60458f (from https://pypi.org/simple/fiona/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Using cached Fiona-1.8.18.tar.gz (1.3 MB)
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_5612955b90e348cab2c58563594cd046\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_5612955b90e348cab2c58563594cd046\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-pip-egg-info-31d3f_i9’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\fiona_5612955b90e348cab2c58563594cd046\
Complete output (1 lines):
A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
—————————————-
WARNING: Discarding https://files.pythonhosted.org/packages/9f/e8/401cdaa58d862a25c4b3365acf7d2bd7ac77191e3dc9acdcdac0eff20ff0/Fiona-1.8.18.tar.gz#sha256=b732ece0ff8886a29c439723a3e1fc382718804bb057519d537a81308854967a (from https://pypi.org/simple/fiona/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Using cached Fiona-1.8.17.tar.gz (1.3 MB)
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_e33deb5543b743fb84e06b36f26545ec\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_e33deb5543b743fb84e06b36f26545ec\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-pip-egg-info-wx7w2b9b’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\fiona_e33deb5543b743fb84e06b36f26545ec\
Complete output (1 lines):
A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
—————————————-
WARNING: Discarding https://files.pythonhosted.org/packages/88/62/69347ba2c41b526e1953c4cb66d51170b2869808863c03af202ba0121670/Fiona-1.8.17.tar.gz#sha256=716201c21246587f374785bec6d6a20a984fe1f6c2b0e83bf15127eb8f724d0c (from https://pypi.org/simple/fiona/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Using cached Fiona-1.8.16.tar.gz (1.3 MB)
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_1a0e885bdb654fd3a15574da108c84d5\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_1a0e885bdb654fd3a15574da108c84d5\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-pip-egg-info-cvdeyr77’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\fiona_1a0e885bdb654fd3a15574da108c84d5\
Complete output (1 lines):
A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
—————————————-
WARNING: Discarding https://files.pythonhosted.org/packages/1e/60/dfc6115a11338d8aa96cacd8c60635223d9c97d61d556c90acc5dfd663fa/Fiona-1.8.16.tar.gz#sha256=fd6dfb65959becc916e9f6928618bfd59c16cdbc413ece0fbac61489cd11255f (from https://pypi.org/simple/fiona/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Using cached Fiona-1.8.15.tar.gz (1.3 MB)
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_b83f9f335f9a4802809441b416791bd1\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_b83f9f335f9a4802809441b416791bd1\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-pip-egg-info-yygy0_5b’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\fiona_b83f9f335f9a4802809441b416791bd1\
Complete output (1 lines):
A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
—————————————-
WARNING: Discarding https://files.pythonhosted.org/packages/55/2f/17450ec2c8fcc720a8a3e4d9a383499508475c7cfb90f7eca9fb585ac598/Fiona-1.8.15.tar.gz#sha256=3b1c9b5c834fae2fe947cfaea176db890bc6750d1a6ba9f54d969c19ffcd191e (from https://pypi.org/simple/fiona/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Using cached Fiona-1.8.14.tar.gz (1.3 MB)
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_72cb7b66eb9e432c9dcf8aacbb44a1ae\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_72cb7b66eb9e432c9dcf8aacbb44a1ae\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-pip-egg-info-iyfaxz3c’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\fiona_72cb7b66eb9e432c9dcf8aacbb44a1ae\
Complete output (1 lines):
A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
—————————————-
WARNING: Discarding https://files.pythonhosted.org/packages/5c/fd/5ec54f2d9b3d5dd23dd443fad5630d6b872e2664814c68b856c47e0d65af/Fiona-1.8.14.tar.gz#sha256=6eac038206c89d2cf5f99ea38b81cc228dc21eac5f47870a9a32d453b0007f4d (from https://pypi.org/simple/fiona/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Using cached Fiona-1.8.13.post1.tar.gz (1.2 MB)
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_151ccaeccb034ec695266ff7fb3b20d3\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_151ccaeccb034ec695266ff7fb3b20d3\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-pip-egg-info-b5roz6wn’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\fiona_151ccaeccb034ec695266ff7fb3b20d3\
Complete output (1 lines):
A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
—————————————-
WARNING: Discarding https://files.pythonhosted.org/packages/6d/42/f4a7cac53b28fa70e9a93d0e89a24d33e14826dad6644b699362ad84dde0/Fiona-1.8.13.post1.tar.gz#sha256=1a432bf9fd56f089256c010da009c90d4a795c531a848132c965052185336600 (from https://pypi.org/simple/fiona/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Using cached Fiona-1.8.13.tar.gz (1.2 MB)
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_d0e79b767d8349d48b1489040cb5845e\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_d0e79b767d8349d48b1489040cb5845e\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-pip-egg-info-4w92x5y7’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\fiona_d0e79b767d8349d48b1489040cb5845e\
Complete output (1 lines):
A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
—————————————-
WARNING: Discarding https://files.pythonhosted.org/packages/be/04/31d0a6f03943b1684f32c9b861be40c1fd282468fa6bd54ddf4a774e6b0f/Fiona-1.8.13.tar.gz#sha256=5ec34898c8b983a723fb4e949dd3e0ed7e691c303e51f6bfd61e52ac9ac813ae (from https://pypi.org/simple/fiona/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Using cached Fiona-1.8.12.tar.gz (1.2 MB)
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_ef757ebaa789470a9ad91c2e49edf2d8\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_ef757ebaa789470a9ad91c2e49edf2d8\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-pip-egg-info-3gvvip7i’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\fiona_ef757ebaa789470a9ad91c2e49edf2d8\
Complete output (1 lines):
A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
—————————————-
WARNING: Discarding https://files.pythonhosted.org/packages/97/d8/feab39987296437fbdc3029fb39752a14355d217d73b93471010b8dd63a3/Fiona-1.8.12.tar.gz#sha256=c9266ddf6ae2a64fcea20014ddf27f800ac07584f2fdb09c2a02f3b3a52e371c (from https://pypi.org/simple/fiona/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Using cached Fiona-1.8.11.tar.gz (1.2 MB)
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_62bfdaa321874a378f218772c2344110\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_62bfdaa321874a378f218772c2344110\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-pip-egg-info-6j3i2ff4’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\fiona_62bfdaa321874a378f218772c2344110\
Complete output (1 lines):
A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
—————————————-
WARNING: Discarding https://files.pythonhosted.org/packages/9d/f4/0a0ddc6174c4a93679b5f1dd3535e7ef8989828e6d5f86112de681f8c87b/Fiona-1.8.11.tar.gz#sha256=1e7ca9e051f5bffa1c43c70d573da9ca223fc076b84fa73380614fc02b9eb7f6 (from https://pypi.org/simple/fiona/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Using cached Fiona-1.8.10.tar.gz (1.2 MB)
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_1aa0cd97a80e49108d165d12f6737c04\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_1aa0cd97a80e49108d165d12f6737c04\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-pip-egg-info-cl1bfyrw’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\fiona_1aa0cd97a80e49108d165d12f6737c04\
Complete output (1 lines):
A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
—————————————-
WARNING: Discarding https://files.pythonhosted.org/packages/13/73/f80b491ed8559326fab202a6d6333a3cd6e8be1e9d782bc6c0d03d476457/Fiona-1.8.10.tar.gz#sha256=ff562eb2f3960e21f8c7f050ddd7f47a763869ea14afc2234a40df72666c6a2c (from https://pypi.org/simple/fiona/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Using cached Fiona-1.8.9.post2.tar.gz (1.2 MB)
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_1ebb1efdafa3448981776f573e2771b7\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_1ebb1efdafa3448981776f573e2771b7\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-pip-egg-info-t75m_prq’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\fiona_1ebb1efdafa3448981776f573e2771b7\
Complete output (1 lines):
A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
—————————————-
WARNING: Discarding https://files.pythonhosted.org/packages/9b/52/45e75507660ce0e86176d0f59b659560f687e2c7e9ebf82a10e7dcd2d3b7/Fiona-1.8.9.post2.tar.gz#sha256=210fb038b579fab38f35ddbdd31b9725f4d5099b3edfd4b87c983e5d47b79983 (from https://pypi.org/simple/fiona/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Using cached Fiona-1.8.9.post1.tar.gz (1.2 MB)
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_593856019ceb42b4a17625a80864b467\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_593856019ceb42b4a17625a80864b467\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-pip-egg-info-qspabe0g’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\fiona_593856019ceb42b4a17625a80864b467\
Complete output (1 lines):
A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
—————————————-
WARNING: Discarding https://files.pythonhosted.org/packages/0e/a4/d9dd7399be809d3990f5000fb6ae43189ea26ae88be1bed3a4c9ddc1becc/Fiona-1.8.9.post1.tar.gz#sha256=d5e0ea0b8addffe9cba4cb59e2bd495b015230e7a1b1597974f5048211930199 (from https://pypi.org/simple/fiona/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Using cached Fiona-1.8.9.tar.gz (1.2 MB)
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_d0447321f3a2475b8ed08b45e08f27e8\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_d0447321f3a2475b8ed08b45e08f27e8\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-pip-egg-info-0rac2dl2’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\fiona_d0447321f3a2475b8ed08b45e08f27e8\
Complete output (1 lines):
A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
—————————————-
WARNING: Discarding https://files.pythonhosted.org/packages/ad/92/dcbd8c54d697c22f299b5af63b6df3acfbd06c6d72e249614c05be99337c/Fiona-1.8.9.tar.gz#sha256=4dd6e2f5327c1174143c7c8594a75d373bc72f2c9a2a6daee312c3186a128add (from https://pypi.org/simple/fiona/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Using cached Fiona-1.8.8.tar.gz (1.7 MB)
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_e7412beeb42f469f976beb4a1df63bac\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_e7412beeb42f469f976beb4a1df63bac\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-pip-egg-info-au7oj4al’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\fiona_e7412beeb42f469f976beb4a1df63bac\
Complete output (1 lines):
A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
—————————————-
WARNING: Discarding https://files.pythonhosted.org/packages/94/7f/e288db1ad63d759d494c30caae34f865e0c6927588c490705e91b7134193/Fiona-1.8.8.tar.gz#sha256=711c3be73203b37812992089445a1e4e9d3d6b64e667389f7b15406e15a91e83 (from https://pypi.org/simple/fiona/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Using cached Fiona-1.8.7.tar.gz (1.7 MB)
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_fd56a60061294a4580bf5f94fec787ae\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_fd56a60061294a4580bf5f94fec787ae\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-pip-egg-info-12j89pyp’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\fiona_fd56a60061294a4580bf5f94fec787ae\
Complete output (1 lines):
A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
—————————————-
WARNING: Discarding https://files.pythonhosted.org/packages/78/62/daafd070aebefa639df247705b97f13f7cfad43895581b5cae41bd886709/Fiona-1.8.7.tar.gz#sha256=a55a23615bad3e142d4e4cda97bb5de83c778a80049222e9dffae93c13b5cf93 (from https://pypi.org/simple/fiona/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Using cached Fiona-1.8.6.tar.gz (1.7 MB)
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_4315017b2a574f338a9d4e50e64b61dd\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_4315017b2a574f338a9d4e50e64b61dd\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-pip-egg-info-l70b3ocr’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\fiona_4315017b2a574f338a9d4e50e64b61dd\
Complete output (1 lines):
A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
—————————————-
WARNING: Discarding https://files.pythonhosted.org/packages/41/9d/63696e7b1de42aad294d4781199a408bec593d8fdb80a2b4a788c911a33b/Fiona-1.8.6.tar.gz#sha256=fa31dfe8855b9cd0b128b47a4df558f1b8eda90d2181bff1dd9854e5556efb3e (from https://pypi.org/simple/fiona/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Using cached Fiona-1.8.5.tar.gz (1.7 MB)
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_ab8cd0fcf97e450195275e55157adb60\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_ab8cd0fcf97e450195275e55157adb60\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-pip-egg-info-vc_czdil’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\fiona_ab8cd0fcf97e450195275e55157adb60\
Complete output (1 lines):
A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
—————————————-
WARNING: Discarding https://files.pythonhosted.org/packages/7b/af/1c2c83c4a8363a4ce9fea817b1910b5e071bed012e18257faa2a0ab3cfe7/Fiona-1.8.5.tar.gz#sha256=4f5cc2d449edbbf693c83e24cdada72de7c41297383d16fcc92387eb445e9d35 (from https://pypi.org/simple/fiona/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Using cached Fiona-1.8.4.tar.gz (1.1 MB)
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_7520403ede8d4ef4bca9634187be5983\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_7520403ede8d4ef4bca9634187be5983\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-pip-egg-info-ss6bd1c7’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\fiona_7520403ede8d4ef4bca9634187be5983\
Complete output (1 lines):
A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
—————————————-
WARNING: Discarding https://files.pythonhosted.org/packages/3a/16/84960540e9fce61d767fd2f0f1d95f4c63e99ab5d8fddc308e8b51b059b8/Fiona-1.8.4.tar.gz#sha256=aec9ab2e3513c9503ec123b1a8573bee55fc6a66e2ac07088c3376bf6738a424 (from https://pypi.org/simple/fiona/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Using cached Fiona-1.8.3.tar.gz (1.1 MB)
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_d73343f691eb41bfbc1fb39509212985\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_d73343f691eb41bfbc1fb39509212985\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-pip-egg-info-2j8p6o_w’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\fiona_d73343f691eb41bfbc1fb39509212985\
Complete output (1 lines):
A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
—————————————-
WARNING: Discarding https://files.pythonhosted.org/packages/46/d1/fcdb32513a03abfde0d97fd9782ce0f8cc0540fa6c6ce783e87b94064964/Fiona-1.8.3.tar.gz#sha256=3e831100a23c3b6cd32b98baf0c9e2119d909b44a5cf4533d3625f61dcf2d2b1 (from https://pypi.org/simple/fiona/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Using cached Fiona-1.8.2.tar.gz (1.2 MB)
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_bc00a740340e429bbf02b616d69ded81\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_bc00a740340e429bbf02b616d69ded81\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-pip-egg-info-q8na534f’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\fiona_bc00a740340e429bbf02b616d69ded81\
Complete output (1 lines):
A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
—————————————-
WARNING: Discarding https://files.pythonhosted.org/packages/25/50/0466d5d83e1859c5ca38351ee932d64cc5635f9d4dad522879e58f4b0018/Fiona-1.8.2.tar.gz#sha256=4c6419b7ac29136708029f6a44b4ccd458735a4d241016c7b1bab41685c08d8f (from https://pypi.org/simple/fiona/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Using cached Fiona-1.8.1.tar.gz (1.1 MB)
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_47d0f64b08084f7da5bbd164286db9e1\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_47d0f64b08084f7da5bbd164286db9e1\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-pip-egg-info-9mkp6sss’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\fiona_47d0f64b08084f7da5bbd164286db9e1\
Complete output (1 lines):
A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
—————————————-
WARNING: Discarding https://files.pythonhosted.org/packages/3e/5f/0c6704efeea2ff3fba7f54cc6ec38070157f21bc1cffa7bdfa7c9f6b8f7a/Fiona-1.8.1.tar.gz#sha256=4c34bb4c5cd788aaf14e5484c3b7de407b1a8a7c7b2d29bbb2e8b37931e83b8d (from https://pypi.org/simple/fiona/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Using cached Fiona-1.8.0.tar.gz (1.4 MB)
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_76cbf252142d43f4a8cf6a08fe41f899\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_76cbf252142d43f4a8cf6a08fe41f899\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-pip-egg-info-ko_gbkwg’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\fiona_76cbf252142d43f4a8cf6a08fe41f899\
Complete output (1 lines):
A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
—————————————-
WARNING: Discarding https://files.pythonhosted.org/packages/2a/bd/c1efc2680f338e5941121c776d6323af6b9698ac739e22ba523cee348a7f/Fiona-1.8.0.tar.gz#sha256=20141a9ece06daa7bb4333fba640c2fe39a49f8aca5492d1da8595d41e91844a (from https://pypi.org/simple/fiona/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Collecting geopandas
Using cached geopandas-0.8.2-py2.py3-none-any.whl (962 kB)
Collecting fiona
Using cached Fiona-1.7.13.tar.gz (731 kB)
Collecting pytz>=2017.2
Using cached pytz-2022.1-py2.py3-none-any.whl (503 kB)
Requirement already satisfied: python-dateutil>=2.7.3 in c:\programdata\anaconda3\envs\cnmaps\lib\site-packages (from pandas>=0.24.0->geopandas->cnmaps) (2.8.2)
Requirement already satisfied: certifi in c:\programdata\anaconda3\envs\cnmaps\lib\site-packages (from pyproj>=2.2.0->geopandas->cnmaps) (2021.5.30)
Requirement already satisfied: six>=1.5 in c:\programdata\anaconda3\envs\cnmaps\lib\site-packages (from python-dateutil>=2.7.3->pandas>=0.24.0->geopandas->cnmaps) (1.16.0)
Collecting cligj>=0.4
Using cached cligj-0.7.2-py3-none-any.whl (7.1 kB)
Collecting click-plugins
Using cached click_plugins-1.1.1-py2.py3-none-any.whl (7.5 kB)
Collecting munch
Using cached munch-2.5.0-py2.py3-none-any.whl (10 kB)
Collecting click>=4.0
Using cached click-8.0.4-py3-none-any.whl (97 kB)
Collecting colorama
Using cached colorama-0.4.4-py2.py3-none-any.whl (16 kB)
Collecting importlib-metadata
Using cached importlib_metadata-4.8.3-py3-none-any.whl (17 kB)
Collecting zipp>=0.5
Using cached zipp-3.6.0-py3-none-any.whl (5.3 kB)
Collecting typing-extensions>=3.6.4
Using cached typing_extensions-4.1.1-py3-none-any.whl (26 kB)
Requirement already satisfied: kiwisolver>=1.0.1 in c:\programdata\anaconda3\envs\cnmaps\lib\site-packages (from matplotlib->cnmaps) (1.3.1)
Requirement already satisfied: pillow>=6.2.0 in c:\programdata\anaconda3\envs\cnmaps\lib\site-packages (from matplotlib->cnmaps) (8.3.2)
Requirement already satisfied: cycler>=0.10 in c:\programdata\anaconda3\envs\cnmaps\lib\site-packages (from matplotlib->cnmaps) (0.11.0)
Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3 in c:\programdata\anaconda3\envs\cnmaps\lib\site-packages (from matplotlib->cnmaps) (3.0.8)
Collecting cftime
Using cached cftime-1.6.0-cp36-none-win_amd64.whl (153 kB)
Building wheels for collected packages: fiona
Building wheel for fiona (setup.py) … error
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -u -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_a1dc61563ce24cb0b26a8a800600e784\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_a1dc61563ce24cb0b26a8a800600e784\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ bdist_wheel -d ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-wheel-v5fmuqwl’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\fiona_a1dc61563ce24cb0b26a8a800600e784\
Complete output (48 lines):
C:\ProgramData\Anaconda3\envs\cnmaps\lib\distutils\dist.py:261: UserWarning: Unknown distribution option: ‘metadata_version’
warnings.warn(msg)
C:\ProgramData\Anaconda3\envs\cnmaps\lib\distutils\dist.py:261: UserWarning: Unknown distribution option: ‘requires_python’
warnings.warn(msg)
C:\ProgramData\Anaconda3\envs\cnmaps\lib\distutils\dist.py:261: UserWarning: Unknown distribution option: ‘requires_external’
warnings.warn(msg)
running bdist_wheel
running build
running build_py
creating build
creating build\lib.win-amd64-3.6
creating build\lib.win-amd64-3.6\fiona
copying .\fiona\collection.py -> build\lib.win-amd64-3.6\fiona
copying .\fiona\compat.py -> build\lib.win-amd64-3.6\fiona
copying .\fiona\crs.py -> build\lib.win-amd64-3.6\fiona
copying .\fiona\drvsupport.py -> build\lib.win-amd64-3.6\fiona
copying .\fiona\errors.py -> build\lib.win-amd64-3.6\fiona
copying .\fiona\inspector.py -> build\lib.win-amd64-3.6\fiona
copying .\fiona\rfc3339.py -> build\lib.win-amd64-3.6\fiona
copying .\fiona\tool.py -> build\lib.win-amd64-3.6\fiona
copying .\fiona\transform.py -> build\lib.win-amd64-3.6\fiona
copying .\fiona\__init__.py -> build\lib.win-amd64-3.6\fiona
creating build\lib.win-amd64-3.6\fiona\fio
copying .\fiona\fio\bounds.py -> build\lib.win-amd64-3.6\fiona\fio
copying .\fiona\fio\calc.py -> build\lib.win-amd64-3.6\fiona\fio
copying .\fiona\fio\cat.py -> build\lib.win-amd64-3.6\fiona\fio
copying .\fiona\fio\collect.py -> build\lib.win-amd64-3.6\fiona\fio
copying .\fiona\fio\distrib.py -> build\lib.win-amd64-3.6\fiona\fio
copying .\fiona\fio\dump.py -> build\lib.win-amd64-3.6\fiona\fio
copying .\fiona\fio\env.py -> build\lib.win-amd64-3.6\fiona\fio
copying .\fiona\fio\filter.py -> build\lib.win-amd64-3.6\fiona\fio
copying .\fiona\fio\helpers.py -> build\lib.win-amd64-3.6\fiona\fio
copying .\fiona\fio\info.py -> build\lib.win-amd64-3.6\fiona\fio
copying .\fiona\fio\insp.py -> build\lib.win-amd64-3.6\fiona\fio
copying .\fiona\fio\load.py -> build\lib.win-amd64-3.6\fiona\fio
copying .\fiona\fio\ls.py -> build\lib.win-amd64-3.6\fiona\fio
copying .\fiona\fio\main.py -> build\lib.win-amd64-3.6\fiona\fio
copying .\fiona\fio\options.py -> build\lib.win-amd64-3.6\fiona\fio
copying .\fiona\fio\__init__.py -> build\lib.win-amd64-3.6\fiona\fio
running build_ext
building ‘fiona._transform’ extension
creating build\temp.win-amd64-3.6
creating build\temp.win-amd64-3.6\Release
creating build\temp.win-amd64-3.6\Release\fiona
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -IC:\ProgramData\Anaconda3\envs\cnmaps\include -IC:\ProgramData\Anaconda3\envs\cnmaps\include “-IC:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\include” “-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um” “-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt” “-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared” “-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um” “-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\winrt” “-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\cppwinrt” -IC:\MinGW\include /EHsc /Tpfiona/_transform.cpp /Fobuild\temp.win-amd64-3.6\Release\fiona/_transform.obj
_transform.cpp
fiona/_transform.cpp(606): fatal error C1083: 无法打开包括文件: “cpl_conv.h”: No such file or directory
error: command ‘C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Tools\\MSVC\\14.29.30133\\bin\\HostX86\\x64\\cl.exe’ failed with exit status 2
—————————————-
ERROR: Failed building wheel for fiona
Running setup.py clean for fiona
Failed to build fiona
Installing collected packages: zipp, typing-extensions, importlib-metadata, colorama, click, pytz, munch, cligj, click-plugins, pyproj, pandas, fiona, cftime, netCDF4, geopandas, cnmaps
Running setup.py install for fiona … error
ERROR: Command errored out with exit status 1:
command: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -u -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_a1dc61563ce24cb0b26a8a800600e784\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_a1dc61563ce24cb0b26a8a800600e784\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ install –record ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-record-5lnnnz9y\install-record.txt’ –single-version-externally-managed –compile –install-headers ‘C:\ProgramData\Anaconda3\envs\cnmaps\Include\fiona’
cwd: C:\Users\HEJIAS~1\AppData\Local\Temp\pip-install-j754abo7\fiona_a1dc61563ce24cb0b26a8a800600e784\
Complete output (18 lines):
C:\ProgramData\Anaconda3\envs\cnmaps\lib\distutils\dist.py:261: UserWarning: Unknown distribution option: ‘metadata_version’
warnings.warn(msg)
C:\ProgramData\Anaconda3\envs\cnmaps\lib\distutils\dist.py:261: UserWarning: Unknown distribution option: ‘requires_python’
warnings.warn(msg)
C:\ProgramData\Anaconda3\envs\cnmaps\lib\distutils\dist.py:261: UserWarning: Unknown distribution option: ‘requires_external’
warnings.warn(msg)
running install
running build
running build_py
running build_ext
building ‘fiona._transform’ extension
creating build\temp.win-amd64-3.6
creating build\temp.win-amd64-3.6\Release
creating build\temp.win-amd64-3.6\Release\fiona
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -IC:\ProgramData\Anaconda3\envs\cnmaps\include -IC:\ProgramData\Anaconda3\envs\cnmaps\include “-IC:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\include” “-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um” “-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt” “-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared” “-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um” “-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\winrt” “-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\cppwinrt” -IC:\MinGW\include /EHsc /Tpfiona/_transform.cpp /Fobuild\temp.win-amd64-3.6\Release\fiona/_transform.obj
_transform.cpp
fiona/_transform.cpp(606): fatal error C1083: 无法打开包括文件: “cpl_conv.h”: No such file or directory
error: command ‘C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Tools\\MSVC\\14.29.30133\\bin\\HostX86\\x64\\cl.exe’ failed with exit status 2
—————————————-
ERROR: Command errored out with exit status 1: ‘C:\ProgramData\Anaconda3\envs\cnmaps\python.exe’ -u -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_a1dc61563ce24cb0b26a8a800600e784\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\HEJIAS~1\\AppData\\Local\\Temp\\pip-install-j754abo7\\fiona_a1dc61563ce24cb0b26a8a800600e784\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ install –record ‘C:\Users\HEJIAS~1\AppData\Local\Temp\pip-record-5lnnnz9y\install-record.txt’ –single-version-externally-managed –compile –install-headers ‘C:\ProgramData\Anaconda3\envs\cnmaps\Include\fiona’ Check the logs for full command output.

(cnmaps) C:\WINDOWS\system32>

如何导入自己的数据并用作数据标签:如导入各省的某病发病率,并标记在图上(可选择用数值展示或颜色深浅展示)

体验了一下cnmaps,使用还是很友好方便的。之前一直用R画地图,发现python也不错。有个诉求就是(相信也是很多人的诉求):我们经常需要在地图上标记出各个省,乃至各个城市的某项数据(可以是用具体的34,35,89,112等数值,也可以用颜色),不知道作者有没有考虑

高德地图部分区县出现类似拓扑错误的问题

以下地区两两之间的正交性有问题,目前在测试中跳过了,后续需要进一步排查问题原因并解决。

problem_set = [
            sorted(('咸宁市', '仙桃市')),
            sorted(('伊犁哈萨克自治州', '塔城地区')),
            sorted(('克拉玛依市', '塔城地区')),
            sorted(('博尔塔拉蒙古自治州', '双河市')),
            sorted(('和田地区', '昆玉市')),
            sorted(('喀什地区', '图木舒克市')),
            sorted(('塔城地区', '胡杨河市')),
            sorted(('塔城地区', '阿勒泰地区')),
            sorted(('巴音郭楞蒙古自治州', '铁门关市')),
            sorted(('阿克苏地区', '阿拉尔市')),
            sorted(('阿勒泰地区', '北屯市'))
        ]

关于程序编码问题

尊敬的开发者,在windows10上(pycharm)使用cnmaps库的时候出现一下的问题:
程序:
#!/usr/bin/python

-- coding: utf-8 --

@time : 2022/3/1 15:18

@Email :

@author :

import cartopy.crs as ccrs
import matplotlib.pyplot as plt
import numpy as np
from cnmaps import get_map, draw_map, clip_contours_by_map
from cnmaps.sample import load_dem

lons, lats, dem = load_dem()
jingjinji = get_map('北京')

fig = plt.figure(figsize=(10, 10),dpi=800)
ax = fig.add_subplot(111, projection=ccrs.PlateCarree())
draw_map(jingjinji, color='k')
cs = ax.contourf(lons,
lats,
dem,
cmap=plt.cm.terrain,
levels=np.linspace(-2112, dem.max(), 10))
clip_contours_by_map(cs, jingjinji)
ax.set_extent(jingjinji.get_extent(buffer=1))

plt.savefig('./jingjinji-cliped-dem.eps', bbox_inches='tight')

#******************************************
错误提示
Traceback (most recent call last):
File "H:/pyproject/haoqixin/cliped-dem.py", line 14, in
jingjinji = get_map('北京')
File "C:\Users\YH\anaconda3\envs\cnmaps\lib\site-packages\cnmaps_init_.py", line 109, in get_map
map_json = json.load(f)
File "C:\Users\YH\anaconda3\envs\cnmaps\lib\json_init_.py", line 296, in load
return loads(fp.read(),
UnicodeDecodeError: 'gbk' codec can't decode byte 0x82 in position 389467: illegal multibyte sequence

Process finished with exit code 1

在尝试修改pycham里面的编码为uft-8之后问题依然存在

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.