Revision 15669

View differences:

trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/drivers/shp/IndexedShpDriver.java
299 299
							j++;
300 300
						}
301 301
					} else {
302
						elShape.lineTo(p.x, p.y);
302
						if (i==numPoints-1){
303
							elShape.closePath();
304
						}else{
305
							elShape.lineTo(p.x, p.y);
306
						}
303 307
					}
304 308
				}
305 309

  
......
374 378
						j++;
375 379
					}
376 380
				} else {
377
					elShape.lineTo(p.x, p.y);
381
					if (i==numPoints-1){
382
						elShape.closePath();
383
					}else{
384
						elShape.lineTo(p.x, p.y);
385
					}
378 386
				}
379 387
			}
380 388

  
trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/drivers/WKBParser2.java
1 1
/*
2 2
 * WKBParser.java
3
 * Based in 
3
 * Based in
4 4
 * PostGIS extension for PostgreSQL JDBC driver - Binary Parser
5
 * 
5
 *
6 6
 * NOTA: Es posible que lo mejor sea crear un PostGisGeometry que implemente
7 7
 * la interfaz IGeometry, y as? nos sirve de base para tener IGeometries
8 8
 * que encapsulan otras posibles geometr?as. Por ejemplo, un JTSGeometry.
9 9
 * De esta forma, un driver no necesitar?a reescribirse.
10
 * 
10
 *
11 11
 * (C) 2005 Markus Schaber, schabios@logi-track.com
12
 * 
12
 *
13 13
 * This library is free software; you can redistribute it and/or modify it under
14 14
 * the terms of the GNU Lesser General Public License as published by the Free
15 15
 * Software Foundation, either version 2.1 of the License.
16
 * 
16
 *
17 17
 * This library is distributed in the hope that it will be useful, but WITHOUT
18 18
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
19 19
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
20 20
 * details.
21
 * 
21
 *
22 22
 * You should have received a copy of the GNU Lesser General Public License
23 23
 * along with this library; if not, write to the Free Software Foundation, Inc.,
24 24
 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA or visit the web at
25 25
 * http://www.gnu.org.
26
 * 
26
 *
27 27
 * $Id$
28 28
 */
29 29
package com.iver.cit.gvsig.fmap.drivers;
......
48 48
/**
49 49
 * Parse binary representation of geometries. Currently, only text rep (hexed)
50 50
 * implementation is tested.
51
 * 
51
 *
52 52
 * It should be easy to add char[] and CharSequence ByteGetter instances,
53 53
 * although the latter one is not compatible with older jdks.
54
 * 
54
 *
55 55
 * I did not implement real unsigned 32-bit integers or emulate them with long,
56 56
 * as both java Arrays and Strings currently can have only 2^31-1 elements
57 57
 * (bytes), so we cannot even get or build Geometries with more than approx.
58 58
 * 2^28 coordinates (8 bytes each).
59
 * 
59
 *
60 60
 * @author markus.schaber@logi-track.com
61
 *  
61
 *
62 62
 */
63 63
public class WKBParser2 {
64 64

  
......
67 67

  
68 68
    /**
69 69
     * Parse a binary encoded geometry.
70
     * 
70
     *
71 71
     * Is synchronized to protect offset counter. (Unfortunately, Java does not
72 72
     * have neither call by reference nor multiple return values.)
73 73
     */
......
76 76
        ByteBuffer buf = ByteBuffer.wrap(value);
77 77
        return parseGeometry(buf);
78 78
    }
79
    
79

  
80 80
    protected void parseTypeAndSRID(ByteBuffer data)
81 81
    {
82 82
        byte endian = data.get(); //skip and test endian flag
......
96 96
        if (gHaveS) {
97 97
            srid = data.getInt();
98 98
        }
99
        
99

  
100 100
    }
101 101

  
102 102

  
......
188 188
    /**
189 189
     * Parse an Array of "slim" Points (without endianness and type, part of
190 190
     * LinearRing and Linestring, but not MultiPoint!
191
     * 
191
     *
192 192
     * @param haveZ
193 193
     * @param haveM
194 194
     */
......
238 238
	        FPolygon2D[] rings = new FPolygon2D[count];
239 239
	        for (int i = 0; i < count; i++) {
240 240
	            rings[i] = parseLinearRing(data, haveZ, haveM);
241
					
241

  
242 242
	        }
243 243
	        GeneralPathX shape=(GeneralPathX)getGeneralPathX(rings);
244
	        shape.closePath();
244 245
			return new FPolygon2D(shape);
245 246
	 }
246 247
    private FPolyline2D parseMultiLineString(ByteBuffer data) {
247 248
        GeneralPathX gp = parseGeneralPath(data);
248 249
        // GeneralPathX shape=getGeneralPathX(strings);
249
		
250

  
250 251
        // parseGeometryArray(data, strings);
251 252
        return new FPolyline2D(gp);//strings[0]; //new MultiLineString(strings);
252 253
    }
......
268 269
            for (int i = 0; i < count; i++) {
269 270
                result[i] = parsePoint(data, haveZ, haveM);
270 271
            }
271
            return result; */            
272
            return result; */
272 273
            /* FPoint2D p = parsePoint(data, gHaveZ, gHaveM);
273 274
            gp.moveTo(p.getX(), p.getY());
274 275
            for (int j = 1; j < count2; j++) {
275 276
                p = parsePoint(data, gHaveZ, gHaveM);
276 277
                gp.lineTo(p.getX(), p.getY());
277 278
            } */
278
            
279

  
279 280
            gp.moveTo(points[0].getX(), points[0].getY());
280 281
            for (int j = 1; j< points.length; j++)
281 282
            {
282 283
                gp.lineTo(points[j].getX(), points[j].getY());
283
            } 
284
            
284
            }
285

  
285 286
            // strings[i] = parseLineString(data, gHaveZ, gHaveM);
286 287
        }
287 288
		return gp;
......
300 301
	        for (int j = 0; j < countRings; j++) {
301 302
	            // rings[j] = parseLinearRing(data, gHaveZ, gHaveM);
302 303
	            FPoint2D[] points = parsePointArray(data, gHaveZ, gHaveM);
303
	            
304

  
304 305
	            gp.moveTo(points[0].getX(), points[0].getY());
305 306
	            for (int k = 1; k< points.length; k++)
306 307
	            {
307
	            	gp.lineTo(points[k].getX(), points[k].getY());
308
	            	if (k==points.length-1){
309
	            		gp.closePath();
310
	            	}else{
311
	            		gp.lineTo(points[k].getX(), points[k].getY());
312
	            	}
313

  
308 314
	            }
309
	            
315

  
310 316
	        }
311 317
	        // GeneralPathX shape=(GeneralPathX)getGeneralPathX(rings);
312
            
318

  
313 319
        }
314 320
		 // GeneralPathX shape=getGeneralPathX(polys);
315 321

  

Also available in: Unified diff