Index: org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/legend/impl/AbstractVectorialLegend.java =================================================================== --- org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/legend/impl/AbstractVectorialLegend.java (revisiĆ³n: 41810) +++ org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/legend/impl/AbstractVectorialLegend.java (copia de trabajo) @@ -38,7 +38,6 @@ import org.cresques.cts.IProjection; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import org.gvsig.compat.CompatLocator; import org.gvsig.compat.print.PrintAttributes; import org.gvsig.fmap.dal.exception.DataException; @@ -72,6 +71,7 @@ import org.gvsig.fmap.mapcontext.rendering.symbols.CartographicSupport; import org.gvsig.fmap.mapcontext.rendering.symbols.IMultiLayerSymbol; import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol; +import org.gvsig.i18n.Messages; import org.gvsig.tools.ToolsLocator; import org.gvsig.tools.dispose.DisposableIterator; import org.gvsig.tools.dynobject.DynStruct; @@ -230,10 +230,19 @@ } it = featureSet.fastIterator(); + boolean nullGeomFound = false; // Iteration over each feature while (!cancel.isCanceled() && it.hasNext()) { Feature feat = (Feature) it.next(); Geometry geom = feat.getDefaultGeometry(); + if (geom==null) { + if (!nullGeomFound) { + // warn if null geometries are found, but only once for the whole loop + nullGeomFound = true; + LOG.error(Messages.getText("Null_geometry_found")); + } + continue; + } // Reprojection if needed if (coordTrans != null) { geom = geom.cloneGeometry();