Opened 6 years ago

Closed 5 years ago

#11785 closed (fixed)

Invalid error reporting when importing MapInfo layer with Unknown type

Reported by: esizikov Owned by: nobody
Component: GIS Version: 1.1
Severity: Keywords:
Cc: Triage Stage: Design decision needed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: UI/UX:

Description

When going to import a spatial data from an MapInfo file I've stacked with an error message like following:

...
  File "../django/contrib/gis/utils/layermapping.py", line 293, in check_layer
    raise LayerMapError('Invalid mapping geometry; model has %s, feature has %s.' % (fld_name, ltype))
django.contrib.gis.utils.layermapping.LayerMapError: Invalid mapping geometry; model has PolygonField, feature has Polygon.

It took about 2 hours to figure out what could be wrong here, as the error message looks like a nonsense (Polygon != Polygon)

Looking through the code I've found a possible reason of such a misunderstanding:

  • layermapping.py

    old new  
    290290                # Making sure that the OGR Layer's Geometry is compatible.
    291291                ltype = self.layer.geom_type
    292292                if not (gtype == ltype or self.make_multi(ltype, model_field)):
    293                     raise LayerMapError('Invalid mapping geometry; model has %s, feature has %s.' % (fld_name, gtype))
     293                    raise LayerMapError('Invalid mapping geometry; model has %s, feature has %s.' % (fld_name, ltype))
    294294
    295295                # Setting the `geom_field` attribute w/the name of the model field
    296296                # that is a Geometry.

After that been done I've got a meaningful error like this one:

  File "../django/contrib/gis/utils/layermapping.py", line 293, in check_layer
    raise LayerMapError('Invalid mapping geometry; model has %s, feature has %s.' % (fld_name, ltype))
django.contrib.gis.utils.layermapping.LayerMapError: Invalid mapping geometry; model has PolygonField, feature has Unknown.

It became clear to me that LayerMapping complains to import from a MapInfo layer with Unknown geometry type. That's what I was looking for 2 hours!

However, that "... model has PolygonField, feature has Unknown." doesn't looks polished too. Could someone provide a better fix?

Change History (2)

comment:1 Changed 5 years ago by russellm

  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset
  • Triage Stage changed from Unreviewed to Design decision needed

comment:2 Changed 5 years ago by jbronn

  • Resolution set to fixed
  • Status changed from new to closed

(In [12880]) Fixed #11785 -- Clarified error message when the layer geometry type doesn't match the model field. Thanks, esizikov for bug report and initial patch.

Note: See TracTickets for help on using tickets.
Back to Top