【问题标题】:Is it possible to conditionally color countries in Mapbox Studio based on data?是否可以根据数据有条件地在 Mapbox Studio 中为国家着色?
【发布时间】:2015-11-22 07:46:32
【问题描述】:

我正在尝试使用包含在任何一个基本 Mapbox 地图中的实际多边形来创建一个等值线。

具体来说,我有一个 geojson 结构,在 properties 对象中有一个特定于数据的属性,我想为所有国家/地区提供不同颜色的土地填充,具体取决于特定规模的下降位置。

到目前为止,Map 类似乎同时为所有土地着色:

Map { background-color: red; }

我似乎不能这样做:

Map { [myVar > 0.4] { background-color: pink; } [myVar <= 0.4] { background-color: green; } }

我尝试使用我自己的 GeoJSON 文件中的多边形,但它们并不像 Mapbox 多边形那样干净,即使在我找到的最高分辨率下也是如此。此外,我希望能够覆盖 Mapbox 基本样式所具有的标签和其他标记,就在我的 cholorpleth 之上。

我也尝试为#admin[admin_level=2][maritime=0] 区域着色,但它们看起来不是多边形,结果如下:

提前致谢!

【问题讨论】:

  • 你能做一个你想要的结果的模型吗?
  • 您可以发布您的 GeoJSON 数据样本吗?
  • 是的@mga。我大致试图实现这一点:i.gyazo.com/b56f3c1cfc55a313b8b3d5bc14151768.png 我在这里放了一些示例 geoJSON:gist.github.com/iros/e01aa4431e4d30f42ca8 注意myVar 属性。它实际上是相同的,除了我有几个而且它们的命名更有意义;)。我的目标是生成可以与 mapbox.js/leaflet 一起使用的栅格图块。
  • GeoJSON 文件不验证:\

标签: mapbox tilemill cartocss


【解决方案1】:

假设 Tilemill 0.10.1 并使用 this GeoJSON(导入为 countrydata)和这个 CartoCSS:

#countrydata {
  line-color:#594;
  line-width:0.5;
  polygon-opacity:1;
  polygon-fill:#ae8;
  [2014_pop>=100000] {polygon-fill:@yellow;}
  [2014_pop>=10000000] {polygon-fill:@orange;}
  [2014_pop>=20000000] {polygon-fill:@pink;}
  [2014_pop>=200000000] {polygon-fill:@red;}
}

我明白了:

注意2014_pop 属性是如何通知颜色的。我建议使用首字母命名属性,以免编辑器感到困惑。

【讨论】:

  • 所以,不完全是。是的,我可以使用 GeoJSON 来渲染其中的多边形,但它们的分辨率不高:i.gyazo.com/ae56ca107a19280c6247ac4177509285.png 我基本上必须尝试使用​​我自己的 GeoJSON 复制布局和数据。
  • 这是我目前收到的回复:twitter.com/chieflybrit/status/636987450460475392
  • 当您在 TileMill 上使用“默认数据”创建新地图时,您将获得具有高分辨率多边形的基础。您可以从 Natural Earth 下载该数据集并添加地图所需的任何属性
  • 看起来这是我拥有@mga 的最佳选择。非常感谢您的调查。
猜你喜欢
  • 1970-01-01
  • 2011-12-03
  • 1970-01-01
  • 2020-02-27
  • 1970-01-01
  • 2021-06-04
  • 2020-03-17
  • 2012-02-03
  • 1970-01-01
相关资源
最近更新 更多