LoginSignup
4
4

More than 5 years have passed since last update.

CARTO 小技集1

Last updated at Posted at 2016-10-06

遅まきながらCARTO (旧 CartoDB)使い始めました。
奈良の地蔵プロジェクトのビジュアライズにuMapを使っていたんですが、どうもポップアップなどでできることの限界が気に入らないので、代わりのビジュアライズ手段として調べ始めたのがきっかけです。

でもって納得いく表現を実現するためにいくつかGeographic Information Systems等にも質問を投げて答えを得たので、日本語でQiitaでも共有します。

1. PopupのCustomHTMLで条件分岐やループするには?

英語での質問ページはこちら
結論としては、Mustacheというテンプレートエンジンを使っているので、その文法で書いてやればよい。

こんな感じ:

データ
{
  "animals": [
    {"name": "cat"}, 
    {"name": "dog"}, 
    {"name": "pig"}
  ],
  "test" : false
}
テンプレート
{{#animals}}
  <p>{{name}}</p>
{{/animals}}
{{#test}}
  <p>Test is found</p>
{{/test}}
{{^test}}
  <p>Test is not found</p>
{{/test}}
結果
  <p>cat</p>
  <p>dog</p>
  <p>pig</p>
  <p>Test is not found</p>

残った疑問:

配列の要素がオブジェクトの時は上記でループ結果を得られるが、配列の要素がリテラルの時はどうすればアクセスできるか?

データ
{
  "animals": ["cat", "dog", "pig"]
}

から、

結果
  <p>cat</p>
  <p>dog</p>
  <p>pig</p>

を得たい時はどうすればよいか?
Stack Overflowで質問中だが、まだ答えなし。

2. POI各要素のlatitude, longitudeにアクセスしたい時はどうするか?

直接引っ張ってくる手段はないが、代替手段がある。
CARTOのPopupテンプレートで呼び出せる属性名は、登録したgeojson等の属性値を引っ張ってきているわけではなく、あくまで、SQLタブに登録されている

SELECT * FROM data_table;

といったSQLを、登録された空間DB上で実行した結果を引っ張ってきている。(data_tableは各自のデータレレイヤ名によって置き換えること)

よって、経緯度を引っ張りたいなら、経緯度をSQLの結果として取れるようにすればよい。

SELECT *, ST_X(the_geom) as lng, ST_Y(the_geom) as lat FROM data_table;

これをSQLタブに登録することで、{{lat}} {{lng}}の形で、テンプレート上で経緯度が引っ張れるようになる。

3. 元になったgeojsonを外部で更新した。全取っ替えで置き換えたいがどうすればよいか?

英語での質問ページはこちら
CARTOは新規データレイヤ作成でgeojsonを読み込ませることができるが、uMapにはある「新しいgeojsonでデータ全取っ替え」が標準のUIで用意されていない。
しかし普通にSQLが使えるので、以下の方法で全取っ替え可能である。

  1. 新しいデータセットを、別のレイヤー名(ここではtmp_tableとする)でインポート

  2. 入れ替えたいレイヤ上のSQLタブで、以下を一気に実行する。

DELETE FROM data_table; 
INSERT INTO data_table (cartodb_id, the_geom, attributes) SELECT cartodb_id, the_geom, attributes FROM tmp_table;

attributesは、実際の属性名を列挙すること。
属性名リストを省略した形での、

DELETE FROM data_table; 
INSERT INTO data_table SELECT * FROM tmp_table;

は動かないので注意。

4
4
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
4
4