2

cartopy とベースマップをインストールする前に、いくつかの依存関係を満たす必要があることを理解しています。pip(など)を使用してそれらのほとんどを整理しましたnumpy

Proj.4にはカートピーの問題があり、GEOS にはベースマップの問題があることがわかりました。Java プロジェクト Proj.4 への Python バインディングで十分だと思いましたが、C++ ライブラリ GEOS で少し迷っています (GEOS には GDAL で十分だと思います。この方法で Python の世界にリンクしました: pip install --global-option=build_ext --global-option="-I/usr/include/gdal" GDAL==`gdal-config --version)。

anaconda、canopy などのようなものはすべて避けたいと思います。可能であればpip、Ubuntu ( apt-getpip十分でない場合のみ) と Mac OSX (homebrew 、十分でbrew install <some_package>ない場合のみ) の両方でのみ使用したいと思いpipます。

cartopyは、古すぎる Proj.4 のバージョンでスタックします。pip出力は次のとおりですProj4 version 4.8.0 is installed, but cartopy requires at least version 4.9.0.。この Python バインディングのインストールで十分だと思っpipていましたが、問題は解決しません。

$ pip show pyproj
Name: pyproj
Version: 1.9.5.1
Summary: Python interface to PROJ.4 library
Home-page: https://github.com/jswhit/pyproj
Author: Jeff Whitaker
Author-email: jeffrey.s.whitaker@noaa.gov
License: OSI Approved
Location: /usr/local/lib/python2.7/dist-packages
Requires: 

Proj.4 への python バインディングが十分ではない理由がわかりません。それらのバインディングが を使用して利用可能な最新バージョンであってもですpip

ベースマップはさまざまな方法で動かなくなります:

  • どういうpip2 install basemapわけか私が得るCould not find a version that satisfies the requirement basemap (from versions: ) No matching distribution found for basemap
  • しかし、ベースマップのドキュメントから、pip何らかの理由でライブラリがリポジトリにリンクされておらず、ソース コードからインストールする必要があることがわかりました。だから私は実行しました:pip2 install https://github.com/matplotlib/basemap/archive/v1.0.7rel.tar.gzそしてGEOS、C++ コードのコンパイルがトリガーされ、しばらくすると、下部で次のように停止すると思います:

    In file included from src/_geoslib.c:255:0:
    /usr/include/geos_c.h:151:22: note: expected ‘GEOSMessageHandler’ but argument is of type ‘void (*)(char *, char *)’
     extern void GEOS_DLL initGEOS(GEOSMessageHandler notice_function,
                          ^
    x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security build/temp.linux-x86_64-2.7/src/_geoslib.o -lgeos_c -lgeos -o build/lib.linux-x86_64-2.7/_geoslib.so
    /usr/bin/ld: cannot find -lgeos
    collect2: error: ld returned 1 exit status
    /usr/bin/ld: cannot find -lgeos
    collect2: error: ld returned 1 exit status
    error: Command "x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security build/temp.linux-x86_64-2.7/src/_geoslib.o -lgeos_c -lgeos -o build/lib.linux-x86_64-2.7/_geoslib.so" failed with exit status 1
    
    ----------------------------------------
    Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-QVrKRr-build/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-EgAOPT-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-QVrKRr-build/
    

何が間違っているのかわかりません:

  • cartopy に正しい Proj.4 のものを提供する方法は? 実際には、既存のバージョンの Proj.4 で問題ない古いバージョンの cartopy を見つけることをお勧めします (これはpip installバインディングに由来すると想定しています) 。
  • セットアップした GDAL リンクから GEOS を見つけるベースマップを取得するpip方法 それで十分でない場合は、さらに何をすればよいですか?おそらくapt-get、ベースマップのインストール内で GEOS コンパイルをトリガーすることを回避する GEOS パッケージの一部でしょうか?

Java バイナリ、C++ バイナリ、および python パッケージへのバインディングの間の無人地帯で、私は少し混乱しています。

4

1 に答える 1