Informations sur le style GeoJSON

25

Pour autant que je sache, il n'y a rien dans la norme GeoJSON pour stocker les informations de style, c'est-à-dire les couleurs de ligne, les épaisseurs, etc.

Suis-je en train de manquer quelque chose ou est-ce juste quelque chose que GeoJSON ne gère pas?

Mr_Chimp
la source

Réponses:

18

Pour GeoJSON - Les styles CSS sont utilisés pour modifier vos points, lignes, polygones avec épaisseur et couleur

{ 
    "type": "Feature",
    "geometry": {
    "type": "Polygon",
    "coordinates": [[
        [-180.0, 10.0], [20.0, 90.0], [180.0, -5.0], [-30.0, -90.0]
        ]]
    },
    "style": {
        "__comment": "all SVG styles allowed",
        "fill":"red",
        "stroke-width":"3",
        "fill-opacity":0.6
    },
    "className": {
        "baseVal":"A class name"
    }
}

http://wiki.openstreetmap.org/wiki/Geojson_CSS

Mapperz
la source
1
Cela ne semble pas faire partie de la spécification GeoJSON. Est-ce une implémentation courante?
Mr_Chimp
oui mise en œuvre commune courante, qui fonctionne - GeoJOSN est un «format d'échange de données géospatiales»
Mapperz
un peu de sujet, mais est-ce que geoson_css est lié à carto mapbox.com/carto
Francisco Puga
6
Ce n'est pas une chose standard et chaque implémentation va faire cela différemment.
Calvin
3
QGis (qui utilise GDAL sous le capot) et geojsonlint.com , pour ne citer que 2 exemples, génèrent des erreurs lors de l'utilisation de l'attribut "style".
Marian
10

De nos jours, il existe SimpleStyle de Mapbox .

"properties": {
        // OPTIONAL: default ""
        // A title to show when this item is clicked or
        // hovered over
        "title": "A title",

        // OPTIONAL: default ""
        // A description to show when this item is clicked or
        // hovered over
        "description": "A description",

        // OPTIONAL: default "medium"
        // specify the size of the marker. sizes
        // can be different pixel sizes in different
        // implementations
        // Value must be one of
        // "small"
        // "medium"
        // "large"
        "marker-size": "medium",

        // OPTIONAL: default ""
        // a symbol to position in the center of this icon
        // if not provided or "", no symbol is overlaid
        // and only the marker is shown
        // Allowed values include
        // - Icon ID from the Maki project at http://mapbox.com/maki/
        // - An integer 0 through 9
        // - A lowercase character "a" through "z"
        "marker-symbol": "bus",

        // OPTIONAL: default "7e7e7e"
        // the marker's color
        //
        // value must follow COLOR RULES
        "marker-color": "#fff",

        // OPTIONAL: default "555555"
        // the color of a line as part of a polygon, polyline, or
        // multigeometry
        //
        // value must follow COLOR RULES
        "stroke": "#555555",

        // OPTIONAL: default 1.0
        // the opacity of the line component of a polygon, polyline, or
        // multigeometry
        //
        // value must be a floating point number greater than or equal to
        // zero and less or equal to than one
        "stroke-opacity": 1.0,

        // OPTIONAL: default 2
        // the width of the line component of a polygon, polyline, or
        // multigeometry
        //
        // value must be a floating point number greater than or equal to 0
        "stroke-width": 2,

        // OPTIONAL: default "555555"
        // the color of the interior of a polygon
        //
        // value must follow COLOR RULES
        "fill": "#555555",

        // OPTIONAL: default 0.6
        // the opacity of the interior of a polygon. implementations
        // may choose to set this to 0 for line features.
        //
        // value must be a floating point number greater than or equal to
        // zero and less or equal to than one
        "fill-opacity": 0.5
    }
Steve Bennett
la source
Les attributs de style de la spécification sont également des propriétés, ils devraient donc toujours fonctionner là où geoJSON est attendu.
Abbafei
Ce style est également utilisé par le rendu geojson de Github (qui est construit sur la brochure): help.github.com/en/articles/…
Ariel Allon
4

GeoJSON ne s'en occupe pas. Toutes les informations de style vont dépendre de ce qu'est le moteur de rendu, des coutures CSS Geojson pour cibler SVG mais vous avez également Carto qui cible mapnik, n'oubliez pas que vous pouvez ajouter des champs supplémentaires à GeoJSON et qu'il sera toujours validé donc aucun de ceux-ci n'est GeoJSON invalide .

Calvin
la source
1

je pense qu'il s'agit de types d'orthographe et vous pouvez ajouter plus de définition si vous le souhaitez. je ne pense pas qu'il soit si important de ne pas participer aux spécifications json ... il n'y a pas de limite pour l'objet json, la seule chose importante est que votre json doit être valide pour une utilisation correcte ...

et j'ai vérifié Mapperz♦geojson, il y avait une erreur d'analyse dedans .. et geojson valide:

{
    "type": "Feature",
    "geometry": {
        "type": "Polygon",
        "coordinates": [
            [
                [-180, 10],[20, 90],[180, -5],[-30, -90]
            ]
        ]
    },
    "style": {
        "stroke-width": "3",
        "fill-opacity": 0.6
    },
    "className": {
        "baseVal": "highway_primary"
    }
}

et la dernière chose à dire est que vous pouvez vérifier si votre fichier geojson est valide ou non à partir de JSONLint qui est un validateur JSON ...

J'espère que ça t'aide

Aragon
la source
2
Je sais qu'il est possible de le faire de cette façon, je me demande simplement si d'autres personnes l'implémentent de cette manière afin de maximiser la compatibilité.
Mr_Chimp
la source est ici - wiki.openstreetmap.org/wiki/Geojson_CSS
Mapperz