Revision 63
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