2017-10-06 1 views
0

Actuellement, je règle manuellement les arrêts, mais mes fichiers GeoJSON ont des plages différentes et je dois définir des valeurs d'arrêt à chaque fois. Est-il possible d'utiliser la valeur min et max d'une propriété dans une fonction map.addLayer? et ensuite le diviser en une gamme de valeurs? Je suis en train d'analyser le GeoJSON pour obtenir la valeur minimum et maximum et je ne suis pas sûr si mapbox offre cette fonctionnalité.MAPBOX - comment utiliser la valeur minimale et maximale des fonctionnalités de GeoJSON dans le style de données

map.addLayer({ 
    'id': 'heatmap', 
    'type': 'circle', 
    'source': "sourceGeoJSON", 
    paint: { 
     'circle-color': { 
     property:'pH', 
     stops: [ 
     [6,'#6879FB'], 
     [8,'#68FB75'], 
     [9, '#F94B18'], 
     [10, '#F92918'] 
     ]; 
    }, 
    'circle-opacity': 1.0 
    } 
}); 

Répondre

0

Mapbox-GL-JS ne fournit aucune fonctionnalité de regroupement automatique. Il est assez trivial de créer des bacs linéaires sur une plage:

phvals = sourceGeoJSON.features.map(f => f.properties.pH); 
min = Math.min(...phvals); 
max = Math.max(...phvals); 
range = max-min; 

map.addLayer({ 
    'id': 'heatmap', 
    'type': 'circle', 
    'source': "sourceGeoJSON", 
    paint: { 
     'circle-color': { 
     property:'pH', 
     stops: [ 
     [min,'#6879FB'], 
     [min + 1/3*range,'#68FB75'], 
     [min + 2/3*range, '#F94B18'], 
     [max, '#F92918'] 
     ]; 
    }, 
    'circle-opacity': 1.0 
    } 
}); 

Pour aller plus loin, envisager d'utiliser quelque chose comme la fonction ckmeans dans le package simple de statistiques.