Revision 63

View differences:

org.gvsig.sextante/trunk/org.gvsig.sextante.app/org.gvsig.sextante.app.algorithm/org.gvsig.sextante.app.algorithm.spatialjoin/src/main/java/org/gvsig/sextante/app/algorithm/spatialjoin/SpatiallyIndexedSpatialJoinOperation.java
91 91
					org.gvsig.fmap.geom.Geometry g2 = feat.getDefaultGeometry();
92 92
					Geometry g2Jts = GeometryUtil.geomToJTS(g2);
93 93
					double dist = gJts.distance(g2Jts);
94
					if (dist <= nearestDistance)
94
					if (dist <= nearestDistance) {
95 95
						nearestDistance = dist;
96
					}
96 97
					buildFeature(featureInput, feat, new Double(nearestDistance), g);
97 98
					continue;
98 99
				}
......
102 103
					org.gvsig.fmap.geom.Geometry g2 = itGeom.next();
103 104
					Geometry g2Jts = GeometryUtil.geomToJTS(g2);
104 105
					double dist = gJts.distance(g2Jts);
105
					if (dist <= nearestDistance)
106
					if (dist <= nearestDistance) {
106 107
						nearestDistance = dist;
108
					}
107 109
				    buildFeature(featureInput, feat, new Double(nearestDistance), g);
108 110
				}
109 111
			}
......
114 116
			Sextante.addErrorToLog(e);
115 117
		}
116 118
		
117
		//IFeature joinedFeature = createFeature(g, sourceIndex, targetIndex,nearestDistance);
118

  
119
		return null;
119
		return lastEditFeature;
120 120
	}
121 121
	
122 122
	/**
......
129 129
	 */
130 130
	private void buildFeature(Feature feat1, Feature feat2, Object value, org.gvsig.fmap.geom.Geometry g) throws DataException {
131 131
		EditableFeature outFeat = persister.getOutputFeatureStore().createNewFeature();
132
		int sizeFeat1 = feat1.getType().size();
132
		int sizeFeat1 = feat1.getType().size() - 1;
133 133
		
134 134
		for (int i = 0; i < sizeFeat1; i++) 
135 135
			outFeat.set(i, feat1.get(i));
136 136
		
137
		for (int i = sizeFeat1; i < sizeFeat1 + feat2.getType().size(); i++) 
137
		for (int i = sizeFeat1; i < sizeFeat1 + feat2.getType().size() - 1; i++) 
138 138
			outFeat.set(i, feat2.get(i - sizeFeat1));
139 139
		
140
		outFeat.set(outFeat.getType().size() - 1, value);
140
		outFeat.set(outFeat.getType().size() - 2, value);
141 141
		try {
142 142
			persister.addFeature(outFeat, g);
143 143
		} catch (CreateGeometryException e) {
org.gvsig.sextante/trunk/org.gvsig.sextante.app/org.gvsig.sextante.app.algorithm/org.gvsig.sextante.app.algorithm.spatialjoin/src/main/java/org/gvsig/sextante/app/algorithm/spatialjoin/SpatialJoinAlgorithm.java
27 27
import org.gvsig.fmap.dal.feature.FeatureSet;
28 28
import org.gvsig.fmap.dal.feature.FeatureStore;
29 29
import org.gvsig.fmap.dal.feature.FeatureType;
30
import org.gvsig.sextante.app.algorithm.spatialjoin.SpatiallyIndexedSpatialJoinOperation;
30 31
import org.gvsig.sextante.app.extension.core.gvGeoAlgorithm;
31 32
import org.gvsig.sextante.app.extension.core.gvVectorLayer;
32 33

  
......
104 105

  
105 106
		//Builds a new JSIRTree index. To do that we have to replace the default index and 
106 107
		//when the operation has finished then it restores the original default index 
107
		String indexName = lyr2.getFieldName(0);
108
		String indexName = "GEOMETRY";
109
		
108 110
		try {
111
			indexName = lyr2.getFeatureStore().getDefaultFeatureType().getDefaultGeometryAttributeName();
109 112
			FeatureAttributeDescriptor fat = lyr2.getFeatureStore().getDefaultFeatureType().getAttributeDescriptor(indexName);
110 113
			String defaultIndex = dataManager.getDefaultFeatureIndexProviderName(fat.getDataType());
111 114
			dataManager.setDefaultFeatureIndexProviderName(fat.getDataType(), "JSIRTree");
......
132 135
						"DIST", 
133 136
						Double.class);
134 137

  
135
				SpatiallyIndexedSpatialJoinOperation operation = new SpatiallyIndexedSpatialJoinOperation(lyr2, indexName);
138
				SpatiallyIndexedSpatialJoinOperation operation = new SpatiallyIndexedSpatialJoinOperation(lyr2, indexName + "_idx");
136 139
				operation.setProgressModel(this);
137 140
				operation.computesGeometryOperation(lyr1.getFeatureStore(), 
138 141
						outFeatStore, 
139
						Summary, 
142
						attrNames, 
140 143
						selectedGeom, 
141 144
						true);
142 145
			}

Also available in: Unified diff