[gdal-dev] Error when trying to create layer in FileGDB

Casper Børgesen caboe at sdfe.dk
Wed Jul 17 04:22:30 PDT 2019


Hi Even,

Thanks for checking it out. I have a hard time seeing the joys of closed source software, but I continue to be tied to it and all its frustrations.

There definitely is something going on with the SRS even though OGR reports it as being the same:

>>> l2 = ds.GetLayerByIndex(0)
>>> p2 = l2.GetSpatialRef()
>>> p = srs.SpatialReference()
>>> p.ImportFromEPSG(25832)
>>> p.IsSame(p2)
1

If have done a little digging in ArcCatalog and it also complains about invalid spatial reference when I try to move the "Polygon" feature class to a feature dataset created by OGR with the above "p" SRS. I can't see the differences in ArcCatalog regarding the SRS but the domains are different. But again it is closed source so precisely where the difference is between the two, it won't tell me.

Thanks again!

Regards, Casper

 
-----Original Message-----
From: Even Rouault <even.rouault at spatialys.com> 
Sent: 17. juli 2019 10:51
To: gdal-dev at lists.osgeo.org
Cc: Casper Børgesen <caboe at sdfe.dk>
Subject: Re: [gdal-dev] Error when trying to create layer in FileGDB

Casper,

I can reproduce. I tried a few things (including adding at hand definitions 
for MOrigin, MScale, MPrecision and LatestWKID that appear in the XML 
definition of the existing layer & feature dataset), but without success. It 
appears this is specific to creating the layer with FEATURE_DATASET=Data. 
Without that, it works. And there must be something specific to the SRS of the 
Data FeatureDataset too, because we have a test in the autotest suite that 
works:

    srs = osr.SpatialReference()
    srs.SetFromUserInput("WGS84")

    ds = ogrtest.fgdb_drv.CreateDataSource('tmp/test.gdb')
    ds.CreateLayer('layer1', srs=srs, geom_type=ogr.wkbPoint, 
options=['FEATURE_DATASET=featuredataset'])
    ds.CreateLayer('layer2', srs=srs, geom_type=ogr.wkbPoint, 
options=['FEATURE_DATASET=featuredataset'])
    ds = None

The joys of working with closed source software...

Even

> Hi all,
> 
> I am trying to create a layer in an existing feature dataset in an existing
> File Geodatabase (FileGDB, not Open) using python and GDAL/OGR from OSGeo.
> 
> The layout of the FileGDB is:
> 
> MyData.gdb
>      Data
>           Polygon
> 
> The following is my code attempt:
> >>> from osgeo import ogr
> >>> ds = ogr.Open('MyData.gdb', 1)
> >>> l = ds.CreateLayer('Line', None, ogr.wkbLineString,
> >>> options=['FEATURE_DATASET=Data'])
> ERROR 1: Failed at creating table for \Data\Line (Invalid spatial
> reference.)
> Yes I didn't provide a spatial reference, but if None is invalid I might as 
well pick one used by an existing layer inside the feature dataset:
> >>> l2 = ds.GetLayerByIndex(0)
> >>> p2 = l2.GetSpatialRef()
> >>> l2.GetName()
> 
> 'Polygon'
> 
> >>> l = ds.CreateLayer('Line', p2, ogr.wkbLineString,
> >>> options=['FEATURE_DATASET=Data'])
> ERROR 1: Failed at creating table for \Data\Line (Invalid spatial
> reference.)
> 
> In both cases I get the same error, is this to be expected?
> 
> Regards, Casper


-- 
Spatialys - Geospatial professional services
http://www.spatialys.com


More information about the gdal-dev mailing list