Home Modelagem e mapeamento automáticos de um shapefile no GeoDjango
Post
Cancelar

Modelagem e mapeamento automáticos de um shapefile no GeoDjango

Um recurso muito útil e que pode economizar tempo e trabalho quando você está fazendo a modelagem de dados geográficos no GeoDjango é automatizar a escrita do modelo e do dicionário de mapeamento.

Já fiz essa escrita de forma manual algumas vezes, mas hoje digo seguramente que, independentemente da quantidade de campos, é muito melhor automatizar o processo, fazendo apenas um ou outro ajuste antes de executar a migração e a importação do shape.

Você pode fazer isso com o ogrinspect. A sintaxe é essa:

1
python manage.py ogrinspect [options] <data_source> <model_name> [options]

No exemplo abaixo, vamos gerar de forma automática o modelo e o meapeamento de um shape de polígonos. São os bairros da cidade de João Pessoa. O shape está disponível aqui. Você precisa executar o comando na pasta raiz do seu projeto. Para manter as coisas organizadas, crie uma pasta data dentro da pasta do seu aplicativo e coloque os arquivos lá. Neste exemplo, a pasta do aplicativo é geo. No terminal, execute:

1
python manage.py ogrinspect geo\data\Bairros.shp Bairro --srid=4326 --mapping

A opção –srid define o sistema de referência espacial. A opção –mapping informa que queremos também o dicionário de mapeamento, para usarmos com o LayerMapping. O retorno deve ser algo parecido com isso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from django.contrib.gis.db import models

class Bairro(models.Model):
    bairro = models.CharField(max_length=100)
    cód = models.IntegerField()
    cod_loc = models.FloatField()
    bairro_1 = models.CharField(max_length=254)
    densidade = models.FloatField()
    perim_km = models.FloatField()
    area_km2 = models.FloatField()
    geom = models.PolygonField(srid=4326)

# Auto-generated `LayerMapping` dictionary for Bairro model
bairro_mapping = {
    'bairro': 'BAIRRO',
    'cód': 'CÓD',
    'cod_loc': 'Cod_loc',
    'bairro_1': 'Bairro_1',
    'densidade': 'Densidade',
    'perim_km': 'Perim_km',
    'area_km2': 'Area_km2',
    'geom': 'POLYGON',
}

É isso. Espero que seja útil.

Até mais.

Esta postagem está licenciada sob CC BY 4.0 pelo autor.