Informacje o stylizacji GeoJSON

25

O ile widzę, w standardzie GeoJSON nie ma nic do przechowywania informacji o stylizacji, tj. Kolorów linii, grubości itp.

Czy coś mi brakuje, czy jest to coś, z czym GeoJSON nie ma do czynienia?

Mr_Chimp
źródło

Odpowiedzi:

18

W przypadku GeoJSON - style CSS służą do modyfikowania punktów, linii, wielokątów o grubości i kolorze

{ 
    "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
źródło
1
To nie wydaje się być częścią specyfikacji GeoJSON. Czy to powszechna implementacja?
Mr_Chimp
tak, wspólna, wspólna implementacja, która działa - GeoJOSN to „format wymiany danych geoprzestrzennych”
Mapperz
trochę tematu, ale czy ten geoson_css jest powiązany z carto mapbox.com/carto
Francisco Puga
6
To nie jest standardowa rzecz, a każda implementacja zrobi to inaczej.
Calvin
3
QGis (który używa GDAL pod maską) i geojsonlint.com , aby wymienić 2 przykłady, zgłaszają błędy przy użyciu atrybutu „style”.
Marian
10

Obecnie istnieje SimpleStyle firmy 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
źródło
Atrybuty stylów w specyfikacji są również właściwościami, więc zawsze powinny działać wszędzie tam, gdzie oczekuje się geoJSON.
Abbafei,
Ta stylizacja jest również używana w renderowaniu geojsonowym Githuba (który jest oparty na ulotce): help.github.com/en/articles/…
Ariel Allon
4

GeoJSON nie radzi sobie z tym. Wszelkie informacje o stylu będą zależeć od tego, co to jest renderer, Geojson CSS wydaje się celować w SVG, ale masz także Carto, które celuje w mapnik, pamiętaj, że możesz dodać dodatkowe pola do GeoJSON i nadal będzie sprawdzane, więc żadne z nich nie jest nieprawidłowe GeoJSON .

Calvin
źródło
1

myślę, że chodzi o typy pisowni i jeśli chcesz, możesz dodać więcej definicji. nie sądzę, że jest to tak ważne, aby nie brać udziału w specyfikacji json ... nie ma ograniczenia dla obiektu json, ważne jest tylko to, że twój json musi być ważny do poprawnego użycia ...

i sprawdziłem Mapperz♦geojson, miał jakiś błąd analizy. i prawidłowy geojson:

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

ostatnią rzeczą do powiedzenia jest to, że możesz sprawdzić, czy plik geojson jest prawidłowy, czy nie, z JSONLint, który jest walidatorem JSON ...

Mam nadzieję, że Ci to pomoże

Aragonia
źródło
2
Wiem, że można to zrobić w ten sposób. Zastanawiam się tylko, czy inni ludzie wdrażają to w ten sposób, aby zmaksymalizować kompatybilność.
Mr_Chimp
źródło jest tutaj - wiki.openstreetmap.org/wiki/Geojson_CSS
Mapperz