sexta-feira, agosto 09, 2013

PostGIS: Snapping points to lines

Esta é uma releitura da postagem GRASS: Snapping points to lines utilizando a extensão PostGIS, desta forma ficou bem mais simples e rápida a solução, confira:


Consulta no plugin Rt SQL Layer (QGIS)

Resultado no QGIS (Layer nearpoints)

domingo, agosto 04, 2013

Renomeando e Ordenando Campos de um Shapefile via Terminal

Quando trabalhamos com dados vetoriais, frequentemente temos que renomear e ordenar os campos que compõem um arquivo .dbf de um shapefile. O que muita gente não sabe é que isso pode ser feito sem a necessidade de abrir um software de SIG, utilizando a biblioteca OGR através do seguinte comando:
ogr2ogr -a_srs <EPSG:num> <novo_shapefile> <shapefile> -sql "SELECT campo1 AS novo_campo1, campo_2 AS novo_campo2, ..., campoN AS novo_campoN FROM shapefile"
Isto pode ser útil principalmente se o arquivo tiver muitos megabytes (MB), pois este processo pode ser bem demorado, independente do software que você esteja utilizando. Vejamos o exemplo a seguir:

Primeiro utilizando o comando ogrinfo, para obter as informações necessárias sobre o shapefile munipb.shp:
ogrinfo -summary munipb.shp munipb
INFO: Open of `munipb.shp'
      using driver `ESRI Shapefile' successful.

Layer name: munipb
Geometry: Polygon
Feature Count: 224
Extent: (-38.764870, -8.302541) - (-34.793335, -6.026173)
Layer SRS WKT:
GEOGCS["GCS_South_American_1969",
    DATUM["South_American_Datum_1969",
        SPHEROID["GRS_1967_Modified",6378160.0,298.25]],
    PRIMEM["Greenwich",0.0],
    UNIT["Degree",0.0174532925199433]]
NOMEMUNIC: String (50.0)
ARp: Integer (10.0)
UF: String (2.0)
ID_UF: Real (11.0)
REGIAO: String (20.0)
MESOREGIAO: String (50.0)
MICROREGIA: String (50.0)
geocode: String (12.0)
Area_km2: Real (6.2)
per_km: Real (6.2)
id_: Integer (10.0)
O novo shapefile (municipios.shp) será reestruturado com os seguintes campos fid (campo do tipo autoincremento criado automaticamente), geocodigo (geocode), nome (NOMEMUNIC),  micro (MICROREGIA), meso (MESOREGIAO), e area_km2 (Area_km2):
ogr2ogr -a_srs EPSG:4291 municipios.shp munipb.shp -sql "SELECT fid, geocode AS geocodigo, nomemunic AS nome, microregia AS micro, mesoregiao AS meso, area_km2 AS area_km2 FROM munipb"
O resultado pode ser visto com o comando ogrinfo ou em qualquer software de SIG (Figura 1):
ogrinfo -summary municipios.shp municipios
INFO: Open of `municipios.shp'
      using driver `ESRI Shapefile' successful.

Layer name: municipios
Geometry: Polygon
Feature Count: 224
Extent: (-38.764870, -8.302541) - (-34.793335, -6.026173)
Layer SRS WKT:
GEOGCS["SAD69",
    DATUM["South_American_Datum_1969",
        SPHEROID["GRS_1967",6378160,298.247167427]],
    PRIMEM["Greenwich",0],
    UNIT["Degree",0.017453292519943295]]
fid: Integer (10.0)
geocodigo: String (12.0)
nome: String (50.0)
micro: String (50.0)
meso: String (50.0)
area_km2: Real (6.2)
Figura 1 - Tabela reestruturada aberta no QGIS