LoginSignup
3
1

More than 3 years have passed since last update.

cesiumpy 0.3.3 でビューワが表示されなかったので、URLを修正した

Last updated at Posted at 2019-10-16

問題

環境はUbuntu18.04LTS、Miniconda3(Anaconda3でも同じです)、conda仮想環境にはpython3.6を指定。
CesiumJSをJupyter Notebookで使用したい。
PyPIで公開されている cesiumpy 0.3.3 を conda-buildでビルドして tar.bz2 パッケージにしてから、インストールした。
(結論として、ビルド・インストール手順は間違いなかった)
手順はざっくり以下のような感じ。

(base) ~$ conda create -n build python=3.6
(base) ~$ conda activate build
(build) ~$ conda install conda-build
(build) ~$ mkdir work
(build) ~$ cd work
(build) ~/work$ conda skeleton pypi cesiumpy
(build) ~/work$ conda build cesiumpy
(build) ~/work$ cp $CONDA_PREFIX/pkgs/cesiumpy-0.3.3-py36_0.tar.bz2 ./
(build) ~/work$ conda deactivate
(base) ~/work$ conda create -n myenv python=3.6
(base) ~/work$ conda activate myenv
(myenv) ~/work$ conda install geopy traitlets six scipy shapely
(myenv) ~/work$ conda install ./cesiumpy-0.3.3-py36_0.tar.bz2 
(myenv) ~/work$ python -c "import cesiumpy"
/home/USERNAME/miniconda/envs/myenv/lib/python3.6/site-packages/cesiumpy/extension/geocode.py:12: UserWarning: Since July 2018 Google requires each request to have an API key. Pass a valid `api_key` to GoogleV3 geocoder to hide this warning. See https://developers.google.com/maps/documentation/geocoding/usage-and-billing
  _GEOCODER = GoogleV3()

ModuleNotFoundErrorではなく、UserWarningが出ているので、インストールはうまくいっていると判断。

import cesiumpy
v = cesiumpy.Viewer()
v

何も表示されない。

去年、GitHubからcloneしたときは、そのまま使用できたのに・・・orz

原因

ブラウザの開発者ツールでコンソールを確認すると、Cesium.jsがダウンロードできないというエラーが発生している模様。
取り急ぎ、GitHubのIssuesを確認したところ、関連する内容がありました。

Example from README gives Google warning and shows nothing #77
Unable to pull resources from cesiumjs.org due to CORS #8050

対処

URLはbase.pyにハードコードされていました。
cesiumpyパッケージ内のbase.pyの_load_scripts()メソッドのURL(js変数とcss変数)を修正したら、表示されました。

修正前

    @property
    def _load_scripts(self):
        js = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>"""
        css = """<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">"""

        return [js, css]

修正後

    @property
    def _load_scripts(self):
        js = """<script src="https://cesium.com/downloads/cesiumjs/releases/1.62/Build/Cesium/Cesium.js"></script>"""
        css = """<link rel="stylesheet" href="http://cesium.com/downloads/cesiumjs/releases/1.62/Build/Cesium/Widgets/widgets.css" type="text/css">"""

        return [js, css]

2019/10/18 追記
修正対象のbase.pyファイルの場所は、findコマンドで検索してください。

$ find $CONDA_PREFIX -name base.py | grep cesiumpy
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1