Revision 28790

View differences:

branches/v2_0_0_prep/libraries/libFMap_dalfile/src/org/gvsig/fmap/dal/store/shp/utils/SHPMultiLine.java
56 56
import org.gvsig.fmap.geom.primitive.GeneralPathX;
57 57
import org.gvsig.fmap.geom.primitive.Point;
58 58
import org.gvsig.fmap.geom.primitive.Surface;
59
import org.gvsig.fmap.geom.primitive.impl.Point2D;
59 60
import org.gvsig.fmap.geom.util.Converter;
60 61
import org.slf4j.Logger;
61 62
import org.slf4j.LoggerFactory;
......
287 288
		PathIterator theIterator = g.getPathIterator(null, Converter.FLATNESS); //polyLine.getPathIterator(null, flatness);
288 289
		double[] theData = new double[6];
289 290
		int numParts = 0;
291
		Point2D pFirst=null;
290 292
		while (!theIterator.isDone()) {
291 293
			//while not done
292 294
			int theType = theIterator.currentSegment(theData);
......
304 306
						arrayPoints = new ArrayList();
305 307
						arrayParts.add(new Integer(0));
306 308
					} else {
309
						if (m_type==SHP.POLYGON2D ||
310
								m_type==SHP.POLYGON3D ||
311
								m_type==SHP.POLYGONM)
312
							arrayPoints.add(new Point2D(pFirst.getX(),
313
									pFirst.getY()));
307 314
						arrayParts.add(new Integer(arrayPoints.size()));
308 315
					}
309 316

  
310 317
					numParts++;
311

  
318
					pFirst=new Point2D(theData[0], theData[1]);
312 319
					try {
313 320
						arrayPoints.add(geomManager.createPoint(theData[0], theData[1], SUBTYPES.GEOM2D));
314 321
					} catch (CreateGeometryException e1) {
......
342 349
//					System.out.println("SEG_CLOSE");
343 350

  
344 351
					// A?adimos el primer punto para cerrar.
345
				Point firstPoint = (Point) arrayPoints.get(0);
346
					try {
347
						arrayPoints.add(geomManager.createPoint(firstPoint.getX(),
348
								firstPoint.getY(), SUBTYPES.GEOM2D));
349
					} catch (CreateGeometryException e) {
350
						logger.error("Error creating a point", e);
351
					}
352
					arrayPoints.add(new Point2D(pFirst.getX(),
353
							pFirst.getY()));
352 354

  
353 355
					break;
354 356
			} //end switch
branches/v2_0_0_prep/libraries/libFMap_dalfile/src/org/gvsig/fmap/dal/store/shp/utils/SHPPolygon.java
64 64
public class SHPPolygon extends SHPMultiLine {
65 65
	private static final GeometryManager geomManager = GeometryLocator.getGeometryManager();
66 66
	private static final Logger logger = LoggerFactory.getLogger(SHPPolygon.class);
67
	
67

  
68 68
	/**
69 69
	 * Crea un nuevo SHPPolygon.
70 70
	 */
......
220 220
			buffer.putDouble(points[t].getY());
221 221
		}
222 222

  
223
		   if (m_type == SHP.POLYGON3D) {
224
		   double[] zExtreame = SHP.getZMinMax(zs);
225
		   if (Double.isNaN(zExtreame[0])) {
226
		       buffer.putDouble(0.0);
227
		       buffer.putDouble(0.0);
228
		   } else {
229
		       buffer.putDouble(zExtreame[0]);
230
		       buffer.putDouble(zExtreame[1]);
231
		   }
232
		   for (int t = 0; t < npoints; t++) {
233
		       double z = zs[t];
234
		       if (Double.isNaN(z)) {
235
		           buffer.putDouble(0.0);
236
		       } else {
237
		           buffer.putDouble(z);
238
		       }
239
		   }
240
		   }
223
		if (m_type == SHP.POLYGON3D) {
224
			double[] zExtreame = SHP.getZMinMax(zs);
225
			if (Double.isNaN(zExtreame[0])) {
226
				buffer.putDouble(0.0);
227
				buffer.putDouble(0.0);
228
			} else {
229
				buffer.putDouble(zExtreame[0]);
230
				buffer.putDouble(zExtreame[1]);
231
			}
232
			for (int t = 0; t < npoints; t++) {
233
				double z = zs[t];
234
				if (Double.isNaN(z)) {
235
					buffer.putDouble(0.0);
236
				} else {
237
					buffer.putDouble(z);
238
				}
239
			}
240
		}
241 241

  
242 242
		if ((m_type == SHP.POLYGONM) ||
243 243
				(m_type == SHP.POLYGON3D)) {

Also available in: Unified diff