Informações de estilo do GeoJSON


25

Até onde eu posso ver, não há nada no padrão GeoJSON para armazenar informações de estilo, como cores, espessuras etc.

Estou perdendo alguma coisa ou isso é apenas algo que GeoJSON não lida?

Respostas:


18

Para GeoJSON - os estilos CSS são usados ​​para modificar seus pontos, linhas, polígonos com espessura e cor

{ 
    "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


1
Isso não parece fazer parte da especificação GeoJSON. Essa é uma implementação comum?
28412 Mr_Chimp

sim implementação comum comum, isso funciona - GeoJOSN é um 'formato de intercâmbio de dados geoespaciais'
Mapperz

um pouco de tópico, mas isso é geoson_css relacionado a carto mapbox.com/carto
Francisco Puga

6
Isso não é padrão e cada implementação fará isso de maneira diferente.
Calvin

3
QGis (que usa GDAL sob o capô) e geojsonlint.com , para citar dois exemplos, lançam erros ao usar o atributo "style".
Marian

10

Hoje em dia existe o SimpleStyle da 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
    }

Os atributos de estilo na especificação também são propriedades, portanto, devem sempre funcionar onde quer que o geoJSON seja esperado.
Abbafei

Esse estilo também é usado pela renderização geojson do Github (que é construída no folheto): help.github.com/en/articles/…
Ariel Allon

4

GeoJSON não lida com isso. Qualquer informação de estilo vai depender do que é o renderizador, o CSS de Geojson é direcionado para o SVG, mas você também tem o Carto que direciona o mapnik, lembre-se de que pode adicionar campos extras ao GeoJSON e ele ainda será validado para que nenhum deles seja GeoJSON inválido. .


1

Eu acho que é tudo sobre tipos de ortografia e você pode adicionar mais definições, se quiser. Eu não acho que é tão importante para não participar do json spec ... não há limite para o objeto json, o importante é que o seu json precise ser válido para o uso correto ...

e eu verifiquei Mapperz♦geojson, houve algum erro de análise nele ... e geojson válido:

{
    "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"
    }
}

e a última coisa a dizer é que você pode verificar seu arquivo geojson válido ou não no JSONLint, que é um JSON Validator ...

espero que ajude você


2
Eu sei que é possível fazê-lo dessa maneira. Apenas me pergunto se outras pessoas o implementam dessa maneira, a fim de maximizar a compatibilidade.
28412 Mr_Chimp

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.