Tutorial de GeoJSON para iniciantes

Posted on: April 13, 2026 05:22 PM

Posted by: Renato

Views: 38

Tutorial de GeoJSON para iniciantes

Dmitry Sobolevsky

Este é o primeiro artigo de uma série sobre como trabalhar com mapas no desenvolvimento web. Aqui, quero detalhar um tipo de dado muito importante, sem o qual é muito difícil imaginar o funcionamento dos mapas em aplicações web modernas. Então, hoje vamos analisar o que é GeoJSON , do que ele é composto e para que serve.

Pressione Enter ou clique para ver a imagem em tamanho real.
Foto da NASA no Unsplash

GeoJSON é um formato de dados para representar objetos geográficos e seus atributos. É usado para armazenar e trocar geodados, como pontos, linhas e polígonos, bem como seus atributos associados, como nome, descrição, endereço etc. Para obter explicações mais técnicas e oficiais, visite a página do formato GeoJSON .

O GeoJSON usa o formato de texto JSON para representar dados, o que facilita a leitura tanto por humanos quanto por computadores. No formato GeoJSON, os objetos geométricos são definidos como Point , LineString , Polygon , MultiPoint , MultiLineString e MultiPolygon .

Em GeoJSON, também é possível definir o sistema de coordenadas e outros parâmetros de objetos geométricos, como tipo de geometria, precisão das coordenadas e outras propriedades, mas abordaremos isso no próximo artigo.

O GeoJSON tornou-se um formato de dados amplamente utilizado na área da geoinformática e no desenvolvimento de software.

Existem diversas bibliotecas JavaScript que utilizam GeoJSON para trabalhar com dados geográficos. Algumas bibliotecas populares são:

  1. Mapbox GL JS — biblioteca JavaScript do lado do cliente para criar mapas e aplicativos web com a moderna tecnologia de mapeamento da Mapbox .
  2. Leaflet — biblioteca JavaScript de código aberto para mapas interativos compatíveis com dispositivos móveis.
  3. Turf.js — Biblioteca JavaScript para realizar operações espaciais e análises em dados GeoJSON.
  4. D3.js — Biblioteca JavaScript para produzir visualizações de dados dinâmicas e interativas em navegadores web.
  5. OpenLayers é uma biblioteca JavaScript de código aberto para exibir dados de mapas em navegadores da web como mapas interativos.
  6. e muitos outros…

Ponto 🔴

Um Ponto em GeoJSON é como uma localização em um mapa do tesouro. É um ponto específico no mapa que pode ser identificado usando um conjunto de coordenadas (latitude e longitude). Assim como você usaria um "X marca o local" para indicar onde um tesouro está enterrado, um Ponto em GeoJSON usa coordenadas para mostrar onde algo está localizado na superfície da Terra.

Por exemplo, se você estivesse criando um mapa do seu bairro e quisesse mostrar onde fica sua casa, você poderia usar um Ponto em GeoJSON para marcar a localização exata da sua casa no mapa.

Pressione Enter ou clique para ver a imagem em tamanho real.

Em resumo, um ponto é simplesmente uma forma de representar uma única localização em um mapa.

Representação GeoJSON de pontos:

{ 
  "coordenadas" :  [ 
    8.308903076149363 , 
    47.05038385401457 
  ] , 
  "tipo" :  "Ponto" 
}

LinhaString 📈

Uma LineString em GeoJSON é como um caminho em um mapa do tesouro. É uma linha que conecta uma série de pontos e pode ser usada para mostrar uma rota ou um caminho entre dois ou mais lugares.

Por exemplo, imagine que você está criando um mapa do tesouro que leva a um tesouro escondido. Ou você só quer encontrar o caminho para a padaria mais próxima 🥨

Pressione Enter ou clique para ver a imagem em tamanho real.

Você pode usar um LineString para desenhar um caminho no mapa que mostre a rota do ponto de partida até a localização do tesouro. O LineString seria composto por uma série de pontos que se conectam para formar uma linha, como em um desenho de ligar os pontos.

Em GeoJSON, uma LineString é uma forma de representar uma série de pontos conectados como um único objeto, facilitando a visualização de um caminho ou rota em um mapa. É comumente usada em aplicações como navegação e planejamento de transporte.

Representação LineString GeoJSON:

{ 
    "coordenadas" :  [ 
      [ 
        8.310242689008646 , 
        47.05429444841852 
      ] , 
      [ 
        8.310504651721004 , 
        47.05399445514598 
      ] , 
      [ 
        8.309440079847974 , 
        47.05356534791096 
      ] , 
      [ 
        8.309228280208345 , 
        47.05341345071696 
      ] , 
      [ 
        8.309100085689579 , 
        47.05285522481279 
      ] , 
      [ 
        8.308498128818854 , 
        47.05292737678937 
      ] 
    ] , 
    "tipo" :  "LineString" 
  }

Polígono 🔲

Um polígono em GeoJSON é como uma forma em um mapa do tesouro. É uma forma fechada composta por linhas retas e pode ser usada para mostrar o contorno de uma área, como um parque, um lago ou um edifício.

Por exemplo, imagine que você está criando um mapa do tesouro que leva a um castelo. Você poderia usar um polígono para desenhar o formato das muralhas do castelo no mapa. O polígono seria composto por uma série de pontos que se conectam para formar uma figura fechada, assim como desenhar o contorno de um castelo em um pedaço de papel.

Pressione Enter ou clique para ver a imagem em tamanho real.
Exemplo de polígono
Exemplo de polígono

Representação GeoJSON poligonal:

{ 
 "coordenadas" :  [ 
   [ 
     [ 
       12.478129652015241 , 
       41.9022826549635 
     ] , 
     [ 
       12.478129652015241 , 
       41.90136017129154 
     ] , 
     [ 
       12.479303348926749 , 
       41.90136017129154 
     ] , 
     [ 
       12.479303348926749 , 
       41.9022826549635 
     ] , 
     [ 
       12.478129652015241 , 
       41.9022826549635 
     ] 
   ] 
 ] , 
 "tipo" :  "Polígono" 
}

Na verdade, o GeoJSON de polígono é muito semelhante ao LineString , mas a forma é fechada e, geralmente, em um polígono, as coordenadas inicial e final são o mesmo ponto. Veja o exemplo acima.

Multiponto ⚪️

Um MultiPoint é como uma coleção de pontos em um mapa do tesouro. É um grupo de pontos individuais, cada um com suas próprias coordenadas de latitude e longitude, e pode ser usado para mostrar a localização de vários elementos em um mapa.

Por exemplo, imagine que você está criando um mapa do tesouro que mostra a localização de pedras preciosas escondidas em um parque. Você poderia usar um MultiPoint para marcar a localização de cada pedra preciosa no mapa. O MultiPoint seria composto por uma série de pontos individuais, cada um com suas próprias coordenadas, assim como colocar vários pontos em um pedaço de papel para mostrar a localização de diferentes pedras preciosas.

Pressione Enter ou clique para ver a imagem em tamanho real.

Representação MultiPont GeoJSON:

{ 
   "type" :  "MultiPoint" , 
   "coordinates" :  [ 
     [ 
       -73.984 , 
       40.748 
     ] , 
     [ 
       -73.985 , 
       40.749 
     ] , 
     [ 
       -73.986 , 
       40.75 
     ] , 
     [ 
       -73.987 , 
       40.751 
     ] 
   ] 
}

MultiLineString 📈📉

Uma MultiLineString em GeoJSON é como um grupo de caminhos em um mapa do tesouro. É uma coleção de linhas que conectam uma série de pontos e pode ser usada para mostrar várias rotas ou caminhos entre diferentes lugares em um mapa.

Por exemplo, imagine que você está criando um mapa do tesouro que leva a um baú de tesouro e deseja mostrar três rotas diferentes que alguém poderia seguir para chegar lá. Você poderia usar um MultiLineString para desenhar três caminhos diferentes no mapa, cada um composto por uma série de pontos conectados.

Pressione Enter ou clique para ver a imagem em tamanho real.

Representação GeoJSON MultiLineString:

{ 
     "tipo" :  "MultiLineString" , 
     "coordenadas" :  [ 
       [ 
         [ 
           2.3415215150407676 , 
           48.848216086115485 
         ] , 
         [ 
           2.3407788857352045 , 
           48.847325398150645 
         ] , 
         [ 
           2.3380359484630446 , 
           48.8480269147754 
         ] 
       ] , 
       [ 
         [ 
           2.330406031247776 , 
           48.84706528274708 
         ] , 
         [ 
           2.3372693633740766 , 
           48.84692340104834 
         ] , 
         [ 
           2.3372933191584764 , 
           48.84791656449744 
         ] 
       ] , 
       [ 
         [ 
           2.332755904765321 , 
           48.85020559607162 
         ] ,
          ... , 
         [ 
           2.336719866067824 , 
           48.84788609233465 
         ] 
       ] 
     ] 
}

Multipolígono 🏔🌋🏝

Um MultiPolygon em GeoJSON é como um grupo de formas em um mapa do tesouro. É uma coleção de polígonos, cada um composto por uma série de pontos conectados, e pode ser usado para mostrar múltiplas áreas ou regiões em um mapa.

Por exemplo, imagine que você está criando um mapa do tesouro que mostra diferentes tipos de terreno em um parque, como uma floresta, um prado e um lago. Você poderia usar um MultiPolígono para desenhar três formas diferentes no mapa, cada uma composta por uma série de pontos conectados .

Pressione Enter ou clique para ver a imagem em tamanho real.
Exemplo de MultiPolígono
{ 
  "type" :  "FeatureCollection" , 
  "features" :  [ 
    { 
      "type" :  "Feature" , 
      "properties" :  { } , 
      "geometry" :  { 
        "type" :  "MultiPolygon" , 
        "coordinates" :  [ 
          [ 
            [ 
              [ 
                2.291863239086439 , 
                48.8577137262115 
              ] , 
              [ 
                2.293452085617105 , 
                48.856693553273885 
              ] , 
              [ 
                2.2968403487010107 , 
                48.85892279314069 
              ] , 
              [ 
                2.2951175030651143 , 
                48.86006886087142 
              ] , 
              [ 
                2.291863239086439 , 
                48.8577137262115 
              ] 
            ] 
          ] , 
          [ 
            [ 
              [ 
                2.288226120523035 , 
                48.86156752523257 
              ] , 
              [ 
                2.2899681088877344 , 
                48.86042149181674 
              ] , 
              [ 
                2.290810388976098 , 
                48.86063558796482 
              ] , 
              [ 
                2.2909826735397587 , 
                48.8611015587675 
              ] , 
              [ 
                2.28947039792655 , 
                48.862234983151495 
              ] , 
              [ 
                2.288226120523035 , 
                48.86156752523257 
              ] 
            ] 
          ] , 
          [ 
          [ 
            [ 
              2.2912927602678224 , 
              48.85709062155263 
            ] , 
            [ 
              2.2905402133688426 , 
              48.85661663833349 
            ] , 
            [ 
              2.291917551492446 , 
              48.855746990243716 
            ] , 
            [ 
              2.2926328654095016 , 
              48.85624492205244 
            ] , 
            [ 
              2.2912927602678224 , 
              48.85709062155263 
            ] 
          ] 
        ] 
        ] 
      } 
    } 
  ] 
}

Pronto! Analisamos todos os tipos básicos de elementos em GeoJSON. Espero que agora esse formato de dados esteja muito mais claro e fácil de usar para você.

Por fim, gostaria de compartilhar com vocês uma ferramenta muito útil para explorar e visualizar dados GeoJSON diretamente no navegador: https://geojson.io.

Se de repente você não entender algum tipo de dado, aconselho que tente no geojson.io e você vai descobrir!

Fique atento!

Fonte: https://medium.com/@dmitry.sobolevsky/geojson-tutorial-for-beginners-ce810d3ff169


1

Share

Donate to Site


About Author

Renato

Developer

Add a Comment
Comments 0 Comments

No comments yet! Be the first to comment

Blog Search


Categories

Laravel (227) PHP (151) linux (124) Variados (110) ubuntu (58) Dicas (58) developer (48) postgresql (45) database (44) sql (42) Docker (32) mysql (31) front-end (31) devops (26) webdev (24) programming (23) eloquent (19) aws (19) tecnologia (19) dba (18) OUTROS (17) backend (16) laravelphp (16) dev (12) debian (12) react (10) reactjs (10) 100DaysOfCode (10) git (10) javascript (9) nginx (9) inteligencia-artificial (9) PHP Swoole (9) node (9) linux-tools (8) Architecture (8) ciencia (7) github (7) vue (7) arquitetura (6) windows (6) api (6) vscode (6) nodejs (6) webservice (6) vim (6) jwt (6) apache (5) macox (5) s3 (5) servers (5) ia (5) authentication (5) reactnative (5) rest (5) DevSecOps (5) npm (4) openai (4) google (4) opensource (4) mariadb (4) jenkins (4) Kubernetes (4) gitlab (4) angular (4) autenticacao (4) shell (4) mongodb (4) query (4) Raspberry (4) angularjs (4) inteligenciadedados (4) Padrao de design (4) artigo (4) wsl (4) Swoole (4) lets-encrypt (4) db (3) politica (3) RabbitMQ (3) educacao (3) intel (3) CMS (2) sail (3) script (3) performance (3) js (3) mysqli (3) Black Hat (3) terminal (3) log (3) mac (3) fedora (3) containers (3) json (3) authorization (3) phpswoole (3) ddd (3) blade (3) hardware (3) tests (3) macos (3) web (2) jobs (3) websocket (3) ssh (3) bash (3) telefonia (2) nvm (2) imagick (2) maps (2) colors (2) Passport (2) JQuery (2) phpfpm (2) autorizacao (2) monitoring (2) laptop (2) gnome (2) powerbi (2) Python (2) Oauth2 (2) android (2) unix (2) magento (2) iot (2) ffmpeg (2) combustivel (2) webhook (2) microservices (2) Curisidades (2) Solid (2) zsh (2) Go (2) BigLinux (2) POO (2) LazyVim (2) gource (2) homeOffice (2) html (2) openswoole (2) artificialintelligence (2) security (2) bancodedados (2) tailwind (2) noticias (2) livros (2) Transcribe (2) ElonMusk (2) redis (2) claude (2) ArchLinux (2) java (2) saude (1) seguranca (2) auth (2) cron (2) phpunit (2) kube (2) multiple_authen (2) policia (2) neovim (2) golang (2) Diagramas (1) boot (1) haru (1) dracula (1) TrabalhoEmEquipe (1) Brasil (1) queue (1) agi (1) llama (1) hotfix (1) economia (1) transcription (1) cache (1) Amazon (1) October (1) lumen (1) Hyperf (1) replication (1) faceapp (1) vala (1) cloudstack (1) rpi (1) apple (1) oracle (1) iode (1) ffaa (1) vpn (1) MeioAmbiente (1) firefox (1) composer (1) scheduling (1) Asahi (1) pendrive (1) microservice (1) front (1) cor (1) auth (1) modelagemdedados (1) k8s (1) gasolina (1) wsl2 (1) csv (1) soap (1) piada (1) KubeCon (1) zorin-os (1) spring-boot (1) backup (1) playwright (1) Deepin (1) storage (1) benchmark (1) networking (1) Swoole (1) biologia (1) node-red (1) LETSENCRYPT (1) Grunt (1) guard (1) tensorflow (1) bootstrap (1) nuance (1) historia (1) dropbox (1) traefik (1) bug (1) akitando (1) llm (1) htm (1) transformers (1) cavalotroia (1) odd (1) m1 (1) Error (1) cinnamon (1) repmgr (1) federal (1) ruby (1) AppSec (1) orm (1) ArquiteturaDeSoftware (1) Passwordless (1) memcached (1) flow (1) compression (1) athena (1) front (1) wine (1) covid19 (0) services (1) phpjasper (1) models (1) kali-linux (1) geojson (1) yarn (1) picpay (1) Monolith (1) banco (1) PNPM (1) Desenvolvedor (1) Structurizr (1) symfony (1) presenter (1) lider (1) Lideranca (1) Hackers (1) Bots (1) pytorch (1) nuxt (1) liquid (1) ec2 (1) transaction (1) c4 (1) rancher (1) algoritimo (1) Observability (1) Elasticsearch (1) translate (1) certbot (1) Oh My Zsh (1) ibm (1) escopos (1) usb (1) ckeditor (1) API_KEY_GOOGLE_MAPS (1) Manjaro (1) vicuna (1) coding (1) rust (1) markdown (1) JasperReports (1) Fibonacci (1) community (1) Samurai (1) payment (1) messaging (1) Jesus (1) flutter (1) Migration (1) workflow (1) cqrs (1) kitematic (1) geospacial (1) yeshua (1) data (1) sonarqube (1) Axios (1) pipelines (1) Mozilla (1) kvm (1) GitOps (1) sqlite (1) podcast (1) n8n (1) LaravelFilament (1) God (1) DesenvolvimentoProfissional (1) sw (1) bigtech (1) postgres (1) NoCookies (1) LeetCode (1) governancadedados (1) prf (1) nosql (1) linkedin (1) documentation (1) brain (1) adb (1) nvidia (1) host (1) ecommerce (1) c4-models (1) altadisponibilidade (1) octane (1) lucena (1) http (1) TypeScript (1) chatgpt (1) idiomas (1) eventdrive (1) uuid (1) restfull (1) aplicativo (1) optimization (1) mapas (1) Fetch (1) collections (1) RustLang (1) matematica (1) Filament (1) compactar (1) paypal (1) microg (1) forcas armadas (1) militar (1) fullsta (1) smartphones (1) automacao (1) Monitor (1) zend (1) spaceship (1) PKCE (1) l2tp (1) Glacier (1) laraveloctane (1) Deus (1) binaural (1) gpt (1) bolsonaro (1) privacidade (1) OOD (0) controllers (0)

New Articles



Get Latest Updates by Email