Descrever dados geográficos com o GeoJSON

Concluído

GeoJSON é um formato de dados geoespaciais padrão da Internet baseado em JavaScript Object Notation (JSON). Para adicionar camadas a um controle de mapa, você precisa definir uma fonte de dados que contenha dados GeoJSON. O controle de mapa usa os dados para criar sobreposições com base em locais. Por exemplo, você usaria uma fonte de dados GeoJSON para definir o posicionamento de recursos em uma camada de bolhas em um mapa.

Nota

GeoJSON é definido como um padrão na Internet Engineering Task Force (IETF) RFC 7946.

Objetos GeoJSON

O formato GeoJSON define três objetos:

  • Geometria
  • Funcionalidade
  • Coleção de funcionalidades

Geometria

Uma geometria é uma região no espaço. Uma geometria pode ser:

  • Um único ponto definido por uma longitude e uma latitude.
  • Vários pontos que descrevem uma linha.
  • Vários pontos que descrevem o contorno de um polígono.
  • Uma coleção de múltiplas geometrias.

Um objeto GeoJSON de geometria tem duas propriedades:

  • type: Especifica o tipo de geometria, como a ou a PointPolygon.
  • coordinates: Contém coordenadas como valores de longitude e latitude em uma matriz de dois itens. O primeiro item é a longitude, e o segundo item é a latitude. Os pontos têm um único valor em uma matriz. Linhas e polígonos têm vários valores em uma matriz. Para polígonos, a forma deve ser fechada, de modo que a última coordenada deve ser a mesma que a primeira coordenada.

Aqui está um exemplo de objeto de geometria que contém um único ponto na sede da Microsoft em Redmond, Washington, EUA:

{
    "type": "Point",
    "coordinates": [-122.136866, 47.642472]
}

Aqui está um exemplo de um polígono para uma praça em torno de Paris, França:

{
    "type": "Polygon",
    "coordinates": [
        [
            [2.2580337524414062, 48.81251594581751],
            [2.4262619018554688, 48.81251594581751],
            [2.4262619018554688, 48.90377176147872],
            [2.2580337524414062, 48.90377176147872],
            [2.2580337524414062, 48.81251594581751]
        ]
    ]
}

Este quadrado tem cinco coordenadas: quatro cantos e a última coordenada, que é a mesma que a primeira coordenada, para fechar o quadrado.

Funcionalidade

Um recurso é uma entidade espacialmente limitada. Então, é uma geometria que tem um conjunto de propriedades que descrevem o que está naquele local. As propriedades podem ser dados, como um nome de lugar ou a temperatura.

Um objeto GeoJSON de recurso tem três propriedades:

  • type: Especifica o tipo de objeto e é sempre Feature para um recurso.
  • geometry: Um objeto de geometria GeoJSON que define o local do recurso.
  • properties: Qualquer objeto GeoJSON válido e define as propriedades do recurso.

Aqui está um exemplo de recurso para Paris, França:

{
    "type": "Feature",
    "geometry": {
        "type": "Polygon",
        "coordinates": [
            [
                [2.2580337524414062, 48.81251594581751],
                [2.4262619018554688, 48.81251594581751],
                [2.4262619018554688, 48.90377176147872],
                [2.2580337524414062, 48.90377176147872],
                [2.2580337524414062, 48.81251594581751]
            ]
        ]
    },
    "properties": {
        "city_name": "Paris",
        "population": 2148271
    }
}

Coleção de funcionalidades

Uma coleção de recursos, como o próprio nome sugere, é uma coleção de recursos.

Um objeto GeoJSON de coleção de recursos tem duas propriedades:

  • type: Especifica o tipo de objeto e é sempre FeatureCollection para uma coleção de recursos.
  • features: Uma matriz de objetos de recurso GeoJSON.

Eis um exemplo de uma coleção de funcionalidades para duas cidades europeias:

{
    "type": "FeatureCollection",
    "features": [{
            "type": "Feature",
            "geometry": {
                "type": "Polygon",
                "coordinates": [
                    [
                        [2.2580337524414062, 48.81251594581751],
                        [2.4262619018554688, 48.81251594581751],
                        [2.4262619018554688, 48.90377176147872],
                        [2.2580337524414062, 48.90377176147872],
                        [2.2580337524414062, 48.81251594581751]
                    ]
                ]
            },
            "properties": {
                "city_name": "Paris",
                "population": 2148271
            }
        },
        {
            "type": "Feature",
            "geometry": {
                "type": "Polygon",
                "coordinates": [
                    [
                        [-0.5287170410156249, 51.26019611626714],
                        [0.26641845703125, 51.26019611626714],
                        [0.26641845703125, 51.70916142932303],
                        [-0.5287170410156249, 51.70916142932303],
                        [-0.5287170410156249, 51.26019611626714]
                    ]
                ]
            },
            "properties": {
                "city_name": "London",
                "population": 8908081
            }
        }
    ]
}

Nesta unidade, você aprendeu sobre o formato GeoJSON que é usado para armazenar dados espaciais e seus três tipos de objeto. Em seguida, você usa uma API para obter dados de qualidade do ar, converter os dados em GeoJSON e, em seguida, mostrar os dados em um mapa.