6.5. Documentos GeoJSON

GeoJSON é um formato de intercâmbio geoespacial baseado na notação JSON. Um objeto GeoJSON pode representar uma:

  • Geometria (Geometry)

  • Feição (Feature)

  • Coleção de Feições (Feature Collection)

6.5.1. Geometrias

O formato GeoJSON suporta os seguintes tipos geométricos (Tabela 6.1): Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon e GeometryCollection.

Tabela 6.1 - Tipos geométricos suportados pela especificação GeoJSON.

( a ) Point

( b ) LineString

ogc-geom-point

ogc-geom-linestring

( c ) Polygon

( d ) Polygon (com buracos)

( e ) MultiPoint

ogc-geom-polygon

ogc-geom-polygon-with-hole

ogc-geom-multipoint

( f ) MultiLineString

( g ) MultiPolygon

( h ) GeometryCollection

ogc-geom-multilinestring

ogc-geom-multipolygon

ogc-geom-geometrycollection

6.5.1.1. Point

O tipo geométrico Point (Tabela 6.1a) é representado por um objeto JSON com o seguinte formato:

{
    "type": "Point",
    "coordinates": [10.0, 10.0]
}

6.5.1.2. LineString

O tipo geométrico LineString (Tabela 6.1b) é representado por um objeto JSON com o seguinte formato:

{
    "type": "LineString",
    "coordinates": [
        [10.0, 10.0],
        [20.0, 20.0],
        [30.0, 12.0]
    ]
}

6.5.1.3. Polygon

O tipo geométrico Polygon (Tabela 6.1c e Tabela 6.1d) é representado por um objeto JSON com o seguinte formato:

{
    "type": "Polygon",
    "coordinates": [
      [
        [0.0, 0.0],
        [0.0, 10.0],
        [10.0, 10.0],
        [10.0, 0.0],
        [0.0, 0.0]
      ]
    ]
}

6.5.1.4. MultiPoint

O tipo geométrico MultiPoint (Tabela 6.1e) é representado por um objeto JSON com o seguinte formato:

{
    "type": "MultiPoint",
    "coordinates": [
        [10.0, 10.0],
        [11.0, 11.0]
    ]
}

6.5.1.5. MultiLineString

O tipo geométrico MultiLineString​ (Tabela 6.1f) é representado por um objeto JSON com o seguinte formato:

{
    "type": "MultiLineString",
    "coordinates": [
        [ [10.0, 10.0], [11.0, 11.0] ],
        [ [12.0, 12.0], [13.0, 13.0] ]
    ]
}

6.5.1.6. MultiPolygon

O tipo geométrico MultiPolygon (Tabela 6.1g) é representado por um objeto JSON com o seguinte formato:

{
    "type": "MultiPolygon",
    "coordinates": [
        [
            [
                [102.0, 2.0],
                [103.0, 2.0],
                [103.0, 3.0],
                [102.0, 3.0],
                [102.0, 2.0]
            ]
        ],
        [
            [
                [100.0, 0.0],
                [101.0, 0.0],
                [101.0, 1.0],
                [100.0, 1.0],
                [100.0, 0.0]
            ],
            [
                [100.2, 0.2],
                [100.2, 0.8],
                [100.8, 0.8],
                [100.8, 0.2],
                [100.2, 0.2]
            ]
        ]
    ]
}

6.5.1.7. GeometryCollection

O tipo geométrico GeometryCollection (Tabela 6.1h) é representado por um objeto JSON com o seguinte formato:

{
   "type": "GeometryCollection",
   "geometries": [
       {
           "type": "Point",
           "coordinates": [100.0, 0.0]
       },
       {
           "type": "LineString",
           "coordinates": [
               [101.0, 0.0],
               [102.0, 1.0]
           ]
       }
   ]
}

6.5.2. Feature

Um objeto do tipo Feature representa um objeto ou entidade geográfica, com o seguinte formato:

{
    "type": "Feature",
    "geometry": {
        "type": "Point",
        "coordinates": [-45.88, -23.17]

    },

    "properties": {
        "cidade": "São José dos Campos"
    }
}

6.5.3. FeatureCollection

Um objeto do tipo FeatureCollection pode ser utilizado para representar uma coleção de objetos ou entidades geográficas, com o seguinte formato:

{
    "type": "FeatureCollection",
    "features": [
        {
            "type": "Feature",
            "geometry": {
                "type": "Point",
                "coordinates": [-45.88, -23.17]

            },
            "properties": {
                "cidade": "São José dos Campos"
            }
        },
        {
            "type": "Feature",
            "geometry": {
                "type": "Point",
                "coordinates": [-43.50, -20.38]

            },
            "properties": {
                "cidade": "Ouro Preto"
            }
        }
    ]
}

Nota

A especificação GeoJSON pode ser encontrada em [8].

6.5.4. Validadores de Documentos GeoJSON

Existem na Internet vários aplicativos online que possibilitam validar a estrutura de um documento GeoJSON, isto é, permite sabermos se o documento respeita a sintaxe (ou notação) GeoJSON. Um bom aplicativo é o geojson.io. Acesse o endereço desse aplicativo e verifique os documentos apresentados na seção anterior.