Geopandasを使いたいけれどインストールに失敗(関連するパッケージが正しく認識されていない？)

※この記事は問題解決ができたわけではありません。対処がわかったらその段階で追記してゆきたと思います。
追記しました。根本的な問題は解決できていないですが、別の環境をあきらめて作り、geopandasをインストールしました。

**Geopandasを使いたい**
GISデータで扱われる主要なファイル形式としてシェープファイル(.shp)がありますが、
各々のフィーチャにくっついている膨大な量の表データもPandasのように扱うことができれば、その表の値に応じたデータ処理ができればということで調べていた時に[Geopandas](https://geopandas.org/"Geopandas")でそのようなことができると知りました。

早速今の環境にも導入したい！arcpyとの併用もできるだろうか、と早速インストールをしてみたのですが、ここで早速発生してしまったエラーの対処ができず参りました。

**インストールで行った手順**
普通にconda install geopandasを実行

```python3
(arcgispro-py3) C:\Users\hoge\AppData\Local\Programs\ArcGIS\Pro\bin\Python\envs\arcgispro-py3>conda install geopandas
Fetching package metadata .............
Solving package specifications: .

Package plan for installation in environment C:\Users\hoge\AppData\Local\Programs\ArcGIS\Pro\bin\Python\envs\arcgispro-py3:

The following NEW packages will be INSTALLED:

    fiona:           1.8.13.post1-py36hd760492_0
    geopandas:       0.8.1-py_0
    libspatialindex: 1.9.3-h33f27b4_0
    pyproj:          2.6.1.post1-py36hcfa1391_1
    rtree:           0.9.4-py36h21ff451_1

Proceed ([y]/n)? y

geopandas-0.8. 100% |###############################| Time: 0:00:00   2.01 MB/s
```

geopandasと関連するパッケージがインストールされたみたいです。
conda listでパッケージを確認するとgeopandasと上記の一緒にインストールされたパッケージが加わっていました。


**使ってみるとImportError発生**

試しにjupyter notebookを起動して使ってみます。

パッケージがちゃんとインストールされていて使えるかどうかの確認のためjupyter notebookでimportだけ行いました。arcpyは比較用です。

```python3
import arcpy
import geopandas
```

結果、エラーが返ってきます。

```python3
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-1-be0c2fb87ace> in <module>
      1 import arcpy
----> 2 import geopandas

~\AppData\Local\Programs\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\geopandas\__init__.py in <module>
      5 from geopandas.array import points_from_xy  # noqa
      6 
----> 7 from geopandas.io.file import _read_file as read_file  # noqa
      8 from geopandas.io.arrow import _read_parquet as read_parquet  # noqa
      9 from geopandas.io.arrow import _read_feather as read_feather  # noqa

~\AppData\Local\Programs\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\geopandas\io\file.py in <module>
      5 import pandas as pd
      6 
----> 7 import fiona
      8 import pyproj
      9 from shapely.geometry import mapping

~\AppData\Local\Programs\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\fiona\__init__.py in <module>
     82     os.environ["PATH"] = os.environ["PATH"] + ";" + libdir
     83 
---> 84 from fiona.collection import BytesCollection, Collection
     85 from fiona.drvsupport import supported_drivers
     86 from fiona.env import ensure_env_with_credentials, Env

~\AppData\Local\Programs\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\fiona\collection.py in <module>
      7 
      8 from fiona import compat, vfs
----> 9 from fiona.ogrext import Iterator, ItemsIterator, KeysIterator
     10 from fiona.ogrext import Session, WritingSession
     11 from fiona.ogrext import buffer_to_virtual_file, remove_virtual_file, GEOMETRY_TYPES

ImportError: DLL load failed: 指定されたプロシージャが見つかりません。

```


**エラーメッセージの確認**
arcpyは普通にインポートできているようですが、geopandasのインポートが失敗しています。エラーが発生した行を確認すると、geopandasがというよりも、これと一緒にインストール対象になっていたパッケージのfionaに何か問題があるようです。確かにディレクトリは存在するのに、正しくインストールできていないようです。

**問題の原因と思われるfionaのインポートを試す**

```python3
import fiona
```



この場合でも、同じようなエラーが発生しました。

```python3
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-2-4c762272c079> in <module>
----> 1 import fiona

~\AppData\Local\Programs\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\fiona\__init__.py in <module>
     82     os.environ["PATH"] = os.environ["PATH"] + ";" + libdir
     83 
---> 84 from fiona.collection import BytesCollection, Collection
     85 from fiona.drvsupport import supported_drivers
     86 from fiona.env import ensure_env_with_credentials, Env

~\AppData\Local\Programs\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\fiona\collection.py in <module>
      7 
      8 from fiona import compat, vfs
----> 9 from fiona.ogrext import Iterator, ItemsIterator, KeysIterator
     10 from fiona.ogrext import Session, WritingSession
     11 from fiona.ogrext import buffer_to_virtual_file, remove_virtual_file, GEOMETRY_TYPES

ImportError: DLL load failed: 指定されたプロシージャが見つかりません。
```
fionaがインストールできないという問題に対処しないとgeopandasは使えないみたいです。
引き続き対策方法を探します。

**追記**
ひとまずはarcpyと併用でなくてもいいので、geopandasをインストールして動かすことがまずはできればと思い、別の環境をgeoという名前で作成して新しく構築してみることにしました。

```python
(arcgispro-py3) C:\Users\hoge\AppData\Local\Programs\ArcGIS\Pro\bin\Python\envs\arcgispro-py3>conda create -n geo python=3.7
```
arcGISに付属していたpythonはバージョンが古かったため、こちらではpythonのバージョンをより新しい3.7に指定してインストールしました。何もバージョンを指定せずpythonとだけ記述した場合、既存のものと同じ3.6をインストールしようとするメッセージが表示されました。

空っぽの新しい環境にgeopandasをインストールしました。

```python3
(geo) C:\Users\hoge\AppData\Local\Programs\ArcGIS\Pro\bin\Python\envs\geo>conda install geopandas
```
新しい環境でもjupyter notebookを使いたいので、[Jupyterで複数カーネルを簡単に選択するための設定]("https://qiita.com/tomochiii/items/8b937f15c79a0c3eae0e")を参考にjupyter notebook上でkernelを切り替えて違う環境を使用できるようにしました。

現在のkernelを確認すると今は古いほうの環境だけになっているので、

```python3

(geo) C:\Users\hoge\AppData\Local\Programs\ArcGIS\Pro\bin\Python\envs\geo>jupyter kernelspec list
Available kernels:
  python3    C:\Users\hoge\AppData\Local\Programs\ArcGIS\Pro\bin\Python\envs\geo\share\jupyter\kernels\python3
```
新しい環境をここに追加しました。
確認すると無事追加されたようです。

```python3
(geo) C:\Users\hoge\AppData\Local\Programs\ArcGIS\Pro\bin\Python\envs\geo>ipython kernel install --user --name=geo --display-name=geo
Installed kernelspec geo in C:\Users\hoge\AppData\Roaming\jupyter\kernels\geo

(geo) C:\Users\hoge\AppData\Local\Programs\ArcGIS\Pro\bin\Python\envs\geo>jupyter kernelspec list
Available kernels:
  geo        C:\Users\hoge\AppData\Roaming\jupyter\kernels\geo
  python3    C:\Users\hoge\AppData\Local\Programs\ArcGIS\Pro\bin\Python\envs\geo\share\jupyter\kernels\python3
```

これでjupyter notebookでkernel　→　change kernel →geoを選択したうえで

```python
import geopandas
```
を行うと、エラーが発生せず新環境のほうに正しくインストールされたことが確認できました。
こちらにはarcpyが入っていないのでいちいち切り替えをしなくては両者が使えないですが、入手すること自体はできました。
なぜ古いほうの環境にgeopandasそしてfionaをインストールできないのかは、新しい環境にインストールされたパッケージと見比べて確認してみたいと思います。