On 05/25/2013 12:37 PM, Even Rouault wrote:
If you output to a regular file, the GML driver will generate a .xsd file with the schema alongside the GML file. If you output to /vsistdout/ directly, then of course it is not possible to generate the .xsd file. If you don't want to write on the filesystem, an alternative would be to output to /vsimem/ so that you can read both files afterwards. Another way if you want to use the .xsd generated by the GML driver and keep the advantage of using streaming to vsistdout, would be to: 1) Output to /vsimem/ , create the layer definition, but write 0 feature. You just fetch the .xsd that can be used for DescribeFeatureType 2) Output to /vsistdout/ with all the needed features.

so, if I understand correctly:

my $postgis = Geo::OGR::Open($Datasource);
my $postgis_layer = $postgis->Layer($Name);

my $vsi = '/vsimem/';
my $gml = Geo::OGR::Driver('GML')->Create($vsi, {
    TARGET_NAMESPACE => 'http://www.opengis.net/wfs', PREFIX => 'wfs' });
my $gml_layer = $gml->CreateLayer($Name);

my $schema = $postgis_layer->GetLayerDefn;
for my $i (0..$schema->GetFieldCount-1) {
    $gml_layer->CreateField($schema->GetFieldDefn($i));
}

# at this point there should be a .xsd in /vsimem/, which could/should be used for the DescribeFeatureType request

I'll try this later. Now I'm happy with the hack.

Ari

_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to