GeoJSON样式信息


25

据我所知,GeoJSON标准中没有任何东西可以存储样式信息,即线条颜色,粗细等。

我是否缺少某些东西,或者这仅仅是GeoJSON无法处理的?

Answers:


18

对于GeoJSON-CSS样式用于修改点,线,具有厚度和颜色的多边形

{ 
    "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
这似乎不是GeoJSON规范的一部分。这是常见的实现吗?
Mr_Chimp

是的,通用的通用实现方式,可以正常工作-GeoJOSN是一种“地理空间数据交换格式”
Mapperz

有点话题,但是这与carto mapbox.com/carto
Francisco Puga的

6
那不是标准的事情,每个实现都会做不同的事情。
加尔文,

3
QGis(在后台使用GDAL)和geojsonlint.com(仅举2个示例)在使用“ style”属性时会引发错误。
玛丽安

10

这些天来有Mapbox的SimpleStyle

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

规范中的样式属性也是属性,因此应始终在期望geoJSON的地方使用。
阿巴菲(Abbafei)

这个造型也被GitHub的GeoJSON的渲染(这是建立在单张):help.github.com/en/articles/...
阿里尔阿隆

4

GeoJSON不处理此问题。任何样式信息都将取决于渲染器是什么,Geojson CSS接缝以SVG为目标,但是您也有Carto以mapnik为目标,请记住您可以向GeoJSON添加额外的字段,并且它仍然会验证,因此这些都不是无效的GeoJSON 。


1

我认为这完全与拼写类型有关,如果需要,您可以添加更多定义。我不认为不参加json规范这么重要... json对象没有限制,唯一重要的是您的json必须有效才能正确使用...

并且我已经检查了Mapperz♦geojson,它有一些解析错误..和有效的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"
    }
}

最后要说的是,您可以从作为JSON验证程序的JSONLint中检查geojson文件是否有效...

希望对您有帮助


2
我知道这样做是可能的,我只是想知道其他人是否以这种方式实现它,以使兼容性最大化。
Mr_Chimp

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.