首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用join提高定制CartoDB层可视化性能

使用join提高定制CartoDB层可视化性能
EN

Stack Overflow用户
提问于 2015-09-05 18:22:01
回答 1查看 205关注 0票数 1

我对CartoDB相当陌生(顺便说一句,这是很棒的),并且使用CartoDB.js构建自定义可视化,但是我的解决方案在初始负载上相当缓慢(需要1分钟加加载),基于文档这里,我认为这是在我的SQL中使用CTE的结果(我在他们的GUI中确认了这个映射:http://cdb.io/1hL3pzF,,没有CTE);然而,我没有看到其他方法--有人有一个很好的解决方案吗?

我假设为查询分配了默认名称(例如在cartodb.com图形用户界面中,关联CartoCSS使用您开始使用的任何表.)但还没有见过参考。

以下是我的工作方法的小提琴,也是在这里:

HTML

代码语言:javascript
复制
<div id="map"></div>

CSS

代码语言:javascript
复制
#map { position: absolute; top: 5px; left: 3px; height: 400px; width: 600px; }

JS

代码语言:javascript
复制
    var map = new L.map('map');

/* this works but is quite slow...
what is result of query called from cartodb?
*/
var cartocss = '#summary_tbl{ polygon-fill: #F1EEF6; polygon-opacity: 0.8; line-color: #FFF; line-width: 0.5; line-opacity: 1;}';
cartocss = cartocss + '#summary_tbl [ methane <= 158.47731712611244] { polygon-fill: #91003F; }';
    cartocss = cartocss + '#summary_tbl [ methane <= 135] { polygon-fill: #CE1256; }';
    cartocss = cartocss + '#summary_tbl [ methane <= 120.95519348268839] { polygon-fill: #E7298A; }';
    cartocss = cartocss + '#summary_tbl [ methane <= 112.3529411764706] { polygon-fill: #DF65B0; }';
    cartocss = cartocss + '#summary_tbl [ methane <= 108.42857142857143] { polygon-fill: #C994C7; }';
    cartocss = cartocss + '#summary_tbl [ methane <= 104.09859154929578] { polygon-fill: #D4B9DA; }';
    cartocss = cartocss + '#summary_tbl [ methane <= 98.36206896551724] { polygon-fill: #F1EEF6; }';

var sql_summ = "WITH summary_tbl AS (SELECT avg(n.methane) as methane, count(n.cartodb_id) record_count, h.the_geom_webmercator ";
    sql_summ = sql_summ + "FROM nurve_sample_boston_0828 n JOIN hex_base_v500m h ON ST_Within(n.the_geom, h.the_geom) ";
    sql_summ = sql_summ + "GROUP BY h.the_geom_webmercator) SELECT methane, the_geom_webmercator FROM summary_tbl";

var cbd_layer = {
  user_name: 'crshunter', // Required
  type: 'cartodb', // Required
  sublayers: [{
    sql: sql_summ,
    cartocss: cartocss, // Required
    interactivity: "methane"
  }]
};

$(document).ready(function () {
    map.on('load', function(e){
        // grab OSM basemap for context
        L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
            attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
        }).addTo(map);
        cartodb.createLayer(map, cbd_layer).addTo(map);
    });
});

var startPosition = new L.LatLng(42.3601, -71.0589); // Boston, MA
map.setView(startPosition, 12);
EN

回答 1

Stack Overflow用户

发布于 2015-09-07 20:26:06

如果对任何人都有帮助,一个更好的方法是使用cartodb-nodejs库将这个函数移到后端--我从一开始就不这么做真是太傻了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32416327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档