/*! \page read_write_vector Reading and writing a vector layer The code here does not have any warranty. It is recommended that before using any of this code, you look into it and try to understand what it does, what input it needs, etc. Do not blindly execute anything! The program below reads a vector layer from PostGIS database and writes it back with another name. Some schema manipulation is done for illustration. \code use strict; use warnings; use Geo::GDAL; my $db = Geo::OGR::Open('PG:dbname=test'); my $input = $db->Layer('input'); my $schema = {map {$_->{Name} => $_} @{$input->Schema->{Fields}}}; my %col; my %geom; $input->ResetReading(); while (my $feature = $input->GetNextFeature()) { my $fid = $feature->FID; $col{$fid} = $feature->Field('col'); my $points = $feature->Geometry->Points; $geom{$fid} = $points; } my $output = $db->CreateLayer( Name => 'output', Fields => [ { Name => 'col', Type => $schema->{col}{Type} }, { Name => 'geom', Type => $schema->{geom}{Type}, SpatialReference => $schema->{geom}{SpatialReference} } ], Options => { OVERWRITE => 'YES' } ); for my $fid (sort {$a <=> $b} keys %col) { $output->InsertFeature({ col => $col{$fid}, geom => {Points => $geom{$fid}} }); } \endcode */