wiki:Grass7/VectorLib/OGRInterface

Version 65 (modified by martinl, 12 years ago) ( diff )

--

OGR interface in GRASS 7

See also examples from GRASS User Wiki.

Direct OGR read access

Capability to read OGR layers directly without linking them via v.external.

Example 1: Shapefile 'busstopsall.shp' located in directory '~/shapefiles'

v.info map=~/shapefiles/@OGR layer=busstopsall

Example 2: PostGIS table 'busstopsall' located in database 'pgis_nc'.

v.extract input=PG:dbname=pgis_nc@OGR layer=busstopsall where="STREET_1 = 'William Moore Dr.'" output=b1

List of modules which supports direct OGR read access ((*) indicates work in progress):

Direct OGR write access

Capability to write OGR layers directly without need to store data in the native GRASS vector format and then exporting data using v.out.ogr.

Testcase:

Scenario 1 (not implemented)

Use parameters output for output OGR datasource and olayer for OGR layer. Example:

# input: GRASS data
# output: PostGIS database
v.extract input=bridges where="BRIDGE_NUM=417" output=bridges_417

# input: PostGIS layer, ESRI Shapefile
# output: PostGIS database
v.select ainput=PG:dbname=gisdb@OGR alayer=zeleznice \
 binput=shps@OGR blayer=obce operator=intersects \
 output=PG:dbname=gisdb@OGR olayer=obce_zelez

Status: not planned to be implemented

Scenario 2 (implemented)

Design v.external.out (similarly to r.external.out)

# input: GRASS data
# output: PostGIS database
v.external.out dsn=PG:dbname=pgis_nc format=PostgreSQL
v.extract input=bridges where="BRIDGE_NUM=417" output=bridges_417

# input: PostGIS layer, ESRI Shapefile
# output: PostGIS database
v.select ainput=PG:dbname=pgis_nc@OGR alayer=roadsmajor \
 binput=~/shapefiles@OGR blayer=boundary_municp operator=intersects \
 output=municp_roads

Status: implemented grass/trunk/vector/v.external.out

Tasks

  • Attribute table (write) access for OGR-linked vectors (direct or linked by v.external)

Changes in vector library

See write_ogr.c

  • New functions
    • V1_write_line_ogr(), V2_write_line_ogr()
    • V1_rewrite_line_ogr(), V2_rewrite_line_ogr()
    • V1_delete_line_ogr(), V2_delete_line_ogr()
  • Vect_build_ogr() support all build levels - r48960
  • Implement V2__add_line_to_topo_ogr() - r49178

Updating GRASS modules

Current status

Module Read access (link) Direct read access Direct write access
v.build Y N N
v.build.all Y N N
v.clean Y Y N
v.edit Y Y Y
v.extract Y Y Y
v.out.dxf Y Y N
v.select Y Y Y
v.random Y Y Y
v.voronoi Y Y N
v.what Y Y X
v.what.rast Y Y Y
v.what.vect Y Y Y

Optimalization

Simple test of rendering speed

See r47875

  • vector map 'bridges' (points=10938)

d.vect bridges type=point

Native:

real    0m0.400s
user    0m0.388s
sys     0m0.008s

Linked PostGIS layer:

real    0m0.828s
user    0m0.568s
sys     0m0.016s

(before r47875)

real    0m5.850s
user    0m1.860s
sys     0m0.464s
  • vector map 'roadsmajor' (lines=355)

d.vect roadsmajor type=line

Native:

real    0m0.103s
user    0m0.092s
sys     0m0.008s

Linked PostGIS layer:

real    0m0.521s
user    0m0.128s
sys     0m0.028s
  • vector map 'urbanarea' (areas=666)

d.vect urbanarea type=centroid,area

Native:

real    0m0.540s
user    0m0.520s
sys     0m0.016s

Linked PostGIS layer:

real    0m1.236s
user    0m0.736s
sys     0m0.068s

Related OGR tickets

Note: See TracWiki for help on using the wiki.