Revision 2204
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.swing/org.gvsig.vectorediting.swing.api/src/main/java/org/gvsig/vectorediting/swing/api/EditingContext.java | ||
---|---|---|
108 | 108 |
* @param value |
109 | 109 |
* @throws InvalidEntryException |
110 | 110 |
*/ |
111 |
public void setValue(EditingServiceParameter parameter, String value) throws InvalidEntryException;
|
|
111 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException;
|
|
112 | 112 |
|
113 | 113 |
public EditingService getActiveService(); |
114 | 114 |
|
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.swing/org.gvsig.vectorediting.swing.impl/src/main/java/org/gvsig/vectorediting/swing/impl/DefaultEditingContext.java | ||
---|---|---|
1254 | 1254 |
} |
1255 | 1255 |
|
1256 | 1256 |
@Override |
1257 |
public void setValue(EditingServiceParameter parameter, String value) throws InvalidEntryException { |
|
1258 |
Object obj = coerceInputParameter(parameter, value); |
|
1259 |
getActiveService().setValue(parameter, obj); |
|
1257 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
1258 |
if( value instanceof CharSequence){ |
|
1259 |
value = coerceInputParameter(parameter, value.toString()); |
|
1260 |
} else if( value instanceof Point) { |
|
1261 |
contextSymbolTable.addPoint((Point) value); |
|
1262 |
} |
|
1263 |
getActiveService().setValue(parameter, value); |
|
1260 | 1264 |
nextParameter(); |
1261 | 1265 |
} |
1262 | 1266 |
|
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.swing/org.gvsig.vectorediting.swing.impl/src/main/java/org/gvsig/vectorediting/swing/impl/DefaultEditingBehavior.java | ||
---|---|---|
147 | 147 |
} |
148 | 148 |
|
149 | 149 |
try { |
150 |
editingContext.getActiveService().setValue(point); |
|
150 |
//FIXME: Estar?a bien hacer esto |
|
151 |
editingContext.setValue(currentParam, point); |
|
152 |
// editingContext.getActiveService().setValue(point); |
|
151 | 153 |
} catch (VectorEditingException ex) { |
152 | 154 |
I18nManager i18nManager = ToolsLocator.getI18nManager(); |
153 | 155 |
editingContext.showConsoleMessage(i18nManager |
154 | 156 |
.getTranslation("invalid_option")); |
155 | 157 |
} |
156 | 158 |
|
157 |
editingContext.nextParameter(); |
|
159 |
// editingContext.nextParameter();
|
|
158 | 160 |
|
159 | 161 |
} else if (SwingUtilities.isRightMouseButton(e)) { |
160 | 162 |
|
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.swing/org.gvsig.vectorediting.swing.impl/src/main/java/org/gvsig/vectorediting/swing/impl/contextmenu/DistanceListener.java | ||
---|---|---|
19 | 19 |
public class DistanceListener extends MeasureListenerImpl { |
20 | 20 |
|
21 | 21 |
AcceptValueListener listener; |
22 |
private final String currentTool; |
|
23 | 22 |
|
24 |
public DistanceListener(MapControl mc, AcceptValueListener listener, String currentTool) {
|
|
23 |
public DistanceListener(MapControl mc, AcceptValueListener listener) { |
|
25 | 24 |
super(mc); |
26 | 25 |
this.listener = listener; |
27 |
this.currentTool = currentTool; |
|
28 | 26 |
} |
29 | 27 |
|
30 | 28 |
@Override |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.swing/org.gvsig.vectorediting.swing.impl/src/main/java/org/gvsig/vectorediting/swing/impl/contextmenu/DefaultEditingContextMenu.java | ||
---|---|---|
208 | 208 |
|
209 | 209 |
MapControl mapCtrl = context.getMapControl(); |
210 | 210 |
String currentTool = mapCtrl.getCurrentTool(); |
211 |
DistanceListener mli = new DistanceListener(mapCtrl, listener, currentTool);
|
|
211 |
DistanceListener mli = new DistanceListener(mapCtrl, listener); |
|
212 | 212 |
PolylineBehavior polylineBehavior = new PolylineBehavior(mli); |
213 | 213 |
mapCtrl.addBehavior("distance", polylineBehavior); |
214 | 214 |
|
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/pom.xml | ||
---|---|---|
10 | 10 |
<parent> |
11 | 11 |
<groupId>org.gvsig</groupId> |
12 | 12 |
<artifactId>org.gvsig.desktop</artifactId> |
13 |
<version>2.0.294</version>
|
|
13 |
<version>2.0.295-SNAPSHOT</version>
|
|
14 | 14 |
</parent> |
15 | 15 |
<url>https://devel.gvsig.org/sites/org.gvsig.vectorediting/${project.version}</url> |
16 | 16 |
<scm> |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.impl/src/main/java/org/gvsig/vectorediting/lib/impl/DefaultEditingProviderServices.java | ||
---|---|---|
28 | 28 |
import java.util.Map; |
29 | 29 |
import org.geotools.measure.AngleFormat; |
30 | 30 |
import org.gvsig.euclidean.EuclideanLine2D; |
31 |
import org.gvsig.expressionevaluator.Expression; |
|
32 |
import org.gvsig.expressionevaluator.ExpressionUtils; |
|
31 | 33 |
import org.gvsig.expressionevaluator.GeometryExpressionBuilder; |
32 | 34 |
import org.gvsig.fmap.dal.DALLocator; |
33 | 35 |
import org.gvsig.fmap.dal.DataManager; |
... | ... | |
622 | 624 |
GeometryExpressionBuilder builder = dalBuilder.expression(); |
623 | 625 |
String filter = builder.ST_Intersects(builder.geometry(buffer, mapContext.getProjection()), dalBuilder.geometry()).toString(); |
624 | 626 |
String sortBy = builder.ST_Distance(builder.geometry(buffer), dalBuilder.geometry()).toString(); |
627 |
Expression sortByExpression = ExpressionUtils.createExpression(sortBy); |
|
625 | 628 |
|
626 | 629 |
Feature f; |
627 |
f = store.findFirst(filter, sortBy, true); |
|
630 |
f = store.findFirst(filter, sortByExpression, true);
|
|
628 | 631 |
if (f != null) { |
629 | 632 |
geometry = f.getDefaultGeometry(); |
630 | 633 |
} |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.autopolygon/src/main/java/org/gvsig/vectorediting/lib/prov/autopolygon/AutopolygonEditingProvider.java | ||
---|---|---|
105 | 105 |
return list; |
106 | 106 |
} |
107 | 107 |
|
108 |
@Override |
|
109 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
110 |
validateAndInsertValue(parameter, value); |
|
111 |
} |
|
112 |
|
|
108 | 113 |
public void setValue(Object value) throws InvalidEntryException { |
109 | 114 |
EditingServiceParameter param = next(); |
110 | 115 |
validateAndInsertValue(param, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.editvertex/src/main/java/org/gvsig/vectorediting/lib/prov/editvertex/EditVertexEditingProvider.java | ||
---|---|---|
480 | 480 |
return parameters; |
481 | 481 |
} |
482 | 482 |
|
483 |
@Override |
|
484 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
485 |
validateAndInsertValue(parameter, value); |
|
486 |
} |
|
487 |
|
|
483 | 488 |
public void setValue(Object value) throws InvalidEntryException { |
484 | 489 |
EditingServiceParameter parameter = next(); |
485 | 490 |
validateAndInsertValue(parameter, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.internalpolygon/src/main/java/org/gvsig/vectorediting/lib/prov/internalpolygon/InternalPolygonEditingProvider.java | ||
---|---|---|
112 | 112 |
return list; |
113 | 113 |
} |
114 | 114 |
|
115 |
@Override |
|
116 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
117 |
validateAndInsertValue(parameter, value); |
|
118 |
} |
|
119 |
|
|
115 | 120 |
public void setValue(Object value) throws InvalidEntryException { |
116 | 121 |
EditingServiceParameter param = next(); |
117 | 122 |
validateAndInsertValue(param, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.scale/src/main/java/org/gvsig/vectorediting/lib/prov/scale/ScaleEditingProvider.java | ||
---|---|---|
403 | 403 |
|
404 | 404 |
|
405 | 405 |
|
406 |
@Override |
|
407 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
408 |
validateAndInsertValue(parameter, value); |
|
409 |
} |
|
410 |
|
|
406 | 411 |
public void setValue(Object value) throws InvalidEntryException { |
407 | 412 |
EditingServiceParameter param = next(); |
408 | 413 |
validateAndInsertValue(param, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.line/src/main/java/org/gvsig/vectorediting/lib/prov/line/LineEditingProvider.java | ||
---|---|---|
171 | 171 |
return parameters; |
172 | 172 |
} |
173 | 173 |
|
174 |
@Override |
|
175 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
176 |
validateAndInsertValue(parameter, value); |
|
177 |
} |
|
178 |
|
|
174 | 179 |
public void setValue(Object value) throws InvalidEntryException { |
175 | 180 |
EditingServiceParameter param = next(); |
176 | 181 |
validateAndInsertValue(param, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.spline/src/main/java/org/gvsig/vectorediting/lib/prov/spline/SplineEditingProvider.java | ||
---|---|---|
176 | 176 |
return parameters; |
177 | 177 |
} |
178 | 178 |
|
179 |
@Override |
|
180 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
181 |
validateAndInsertValue(parameter, value); |
|
182 |
} |
|
183 |
|
|
179 | 184 |
public void setValue(Object value) throws InvalidEntryException { |
180 | 185 |
EditingServiceParameter parameter = next(); |
181 | 186 |
validateAndInsertValue(parameter, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.polyline/src/main/java/org/gvsig/vectorediting/lib/prov/polyline/PolylineEditingProvider.java | ||
---|---|---|
503 | 503 |
throw new InvalidEntryException(null); |
504 | 504 |
} |
505 | 505 |
|
506 |
@Override |
|
507 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
508 |
validateAndInsertValue(parameter, value); |
|
509 |
} |
|
510 |
|
|
506 | 511 |
public void setValue(Object value) throws InvalidEntryException { |
507 | 512 |
EditingServiceParameter param = next(); |
508 | 513 |
validateAndInsertValue(param, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.simplify/src/main/java/org/gvsig/vectorediting/lib/prov/simplify/SimplifyEditingProvider.java | ||
---|---|---|
136 | 136 |
return parameters; |
137 | 137 |
} |
138 | 138 |
|
139 |
@Override |
|
140 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
141 |
validateAndInsertValue(parameter, value); |
|
142 |
} |
|
143 |
|
|
139 | 144 |
public void setValue(Object value) throws InvalidEntryException { |
140 | 145 |
EditingServiceParameter parameter = next(); |
141 | 146 |
validateAndInsertValue(parameter, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.remove/src/main/java/org/gvsig/vectorediting/lib/prov/remove/RemoveEditingProvider.java | ||
---|---|---|
116 | 116 |
return parameters; |
117 | 117 |
} |
118 | 118 |
|
119 |
@Override |
|
120 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
121 |
validateAndInsertValue(parameter, value); |
|
122 |
} |
|
123 |
|
|
119 | 124 |
public void setValue(Object value) throws InvalidEntryException { |
120 | 125 |
EditingServiceParameter parameter = next(); |
121 | 126 |
validateAndInsertValue(parameter, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.ellipse/src/main/java/org/gvsig/vectorediting/lib/prov/ellipse/FilledEllipseEditingProvider.java | ||
---|---|---|
236 | 236 |
} |
237 | 237 |
|
238 | 238 |
@Override |
239 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
240 |
validateAndInsertValue(parameter, value); |
|
241 |
} |
|
242 |
|
|
243 |
@Override |
|
239 | 244 |
public void setValue(Object value) throws InvalidEntryException { |
240 | 245 |
EditingServiceParameter parameter = this.next(); |
241 | 246 |
validateAndInsertValue(parameter, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.ellipse/src/main/java/org/gvsig/vectorediting/lib/prov/ellipse/FilledEllipseCenterAxesEditingProvider.java | ||
---|---|---|
237 | 237 |
} |
238 | 238 |
|
239 | 239 |
@Override |
240 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
241 |
validateAndInsertValue(parameter, value); |
|
242 |
} |
|
243 |
|
|
244 |
@Override |
|
240 | 245 |
public void setValue(Object value) throws InvalidEntryException { |
241 | 246 |
EditingServiceParameter parameter = this.next(); |
242 | 247 |
validateAndInsertValue(parameter, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.converttopolyline/src/main/java/org/gvsig/vectorediting/lib/prov/converttopolyline/ConvertToPolylineEditingProvider.java | ||
---|---|---|
108 | 108 |
return parameters; |
109 | 109 |
} |
110 | 110 |
|
111 |
@Override |
|
112 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
113 |
validateAndInsertValue(parameter, value); |
|
114 |
} |
|
115 |
|
|
111 | 116 |
public void setValue(Object value) throws InvalidEntryException { |
112 | 117 |
EditingServiceParameter parameter = next(); |
113 | 118 |
validateAndInsertValue(parameter, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.explode/src/main/java/org/gvsig/vectorediting/lib/prov/explode/ExplodeEditingProvider.java | ||
---|---|---|
121 | 121 |
return parameters; |
122 | 122 |
} |
123 | 123 |
|
124 |
@Override |
|
125 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
126 |
validateAndInsertValue(parameter, value); |
|
127 |
} |
|
128 |
|
|
124 | 129 |
public void setValue(Object value) throws InvalidEntryException { |
125 | 130 |
EditingServiceParameter parameter = next(); |
126 | 131 |
validateAndInsertValue(parameter, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.polarmatrix/src/main/java/org/gvsig/vectorediting/lib/prov/polarmatrix/PolarMatrixEditingProvider.java | ||
---|---|---|
382 | 382 |
return parameters; |
383 | 383 |
} |
384 | 384 |
|
385 |
@Override |
|
386 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
387 |
validateAndInsertValue(parameter, value); |
|
388 |
} |
|
389 |
|
|
385 | 390 |
public void setValue(Object value) throws InvalidEntryException { |
386 | 391 |
EditingServiceParameter parameter = next(); |
387 | 392 |
validateAndInsertValue(parameter, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.splitline/src/main/java/org/gvsig/vectorediting/lib/prov/splitline/SplitLineEditingProvider.java | ||
---|---|---|
203 | 203 |
return parameters; |
204 | 204 |
} |
205 | 205 |
|
206 |
@Override |
|
207 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
208 |
validateAndInsertValue(parameter, value); |
|
209 |
} |
|
210 |
|
|
206 | 211 |
public void setValue(Object value) throws InvalidEntryException { |
207 | 212 |
EditingServiceParameter parameter = next(); |
208 | 213 |
validateAndInsertValue(parameter, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.multipoint/src/main/java/org/gvsig/vectorediting/lib/prov/multipoint/MultipointEditingProvider.java | ||
---|---|---|
144 | 144 |
return parameters; |
145 | 145 |
} |
146 | 146 |
|
147 |
@Override |
|
148 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
149 |
validateAndInsertValue(parameter, value); |
|
150 |
} |
|
151 |
|
|
147 | 152 |
public void setValue(Object value) throws InvalidEntryException { |
148 | 153 |
EditingServiceParameter parameter = next(); |
149 | 154 |
validateAndInsertValue(parameter, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.arc/src/main/java/org/gvsig/vectorediting/lib/prov/arc/ArcEditingProvider.java | ||
---|---|---|
196 | 196 |
return parameters; |
197 | 197 |
} |
198 | 198 |
|
199 |
@Override |
|
200 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
201 |
validateAndInsertValue(parameter, value); |
|
202 |
} |
|
203 |
|
|
199 | 204 |
public void setValue(Object value) throws InvalidEntryException { |
200 | 205 |
EditingServiceParameter param = next(); |
201 | 206 |
validateAndInsertValue(param, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.regularpolygon/src/main/java/org/gvsig/vectorediting/lib/prov/regularpolygon/RegularPolygonEditingProvider.java | ||
---|---|---|
391 | 391 |
return parameters; |
392 | 392 |
} |
393 | 393 |
|
394 |
@Override |
|
395 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
396 |
validateAndInsertValue(parameter, value); |
|
397 |
} |
|
398 |
|
|
394 | 399 |
public void setValue(Object value) throws InvalidEntryException { |
395 | 400 |
EditingServiceParameter parameter = next(); |
396 | 401 |
validateAndInsertValue(parameter, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.duplicate/src/main/java/org/gvsig/vectorediting/lib/prov/duplicate/DuplicateEditingProvider.java | ||
---|---|---|
235 | 235 |
return parameters; |
236 | 236 |
} |
237 | 237 |
|
238 |
@Override |
|
239 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
240 |
validateAndInsertValue(parameter, value); |
|
241 |
} |
|
242 |
|
|
238 | 243 |
public void setValue(Object value) throws InvalidEntryException { |
239 | 244 |
EditingServiceParameter parameter = next(); |
240 | 245 |
validateAndInsertValue(parameter, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.reversedirection/src/main/java/org/gvsig/vectorediting/lib/prov/reversedirection/ReverseDirectionEditingProvider.java | ||
---|---|---|
116 | 116 |
return parameters; |
117 | 117 |
} |
118 | 118 |
|
119 |
@Override |
|
120 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
121 |
validateAndInsertValue(parameter, value); |
|
122 |
} |
|
123 |
|
|
119 | 124 |
public void setValue(Object value) throws InvalidEntryException { |
120 | 125 |
EditingServiceParameter parameter = next(); |
121 | 126 |
validateAndInsertValue(parameter, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.stretch/src/main/java/org/gvsig/vectorediting/lib/prov/stretch/StretchEditingProvider.java | ||
---|---|---|
347 | 347 |
|
348 | 348 |
|
349 | 349 |
|
350 |
@Override |
|
351 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
352 |
validateAndInsertValue(parameter, value); |
|
353 |
} |
|
354 |
|
|
350 | 355 |
public void setValue(Object value) throws InvalidEntryException { |
351 | 356 |
EditingServiceParameter param = next(); |
352 | 357 |
validateAndInsertValue(param, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.smoothline/src/main/java/org/gvsig/vectorediting/lib/prov/smoothline/SmoothLineEditingProvider.java | ||
---|---|---|
170 | 170 |
return parameters; |
171 | 171 |
} |
172 | 172 |
|
173 |
@Override |
|
174 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
175 |
validateAndInsertValue(parameter, value); |
|
176 |
} |
|
177 |
|
|
173 | 178 |
public void setValue(Object value) throws InvalidEntryException { |
174 | 179 |
EditingServiceParameter parameter = next(); |
175 | 180 |
validateAndInsertValue(parameter, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.trimline/src/main/java/org/gvsig/vectorediting/lib/prov/trimline/TrimLineEditingProvider.java | ||
---|---|---|
227 | 227 |
return parameters; |
228 | 228 |
} |
229 | 229 |
|
230 |
@Override |
|
231 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
232 |
validateAndInsertValue(parameter, value); |
|
233 |
} |
|
234 |
|
|
230 | 235 |
public void setValue(Object value) throws InvalidEntryException { |
231 | 236 |
EditingServiceParameter parameter = next(); |
232 | 237 |
validateAndInsertValue(parameter, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.circlecr/src/main/java/org/gvsig/vectorediting/lib/prov/circlecr/CircleCREditingProvider.java | ||
---|---|---|
177 | 177 |
return list; |
178 | 178 |
} |
179 | 179 |
|
180 |
@Override |
|
181 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
182 |
validateAndInsertValue(parameter, value); |
|
183 |
} |
|
184 |
|
|
180 | 185 |
public void setValue(Object value) throws InvalidEntryException { |
181 | 186 |
EditingServiceParameter param = next(); |
182 | 187 |
validateAndInsertValue(param, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.circlecr/src/main/java/org/gvsig/vectorediting/lib/prov/circlecr/Circle2Tg1PEditingProvider.java | ||
---|---|---|
413 | 413 |
} |
414 | 414 |
|
415 | 415 |
@Override |
416 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
417 |
validateAndInsertValue(parameter, value); |
|
418 |
} |
|
419 |
|
|
420 |
@Override |
|
416 | 421 |
public void setValue(Object value) throws InvalidEntryException { |
417 | 422 |
EditingServiceParameter param = next(); |
418 | 423 |
validateAndInsertValue(param, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.circlecr/src/main/java/org/gvsig/vectorediting/lib/prov/circlecr/CircleTanTanRadiusEditingProvider.java | ||
---|---|---|
214 | 214 |
|
215 | 215 |
MapContext mapContext = (MapContext) this.parameters.getDynValue(EditingProviderFactory.MAPCONTEXT_FIELD); |
216 | 216 |
Geometry geometry = editingProviderServices.getGeometryOfVisibleLayers(point, featureStore, mapContext); |
217 |
// Geometry geometry = editingProviderServices.getGeometry(point, this.featureStore, mapContext); |
|
218 |
// if(geometry == null){ |
|
219 |
// FLayer[] visibleLayers = mapContext.getLayers().getVisibles();//.getActives(); |
|
220 |
// for (FLayer visibleLayer : visibleLayers) { |
|
221 |
// if(visibleLayer instanceof FLyrVect){ |
|
222 |
// if(((FLyrVect) visibleLayer).getFeatureStore()!=this.featureStore){ |
|
223 |
// geometry = editingProviderServices.getGeometry(point, ((FLyrVect)visibleLayer).getFeatureStore(), mapContext); |
|
224 |
// if(geometry != null){ |
|
225 |
// break; |
|
226 |
// } |
|
227 |
// } |
|
228 |
// } |
|
229 |
// } |
|
230 |
// } |
|
231 | 217 |
return geometry; |
232 | 218 |
} |
233 | 219 |
|
... | ... | |
261 | 247 |
} |
262 | 248 |
|
263 | 249 |
@Override |
250 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
251 |
validateAndInsertValue(parameter, value); |
|
252 |
} |
|
253 |
|
|
254 |
@Override |
|
264 | 255 |
public void setValue(Object value) throws InvalidEntryException { |
265 | 256 |
EditingServiceParameter param = next(); |
266 | 257 |
validateAndInsertValue(param, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.point/src/main/java/org/gvsig/vectorediting/lib/prov/point/PointEditingProvider.java | ||
---|---|---|
33 | 33 |
import org.gvsig.fmap.geom.aggregate.MultiPoint; |
34 | 34 |
import org.gvsig.fmap.geom.primitive.Point; |
35 | 35 |
import org.gvsig.fmap.geom.type.GeometryType; |
36 |
import org.gvsig.tools.ToolsLocator; |
|
36 | 37 |
import org.gvsig.tools.dynobject.DynObject; |
38 |
import org.gvsig.tools.i18n.I18nManager; |
|
37 | 39 |
import org.gvsig.tools.service.spi.ProviderServices; |
38 | 40 |
import org.gvsig.vectorediting.lib.api.EditingServiceParameter; |
39 | 41 |
import org.gvsig.vectorediting.lib.api.EditingServiceParameter.TYPE; |
... | ... | |
100 | 102 |
return list; |
101 | 103 |
} |
102 | 104 |
|
105 |
@Override |
|
106 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
107 |
validateAndInsertValue(parameter, value); |
|
108 |
} |
|
109 |
|
|
103 | 110 |
public void setValue(Object value) throws InvalidEntryException { |
104 | 111 |
EditingServiceParameter param = next(); |
105 |
if (isValidValue(param, value)) { |
|
112 |
validateAndInsertValue(param, value); |
|
113 |
} |
|
114 |
|
|
115 |
private void validateAndInsertValue(EditingServiceParameter parameter, |
|
116 |
Object value) throws InvalidEntryException { |
|
117 |
|
|
118 |
if (isValidValue(parameter, value)) { |
|
106 | 119 |
this.valuePoint = (Point) value; |
107 | 120 |
} else { |
108 | 121 |
throw new InvalidEntryException(null); |
109 | 122 |
} |
110 | 123 |
} |
111 | 124 |
|
125 |
|
|
112 | 126 |
public void finishAndStore() throws FinishServiceException { |
113 | 127 |
Geometry geometry = null; |
114 | 128 |
try { |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.split/src/main/java/org/gvsig/vectorediting/lib/prov/split/SplitEditingProvider.java | ||
---|---|---|
138 | 138 |
return parameters; |
139 | 139 |
} |
140 | 140 |
|
141 |
@Override |
|
142 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
143 |
validateAndInsertValue(parameter, value); |
|
144 |
} |
|
145 |
|
|
141 | 146 |
public void setValue(Object value) throws InvalidEntryException { |
142 | 147 |
EditingServiceParameter parameter = next(); |
143 | 148 |
validateAndInsertValue(parameter, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.rectangularmatrix/src/main/java/org/gvsig/vectorediting/lib/prov/rectangularmatrix/RectangularMatrixEditingProvider.java | ||
---|---|---|
343 | 343 |
return parameters; |
344 | 344 |
} |
345 | 345 |
|
346 |
@Override |
|
347 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
348 |
validateAndInsertValue(parameter, value); |
|
349 |
} |
|
350 |
|
|
346 | 351 |
public void setValue(Object value) throws InvalidEntryException { |
347 | 352 |
EditingServiceParameter parameter = next(); |
348 | 353 |
validateAndInsertValue(parameter, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.rotate/src/main/java/org/gvsig/vectorediting/lib/prov/rotate/RotateEditingProvider.java | ||
---|---|---|
330 | 330 |
return list; |
331 | 331 |
} |
332 | 332 |
|
333 |
@Override |
|
334 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
335 |
validateAndInsertValue(parameter, value); |
|
336 |
} |
|
337 |
|
|
333 | 338 |
public void setValue(Object value) throws InvalidEntryException { |
334 | 339 |
EditingServiceParameter param = next(); |
335 | 340 |
validateAndInsertValue(param, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.join/src/main/java/org/gvsig/vectorediting/lib/prov/join/JoinEditingProvider.java | ||
---|---|---|
117 | 117 |
return parameters; |
118 | 118 |
} |
119 | 119 |
|
120 |
@Override |
|
121 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
122 |
validateAndInsertValue(parameter, value); |
|
123 |
} |
|
124 |
|
|
120 | 125 |
public void setValue(Object value) throws InvalidEntryException { |
121 | 126 |
EditingServiceParameter parameter = next(); |
122 | 127 |
validateAndInsertValue(parameter, value); |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.extendline/src/main/java/org/gvsig/vectorediting/lib/prov/extendline/ExtendLineEditingProvider.java | ||
---|---|---|
21 | 21 |
* For any additional information, do not hesitate to contact us |
22 | 22 |
* at info AT gvsig.com, or visit our website www.gvsig.com. |
23 | 23 |
*/ |
24 |
|
|
25 | 24 |
package org.gvsig.vectorediting.lib.prov.extendline; |
26 | 25 |
|
27 | 26 |
import java.util.ArrayList; |
27 |
import java.util.HashMap; |
|
28 | 28 |
import java.util.List; |
29 |
|
|
29 |
import java.util.Map; |
|
30 | 30 |
import org.cresques.cts.IProjection; |
31 |
|
|
32 | 31 |
import org.gvsig.fmap.dal.exception.DataException; |
33 | 32 |
import org.gvsig.fmap.dal.feature.EditableFeature; |
34 | 33 |
import org.gvsig.fmap.dal.feature.Feature; |
... | ... | |
37 | 36 |
import org.gvsig.fmap.dal.feature.FeatureSet; |
38 | 37 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
39 | 38 |
import org.gvsig.fmap.geom.Geometry; |
39 |
import static org.gvsig.fmap.geom.Geometry.TYPES.CURVE; |
|
40 |
import static org.gvsig.fmap.geom.Geometry.TYPES.MULTICURVE; |
|
40 | 41 |
import org.gvsig.fmap.geom.GeometryLocator; |
41 | 42 |
import org.gvsig.fmap.geom.GeometryManager; |
43 |
import org.gvsig.fmap.geom.GeometryUtils; |
|
42 | 44 |
import org.gvsig.fmap.geom.aggregate.MultiCurve; |
43 | 45 |
import org.gvsig.fmap.geom.exception.CreateGeometryException; |
44 | 46 |
import org.gvsig.fmap.geom.operation.GeometryOperationException; |
45 | 47 |
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException; |
46 | 48 |
import org.gvsig.fmap.geom.primitive.Arc; |
47 | 49 |
import org.gvsig.fmap.geom.primitive.Curve; |
50 |
import org.gvsig.fmap.geom.primitive.Line; |
|
48 | 51 |
import org.gvsig.fmap.geom.primitive.Point; |
49 | 52 |
import org.gvsig.fmap.geom.primitive.Primitive; |
50 | 53 |
import org.gvsig.fmap.geom.type.GeometryType; |
51 | 54 |
import org.gvsig.fmap.mapcontext.MapContext; |
52 | 55 |
import org.gvsig.fmap.mapcontext.layers.vectorial.SpatialEvaluatorsFactory; |
53 |
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol; |
|
54 |
import org.gvsig.tools.dispose.DisposableIterator; |
|
55 |
import org.gvsig.tools.dispose.DisposeUtils; |
|
56 | 56 |
import org.gvsig.tools.dynobject.DynObject; |
57 | 57 |
import org.gvsig.tools.evaluator.Evaluator; |
58 | 58 |
import org.gvsig.tools.exception.BaseException; |
... | ... | |
74 | 74 |
import org.gvsig.vectorediting.lib.spi.DefaultEditingServiceParameter; |
75 | 75 |
import org.gvsig.vectorediting.lib.spi.EditingProvider; |
76 | 76 |
import org.gvsig.vectorediting.lib.spi.EditingProviderFactory; |
77 |
import org.gvsig.vectorediting.lib.spi.EditingProviderLocator; |
|
78 |
import org.gvsig.vectorediting.lib.spi.EditingProviderManager; |
|
77 |
import org.gvsig.vectorediting.lib.spi.EditingProviderServices; |
|
79 | 78 |
|
80 | 79 |
/** |
81 | 80 |
* @author llmarques |
82 | 81 |
* |
83 | 82 |
*/ |
84 | 83 |
public class ExtendLineEditingProvider extends AbstractEditingProvider |
85 |
implements EditingProvider { |
|
84 |
implements EditingProvider {
|
|
86 | 85 |
|
87 | 86 |
private final int TOLERANCE_PIXELS = 3; |
88 | 87 |
|
... | ... | |
90 | 89 |
|
91 | 90 |
private final EditingServiceParameter selectionParameter; |
92 | 91 |
|
93 |
private final EditingServiceParameter linesToExtendParameter;
|
|
92 |
private final EditingServiceParameter geometryToExtendToParameter;
|
|
94 | 93 |
|
95 |
private FeatureSelection selection;
|
|
94 |
protected Map<EditingServiceParameter, Object> values;
|
|
96 | 95 |
|
97 |
private FeatureSet linesToExtend; |
|
98 |
|
|
99 | 96 |
private final FeatureStore featureStore; |
100 | 97 |
|
101 | 98 |
private final MapContext mapContext; |
... | ... | |
103 | 100 |
/** |
104 | 101 |
* Default constructor. |
105 | 102 |
* |
106 |
* @param services |
|
107 |
* available services for this provider |
|
108 |
* @param parameters |
|
109 |
* of this provider |
|
103 |
* @param services available services for this provider |
|
104 |
* @param parameters of this provider |
|
110 | 105 |
*/ |
111 | 106 |
public ExtendLineEditingProvider(ProviderServices services, |
112 |
DynObject parameters) { |
|
107 |
DynObject parameters) {
|
|
113 | 108 |
super(services); |
114 | 109 |
|
115 |
this.featureStore =
|
|
116 |
(FeatureStore) parameters |
|
117 |
.getDynValue(EditingProviderFactory.FEATURE_STORE_FIELD); |
|
110 |
this.featureStore |
|
111 |
= (FeatureStore) parameters
|
|
112 |
.getDynValue(EditingProviderFactory.FEATURE_STORE_FIELD);
|
|
118 | 113 |
|
119 |
this.mapContext =
|
|
120 |
(MapContext) parameters |
|
121 |
.getDynValue(EditingProviderFactory.MAPCONTEXT_FIELD); |
|
114 |
this.mapContext |
|
115 |
= (MapContext) parameters
|
|
116 |
.getDynValue(EditingProviderFactory.MAPCONTEXT_FIELD);
|
|
122 | 117 |
|
123 |
this.selectionParameter =
|
|
124 |
new DefaultEditingServiceParameter("selection", "selection", |
|
125 |
TYPE.SELECTION); |
|
118 |
this.selectionParameter |
|
119 |
= new DefaultEditingServiceParameter("selection", "selection",
|
|
120 |
TYPE.SELECTION);
|
|
126 | 121 |
|
127 |
this.linesToExtendParameter =
|
|
128 |
new DefaultEditingServiceParameter("line_to_extend",
|
|
129 |
"line_to_extend", TYPE.POSITION);
|
|
122 |
this.geometryToExtendToParameter
|
|
123 |
= new DefaultEditingServiceParameter("geometry_to_extend_to",
|
|
124 |
"geometry_to_extend_to", TYPE.POSITION);
|
|
130 | 125 |
} |
131 | 126 |
|
132 | 127 |
public EditingServiceParameter next() { |
133 |
if (selection == null) {
|
|
128 |
if (values.get(selectionParameter) == null) {
|
|
134 | 129 |
return selectionParameter; |
135 |
} else if (linesToExtend == null) {
|
|
136 |
return linesToExtendParameter;
|
|
130 |
} else if (values.get(geometryToExtendToParameter) == null) {
|
|
131 |
return geometryToExtendToParameter;
|
|
137 | 132 |
} |
138 | 133 |
return null; |
139 | 134 |
} |
140 | 135 |
|
136 |
@Override |
|
141 | 137 |
public DrawingStatus getDrawingStatus(Point mousePosition) |
142 |
throws DrawServiceException { |
|
138 |
throws DrawServiceException {
|
|
143 | 139 |
|
140 |
FeatureSelection selection = (FeatureSelection) values.get(selectionParameter); |
|
144 | 141 |
if (selection != null) { |
145 | 142 |
DefaultDrawingStatus drawingStatus = new DefaultDrawingStatus(); |
146 |
EditingProviderManager editingProviderManager = |
|
147 |
EditingProviderLocator.getProviderManager(); |
|
148 |
ISymbol lineSymbolEditing = editingProviderManager.getSymbol("line-symbol-editing"); |
|
143 |
// We do not show the possible result when moving the mouse |
|
144 |
// due to possible performance problems working with databases |
|
149 | 145 |
|
150 |
double tolerance = |
|
151 |
mapContext.getViewPort().toMapDistance(TOLERANCE_PIXELS); |
|
152 |
|
|
153 |
Geometry buffer; |
|
154 |
FeatureSet geometries; |
|
155 |
DisposableIterator it = null; |
|
156 |
try { |
|
157 |
// Create buffer with tolerance to get the geometry to be |
|
158 |
// extended |
|
159 |
buffer = mousePosition.buffer(tolerance); |
|
160 |
geometries = getGeometryByBuffer(buffer); |
|
161 |
|
|
162 |
it = geometries.fastIterator(); |
|
163 |
while (it.hasNext()) { |
|
164 |
Feature feature = (Feature) it.next(); |
|
165 |
if (!selection.isSelected(feature)) { |
|
166 |
Geometry geometry = feature.getDefaultGeometry(); |
|
167 |
|
|
168 |
|
|
169 |
if (geometry instanceof MultiCurve) { |
|
170 |
MultiCurve multiCurve = (MultiCurve) geometry; |
|
171 |
|
|
172 |
for (int i = 0; i < multiCurve |
|
173 |
.getPrimitivesNumber(); i++) { |
|
174 |
|
|
175 |
Curve curve = multiCurve.getCurveAt(i); |
|
176 |
if (!isClosed(curve)) { |
|
177 |
Curve extendedCurve = |
|
178 |
extendLine(mousePosition, curve); |
|
179 |
drawingStatus.addStatus(extendedCurve,lineSymbolEditing, ""); |
|
180 |
} |
|
181 |
} |
|
182 |
|
|
183 |
} else if (geometry instanceof Curve) { |
|
184 |
if (!isClosed((Curve) geometry)) { |
|
185 |
Curve extendedCurve = |
|
186 |
extendLine(mousePosition, (Curve) geometry); |
|
187 |
drawingStatus.addStatus(extendedCurve,lineSymbolEditing, ""); |
|
188 |
} |
|
189 |
} |
|
190 |
} |
|
191 |
} |
|
192 |
|
|
193 |
} catch (BaseException e) { |
|
194 |
throw new DrawServiceException(e); |
|
195 |
} finally { |
|
196 |
DisposeUtils.dispose(it); |
|
197 |
} |
|
146 |
// EditingProviderManager editingProviderManager |
|
147 |
// = EditingProviderLocator.getProviderManager(); |
|
148 |
// ISymbol lineSymbolEditing = editingProviderManager.getSymbol("line-symbol-editing"); |
|
149 |
// DisposableIterator selectionIterator = null; |
|
150 |
// try { |
|
151 |
// Geometry boundaryGeometry = getGeometry(mousePosition); |
|
152 |
// if (boundaryGeometry != null) { |
|
153 |
// |
|
154 |
// selectionIterator = selection.fastIterator(); |
|
155 |
// while (selectionIterator.hasNext()) { |
|
156 |
// Feature feature = (Feature) selectionIterator.next(); |
|
157 |
// |
|
158 |
// Geometry geometry = feature.getDefaultGeometry(); |
|
159 |
// |
|
160 |
// if (geometry instanceof MultiCurve) { |
|
161 |
// MultiCurve multiCurve = (MultiCurve) geometry; |
|
162 |
// |
|
163 |
// for (int i = 0; i < multiCurve |
|
164 |
// .getPrimitivesNumber(); i++) { |
|
165 |
// |
|
166 |
// Curve curve = multiCurve.getCurveAt(i); |
|
167 |
// if (!isClosed(curve)) { |
|
168 |
// Curve extendedCurve |
|
169 |
// = extendLine(mousePosition, curve, boundaryGeometry); |
|
170 |
// drawingStatus.addStatus(extendedCurve, lineSymbolEditing, ""); |
|
171 |
// } |
|
172 |
// } |
|
173 |
// |
|
174 |
// } else if (geometry instanceof Curve) { |
|
175 |
// if (!isClosed((Curve) geometry)) { |
|
176 |
// Curve extendedCurve |
|
177 |
// = extendLine(mousePosition, (Curve) geometry, boundaryGeometry); |
|
178 |
// drawingStatus.addStatus(extendedCurve, lineSymbolEditing, ""); |
|
179 |
// } |
|
180 |
// } |
|
181 |
// |
|
182 |
// } |
|
183 |
// DisposeUtils.dispose(selectionIterator); |
|
184 |
// |
|
185 |
// } |
|
186 |
// |
|
187 |
// } catch (BaseException e) { |
|
188 |
// throw new DrawServiceException(e); |
|
189 |
// } finally { |
|
190 |
// DisposeUtils.dispose(selectionIterator); |
|
191 |
// } |
|
198 | 192 |
return drawingStatus; |
199 | 193 |
} |
200 | 194 |
return null; |
... | ... | |
216 | 210 |
return false; |
217 | 211 |
} |
218 | 212 |
|
219 |
private Curve extendLine(Point mousePosition, Curve curve) |
|
220 |
throws GeometryOperationNotSupportedException, |
|
221 |
GeometryOperationException, DataException, CreateGeometryException { |
|
222 |
ExtendLineOperation operation =
|
|
223 |
ExtendLineOperationUtils.getOperation((Primitive) curve); |
|
213 |
private Curve extendLine(Point mousePosition, Curve curve, Geometry boundaryGeometry)
|
|
214 |
throws GeometryOperationNotSupportedException,
|
|
215 |
GeometryOperationException, DataException, CreateGeometryException {
|
|
216 |
ExtendLineOperation operation |
|
217 |
= ExtendLineOperationUtils.getOperation((Primitive) curve);
|
|
224 | 218 |
|
225 |
return operation.extendLine(curve, mousePosition, selection);
|
|
219 |
return operation.extendLine(curve, mousePosition, boundaryGeometry);
|
|
226 | 220 |
} |
227 | 221 |
|
228 | 222 |
public void stop() throws StopServiceException { |
229 |
linesToExtend = null;
|
|
223 |
values.clear();
|
|
230 | 224 |
} |
231 | 225 |
|
232 | 226 |
public List<EditingServiceParameter> getParameters() { |
233 | 227 |
List<EditingServiceParameter> parameters = new ArrayList<>(); |
234 | 228 |
parameters.add(selectionParameter); |
235 |
parameters.add(linesToExtendParameter);
|
|
229 |
parameters.add(geometryToExtendToParameter);
|
|
236 | 230 |
return parameters; |
237 | 231 |
} |
238 | 232 |
|
233 |
@Override |
|
234 |
public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException { |
|
235 |
validateAndInsertValue(parameter, value); |
|
236 |
} |
|
237 |
|
|
239 | 238 |
public void setValue(Object value) throws InvalidEntryException { |
240 | 239 |
EditingServiceParameter parameter = next(); |
241 | 240 |
validateAndInsertValue(parameter, value); |
242 | 241 |
} |
243 | 242 |
|
244 | 243 |
private void validateAndInsertValue( |
245 |
final EditingServiceParameter parameter, Object value) |
|
246 |
throws InvalidEntryException { |
|
244 |
final EditingServiceParameter parameter, Object value)
|
|
245 |
throws InvalidEntryException {
|
|
247 | 246 |
|
248 | 247 |
if (parameter == selectionParameter) { |
249 | 248 |
if (value instanceof FeatureSelection) { |
... | ... | |
253 | 252 |
featureSelection.accept(new Visitor() { |
254 | 253 |
|
255 | 254 |
public void visit(Object obj) |
256 |
throws VisitCanceledException, BaseException { |
|
255 |
throws VisitCanceledException, BaseException {
|
|
257 | 256 |
Feature feature = (Feature) obj; |
258 |
Geometry geometry = |
|
259 |
feature.getDefaultGeometry(); |
|
260 |
GeometryType geoType = |
|
261 |
geometry.getGeometryType(); |
|
257 |
Geometry geometry |
|
258 |
= feature.getDefaultGeometry(); |
|
262 | 259 |
|
263 |
if (!geoType.isTypeOf(SURFACE) |
|
264 |
&& !geoType.isTypeOf(MULTISURFACE) |
|
265 |
&& !geoType.isTypeOf(CURVE) |
|
266 |
&& !geoType.isTypeOf(MULTICURVE)) { |
|
260 |
if (!isValidGeometryToSelect(geometry)) { |
|
267 | 261 |
throw new InvalidEntryException(null); |
268 | 262 |
} |
269 | 263 |
} |
270 | 264 |
}); |
271 |
selection = featureSelection;
|
|
265 |
values.put(parameter, featureSelection);
|
|
272 | 266 |
return; |
273 | 267 |
} catch (BaseException e) { |
274 | 268 |
throw new InvalidEntryException(e); |
275 | 269 |
} |
276 | 270 |
} |
277 | 271 |
} |
278 |
} else if (parameter == linesToExtendParameter) {
|
|
272 |
} else if (parameter == geometryToExtendToParameter) {
|
|
279 | 273 |
if (value instanceof Point) { |
280 | 274 |
Point point = (Point) value; |
281 |
try { |
|
282 |
double tolerance = |
|
283 |
mapContext.getViewPort() |
|
284 |
.toMapDistance(TOLERANCE_PIXELS); |
|
285 | 275 |
|
286 |
// Create buffer with tolerance to get geometries to be |
|
287 |
// extended |
|
288 |
Geometry buffer = point.buffer(tolerance); |
|
289 |
FeatureSet geometries = getGeometryByBuffer(buffer); |
|
276 |
// EditingProviderServices editingProviderServices = (EditingProviderServices) getProviderServices(); |
|
277 |
Geometry geometry = getGeometry(point); //editingProviderServices.getGeometryOfVisibleLayers(point, featureStore, mapContext); |
|
278 |
if (geometry != null) { |
|
279 |
values.put(parameter, geometry); |
|
280 |
insertedPoint = point; |
|
281 |
} |
|
290 | 282 |
|
291 |
if (geometries.getSize() > 0) { |
|
283 |
// try { |
|
284 |
// double tolerance = |
|
285 |
// mapContext.getViewPort() |
|
286 |
// .toMapDistance(TOLERANCE_PIXELS); |
|
287 |
// |
|
288 |
// // Create buffer with tolerance to get geometries to be |
|
289 |
// // extended |
|
290 |
// Geometry buffer = point.buffer(tolerance); |
|
291 |
// FeatureSet geometries = getGeometryByBuffer(buffer); |
|
292 |
// |
|
293 |
// if (geometries.getSize() > 0) { |
|
294 |
// |
|
295 |
// geometries.accept(new Visitor() { |
|
296 |
// |
|
297 |
// public void visit(Object obj) |
|
298 |
// throws VisitCanceledException, BaseException { |
|
299 |
// Feature feature = (Feature) obj; |
|
300 |
// Geometry geometry = |
|
301 |
// feature.getDefaultGeometry(); |
|
302 |
// GeometryType geoType = |
|
303 |
// geometry.getGeometryType(); |
|
304 |
// |
|
305 |
// if (!geoType.isTypeOf(CURVE) |
|
306 |
// && !geoType.isTypeOf(MULTICURVE)) { |
|
307 |
// throw new InvalidEntryException(null); |
|
308 |
// } |
|
309 |
// } |
|
310 |
// }); |
|
311 |
// |
|
312 |
// insertedPoint = point; |
|
313 |
// geometryToExtendTo = geometries; |
|
314 |
// return; |
|
315 |
// } |
|
316 |
// } catch (BaseException e) { |
|
317 |
// throw new InvalidEntryException(e); |
|
318 |
// } |
|
319 |
} |
|
320 |
} |
|
321 |
throw new InvalidEntryException(null); |
|
322 |
} |
|
292 | 323 |
|
293 |
geometries.accept(new Visitor() { |
|
324 |
private boolean isValidGeometryToSelect(Geometry geometry) { |
|
325 |
GeometryType geoType |
|
326 |
= geometry.getGeometryType(); |
|
327 |
if (!geoType.isTypeOf(CURVE) |
|
328 |
&& !geoType.isTypeOf(MULTICURVE)) { |
|
329 |
return false; |
|
330 |
} |
|
294 | 331 |
|
295 |
public void visit(Object obj) |
|
296 |
throws VisitCanceledException, BaseException { |
|
297 |
Feature feature = (Feature) obj; |
|
298 |
Geometry geometry = |
|
299 |
feature.getDefaultGeometry(); |
|
300 |
GeometryType geoType = |
|
301 |
geometry.getGeometryType(); |
|
332 |
if (geoType.isTypeOf(CURVE)) { |
|
333 |
if (geometry instanceof Line ) { |
|
334 |
Line line = (Line) geometry; |
|
335 |
if (line.isClosed()) { |
|
336 |
return false; |
|
337 |
} |
|
338 |
return true; |
|
339 |
} |
|
340 |
if (geometry instanceof Arc ) { |
|
341 |
Arc arc = (Arc) geometry; |
|
342 |
if (arc.getInitPoint().equals(arc.getEndPoint())) { |
|
343 |
return false; |
|
344 |
} |
|
345 |
return true; |
|
346 |
} |
|
347 |
return false; |
|
348 |
} |
|
302 | 349 |
|
303 |
if (!geoType.isTypeOf(CURVE) |
|
304 |
&& !geoType.isTypeOf(MULTICURVE)) { |
|
305 |
throw new InvalidEntryException(null); |
|
306 |
} |
|
307 |
} |
|
308 |
}); |
|
309 |
|
|
310 |
insertedPoint = point; |
|
311 |
linesToExtend = geometries; |
|
312 |
return; |
|
313 |
} |
|
314 |
} catch (BaseException e) { |
|
315 |
throw new InvalidEntryException(e); |
|
350 |
if (geoType.isTypeOf(MULTICURVE)) { |
|
351 |
MultiCurve multiCurve = (MultiCurve) geometry; |
|
352 |
for (Geometry geom : multiCurve) { |
|
353 |
if (!isValidGeometryToSelect(geom)) { |
|
354 |
return false; |
|
316 | 355 |
} |
317 | 356 |
} |
318 | 357 |
} |
319 |
throw new InvalidEntryException(null); |
|
358 |
return true; |
|
359 |
|
|
320 | 360 |
} |
321 | 361 |
|
362 |
private Geometry getGeometry(Point point) { |
|
363 |
EditingProviderServices editingProviderServices = (EditingProviderServices) getProviderServices(); |
|
364 |
Geometry geometry = editingProviderServices.getGeometryOfVisibleLayers(point, featureStore, mapContext); |
|
365 |
return geometry; |
|
366 |
} |
|
367 |
|
|
322 | 368 |
private FeatureSet getGeometryByBuffer(Geometry buffer) throws DataException { |
323 | 369 |
FeatureQuery queryByGeometry = featureStore.createFeatureQuery(); |
324 | 370 |
|
325 | 371 |
// Get default SRS of default feature type |
326 |
IProjection defaultSRS =
|
|
327 |
this.featureStore.getDefaultFeatureType().getDefaultSRS(); |
|
372 |
IProjection defaultSRS |
|
373 |
= this.featureStore.getDefaultFeatureType().getDefaultSRS();
|
|
328 | 374 |
|
329 | 375 |
Evaluator iee = SpatialEvaluatorsFactory.getInstance().intersects( |
330 |
buffer,
|
|
331 |
defaultSRS,
|
|
376 |
buffer, |
|
377 |
defaultSRS, |
|
332 | 378 |
featureStore |
333 | 379 |
); |
334 | 380 |
|
... | ... | |
342 | 388 |
} |
343 | 389 |
|
344 | 390 |
public void finishAndStore() throws FinishServiceException { |
345 |
if (selection != null && linesToExtend != null) { |
|
391 |
FeatureSelection selection = (FeatureSelection) values.get(selectionParameter); |
|
392 |
Geometry geometryToExtendTo = (Geometry) values.get(geometryToExtendToParameter); |
|
393 |
if (selection != null && geometryToExtendTo != null) { |
|
346 | 394 |
|
347 | 395 |
try { |
348 |
linesToExtend.accept(new Visitor() { |
|
349 |
|
|
350 |
public void visit(Object obj) |
|
351 |
throws VisitCanceledException, BaseException { |
|
396 |
selection.accept(new Visitor() { |
|
397 |
@Override |
|
398 |
public void visit(Object obj) throws VisitCanceledException, BaseException { |
|
352 | 399 |
Feature feature = (Feature) obj; |
353 | 400 |
Geometry geometry = feature.getDefaultGeometry(); |
354 | 401 |
EditableFeature eFeature = feature.getEditable(); |
... | ... | |
356 | 403 |
if (geometry instanceof MultiCurve) { |
357 | 404 |
|
358 | 405 |
// Create new multicurve geometry |
359 |
MultiCurve extendedMultiCurve =
|
|
360 |
createMultiCurve(geometry); |
|
406 |
MultiCurve extendedMultiCurve |
|
407 |
= createMultiCurve(geometry);
|
|
361 | 408 |
|
362 | 409 |
// Iterate overs primitives and execute extend |
363 | 410 |
// line operation |
364 | 411 |
MultiCurve multiCurve = (MultiCurve) geometry; |
365 | 412 |
|
366 | 413 |
for (int i = 0; i < multiCurve |
367 |
.getPrimitivesNumber(); i++) { |
|
414 |
.getPrimitivesNumber(); i++) {
|
|
368 | 415 |
|
369 | 416 |
Curve curve = multiCurve.getCurveAt(i); |
370 |
Curve extendedCurve =
|
|
371 |
extendLine(insertedPoint, curve);
|
|
417 |
Curve extendedCurve |
|
418 |
= extendLine(insertedPoint, curve, geometryToExtendTo);
|
|
372 | 419 |
extendedMultiCurve.addCurve(extendedCurve); |
373 | 420 |
} |
374 | 421 |
|
375 | 422 |
eFeature.setDefaultGeometry(extendedMultiCurve); |
376 | 423 |
|
377 | 424 |
} else if (geometry instanceof Curve) { |
378 |
Curve extendedCurve =
|
|
379 |
extendLine(insertedPoint, (Curve) geometry);
|
|
425 |
Curve extendedCurve |
|
426 |
= extendLine(insertedPoint, (Curve) geometry, geometryToExtendTo);
|
|
380 | 427 |
eFeature.setDefaultGeometry(extendedCurve); |
381 | 428 |
} |
382 | 429 |
|
383 |
linesToExtend.update(eFeature); |
|
430 |
// Curve extendedCurve |
|
431 |
// = extendLine(insertedPoint, (Curve) geometry, geometryToExtendTo); |
|
432 |
// eFeature.setDefaultGeometry(extendedCurve); |
|
433 |
selection.update(eFeature); |
|
384 | 434 |
} |
435 |
|
|
385 | 436 |
}); |
386 | 437 |
|
387 |
linesToExtend.dispose(); |
|
388 |
|
|
438 |
// geometryToExtendTo.accept(new Visitor() { |
|
439 |
// |
|
440 |
// public void visit(Object obj) |
|
441 |
// throws VisitCanceledException, BaseException { |
|
442 |
// Feature feature = (Feature) obj; |
|
443 |
// Geometry geometry = feature.getDefaultGeometry(); |
|
444 |
// EditableFeature eFeature = feature.getEditable(); |
|
445 |
// |
|
446 |
// if (geometry instanceof MultiCurve) { |
|
447 |
// |
|
448 |
// // Create new multicurve geometry |
|
449 |
// MultiCurve extendedMultiCurve = |
|
450 |
// createMultiCurve(geometry); |
|
451 |
// |
|
452 |
// // Iterate overs primitives and execute extend |
|
453 |
// // line operation |
|
454 |
// MultiCurve multiCurve = (MultiCurve) geometry; |
|
455 |
// |
|
456 |
// for (int i = 0; i < multiCurve |
|
457 |
// .getPrimitivesNumber(); i++) { |
|
458 |
// |
|
459 |
// Curve curve = multiCurve.getCurveAt(i); |
|
460 |
// Curve extendedCurve = |
|
461 |
// extendLine(insertedPoint, curve); |
|
462 |
// extendedMultiCurve.addCurve(extendedCurve); |
|
463 |
// } |
|
464 |
// |
|
465 |
// eFeature.setDefaultGeometry(extendedMultiCurve); |
|
466 |
// |
|
467 |
// } else if (geometry instanceof Curve) { |
|
468 |
// Curve extendedCurve = |
|
469 |
// extendLine(insertedPoint, (Curve) geometry); |
|
470 |
// eFeature.setDefaultGeometry(extendedCurve); |
|
471 |
// } |
|
472 |
// |
|
473 |
// geometryToExtendTo.update(eFeature); |
|
474 |
// } |
|
475 |
// }); |
|
476 |
// |
|
477 |
// geometryToExtendTo.dispose(); |
|
389 | 478 |
} catch (BaseException e) { |
390 | 479 |
throw new FinishServiceException(e); |
391 | 480 |
} |
... | ... | |
393 | 482 |
} |
394 | 483 |
|
395 | 484 |
private MultiCurve createMultiCurve(Geometry geometry) |
396 |
throws FinishServiceException { |
|
485 |
throws FinishServiceException {
|
|
397 | 486 |
|
398 | 487 |
GeometryManager geoManager = GeometryLocator.getGeometryManager(); |
399 | 488 |
int subtype = geometry.getGeometryType().getSubType(); |
... | ... | |
408 | 497 |
} |
409 | 498 |
|
410 | 499 |
public void start() throws StartServiceException, InvalidEntryException { |
411 |
linesToExtend = null;
|
|
500 |
this.values = new HashMap<>();
|
|
412 | 501 |
FeatureSelection selected = null; |
413 |
if (featureStore != null && selection == null) {
|
|
502 |
if (featureStore != null && values.get(selectionParameter) == null) {
|
|
414 | 503 |
try { |
415 | 504 |
selected = featureStore.getFeatureSelection(); |
416 | 505 |
} catch (DataException e) { |
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.extendline/src/main/java/org/gvsig/vectorediting/lib/prov/extendline/operation/ExtendLineOperationUtils.java | ||
---|---|---|
21 | 21 |
* For any additional information, do not hesitate to contact us |
22 | 22 |
* at info AT gvsig.com, or visit our website www.gvsig.com. |
23 | 23 |
*/ |
24 |
|
|
25 | 24 |
package org.gvsig.vectorediting.lib.prov.extendline.operation; |
26 | 25 |
|
27 | 26 |
import java.util.HashMap; |
28 | 27 |
import java.util.Map; |
29 |
|
|
30 | 28 |
import org.gvsig.fmap.dal.exception.DataException; |
31 | 29 |
import org.gvsig.fmap.dal.feature.Feature; |
32 | 30 |
import org.gvsig.fmap.dal.feature.FeatureSelection; |
... | ... | |
65 | 63 |
*/ |
66 | 64 |
private final static int PROJECTION_LIMIT = 100; |
67 | 65 |
|
68 |
private static Map<Integer, ExtendLineOperation> operations =
|
|
69 |
new HashMap<Integer, ExtendLineOperation>(); |
|
66 |
private static Map<Integer, ExtendLineOperation> operations |
|
67 |
= new HashMap<Integer, ExtendLineOperation>();
|
|
70 | 68 |
|
71 | 69 |
public ExtendLineOperationUtils() { |
72 | 70 |
} |
... | ... | |
86 | 84 |
/** |
87 | 85 |
* Calculates the nearest intersection among curve and boundary objects |
88 | 86 |
* depending on side received as parameter. |
89 |
* |
|
90 |
* @param line |
|
91 |
* to be extended |
|
92 |
* @param sideToExtend |
|
93 |
* What side will be extend. Use |
|
94 |
* {@link ExtendLineOperationUtils#START_SIDE} and |
|
95 |
* {@link ExtendLineOperationUtils#END_SIDE} |
|
96 |
* @param boundaryObjects |
|
97 |
* to calculate intersection points. |
|
87 |
* |
|
88 |
* @param line to be extended |
|
89 |
* @param sideToExtend What side will be extend. Use |
|
90 |
* {@link ExtendLineOperationUtils#START_SIDE} and |
|
91 |
* {@link ExtendLineOperationUtils#END_SIDE} |
|
92 |
* @param boundaryObjects to calculate intersection points. |
|
98 | 93 |
* @return the nearest intersection point. Return Null if arc does not |
99 |
* intersect |
|
100 |
* with any boundary object |
|
94 |
* intersect with any boundary object |
|
95 |
* @throws org.gvsig.fmap.geom.exception.CreateGeometryException |
|
96 |
* @throws org.gvsig.fmap.dal.exception.DataException |
|
97 |
* @throws |
|
98 |
* org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException |
|
99 |
* @throws org.gvsig.fmap.geom.operation.GeometryOperationException |
|
101 | 100 |
*/ |
102 | 101 |
public static Point curveIntersection(Curve line, String sideToExtend, |
103 |
FeatureSelection boundaryObjects) throws CreateGeometryException, |
|
104 |
DataException, GeometryOperationNotSupportedException, |
|
105 |
GeometryOperationException { |
|
102 |
FeatureSelection boundaryObjects) throws CreateGeometryException,
|
|
103 |
DataException, GeometryOperationNotSupportedException,
|
|
104 |
GeometryOperationException {
|
|
106 | 105 |
|
107 |
Point initPoint = null;
|
|
108 |
Point endPoint = null;
|
|
106 |
Point initPoint = getExtremeSegmentInitPoint(line, sideToExtend);
|
|
107 |
Point endPoint = getExtremeSegmentEndPoint(line, sideToExtend);
|
|
109 | 108 |
|
109 |
return getIntersectionOfProjectedLine(initPoint, endPoint, |
|
110 |
boundaryObjects); |
|
111 |
} |
|
112 |
|
|
113 |
/** |
|
114 |
* Calculates the nearest intersection among curve and boundary objects |
|
115 |
* depending on side received as parameter. |
|
116 |
* |
|
117 |
* @param line to be extended |
|
118 |
* @param sideToExtend What side will be extend. Use |
|
119 |
* {@link ExtendLineOperationUtils#START_SIDE} and |
|
120 |
* {@link ExtendLineOperationUtils#END_SIDE} |
|
121 |
* @param boundaryObject to calculate intersection points. |
|
122 |
* @return the nearest intersection point. Return Null if arc does not |
|
123 |
* intersect with any boundary object |
|
124 |
* @throws org.gvsig.fmap.geom.exception.CreateGeometryException |
|
125 |
* @throws org.gvsig.fmap.dal.exception.DataException |
|
126 |
* @throws |
|
127 |
* org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException |
|
128 |
* @throws org.gvsig.fmap.geom.operation.GeometryOperationException |
|
129 |
*/ |
|
130 |
public static Point curveIntersection(Curve line, String sideToExtend, |
|
131 |
Geometry boundaryObject) throws CreateGeometryException, |
|
132 |
DataException, GeometryOperationNotSupportedException, |
|
133 |
GeometryOperationException { |
|
134 |
|
|
135 |
Point initPoint = getExtremeSegmentInitPoint(line, sideToExtend); |
|
136 |
Point endPoint = getExtremeSegmentEndPoint(line, sideToExtend); |
|
137 |
|
|
138 |
return getIntersectionOfProjectedLine(initPoint, endPoint, |
|
139 |
boundaryObject); |
|
140 |
} |
|
141 |
|
|
142 |
private static Point getExtremeSegmentEndPoint(Curve line, String sideToExtend) { |
|
110 | 143 |
// Start side line is formed by second point and first point |
111 | 144 |
if (sideToExtend.equalsIgnoreCase(START_SIDE)) { |
145 |
return line.getVertex(0); |
|
146 |
// End side line is formed by penultimate point and last point |
|
147 |
} else if (sideToExtend.equalsIgnoreCase(END_SIDE)) { |
|
148 |
return line.getVertex(line.getNumVertices() - 1); |
|
149 |
} |
|
150 |
return null; |
|
151 |
} |
|
112 | 152 |
|
113 |
initPoint = line.getVertex(1); |
|
114 |
endPoint = line.getVertex(0); |
|
115 |
|
|
153 |
private static Point getExtremeSegmentInitPoint(Curve line, String sideToExtend) { |
|
154 |
// Start side line is formed by second point and first point |
|
155 |
if (sideToExtend.equalsIgnoreCase(START_SIDE)) { |
|
156 |
return line.getVertex(1); |
|
116 | 157 |
// End side line is formed by penultimate point and last point |
117 | 158 |
} else if (sideToExtend.equalsIgnoreCase(END_SIDE)) { |
118 |
|
|
119 |
initPoint = line.getVertex(line.getNumVertices() - 2); |
|
120 |
endPoint = line.getVertex(line.getNumVertices() - 1); |
|
121 |
|
|
159 |
return line.getVertex(line.getNumVertices() - 2); |
|
122 | 160 |
} |
123 |
|
|
124 |
return getIntersectionOfProjectedLine(initPoint, endPoint, |
|
125 |
boundaryObjects); |
|
161 |
return null; |
|
126 | 162 |
} |
127 | 163 |
|
128 | 164 |
/** |
129 | 165 |
* Calculates the nearest intersection point among arc and boundary objects |
130 |
* depending on side received as parameter. |
|
131 |
* |
|
132 |
* Strategy: |
|
133 |
* |
|
166 |
* depending on side received as parameter.Strategy: |
|
167 |
* |
|
134 | 168 |
* 1- Create a full arc with the same center and radius of arc received by |
135 |
* parameter. |
|
136 |
* 2- Iterate over boundary objects. |
|
137 |
* 3- If some boundary object intersects with full arc, calculates the |
|
138 |
* distance to start point or end point depending on side to be extend. |
|
139 |
* 4- Return the nearest intersection point. |
|
140 |
* |
|
141 |
* @param arcToBeExtended |
|
142 |
* Arc to be extended |
|
143 |
* @param sideToExtend |
|
144 |
* What side will be extend. Use |
|
145 |
* {@link ExtendLineOperationUtils#START_SIDE} and |
|
146 |
* {@link ExtendLineOperationUtils#END_SIDE} |
|
147 |
* @param boundaryObjects |
|
148 |
* to calculate intersection points. |
|
169 |
* parameter.2- Iterate over boundary objects.3- If some boundary object |
|
170 |
* intersects with full arc, calculates the distance to start point or end |
|
171 |
* point depending on side to be extend.4- Return the nearest intersection |
|
172 |
* point. |
|
173 |
* |
|
174 |
* |
|
175 |
* @param arcToBeExtended Arc to be extended |
|
176 |
* @param sideToExtend What side will be extend. Use |
|
177 |
* {@link ExtendLineOperationUtils#START_SIDE} and |
|
178 |
* {@link ExtendLineOperationUtils#END_SIDE} |
|
179 |
* @param boundaryObjects to calculate intersection points. |
|
149 | 180 |
* @return the nearest intersection point. Return Null if arc does not |
150 |
* intersect with any boundary object |
|
181 |
* intersect with any boundary object |
|
182 |
* @throws |
|
183 |
* org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException |
|
184 |
* @throws org.gvsig.fmap.geom.operation.GeometryOperationException |
|
185 |
* @throws org.gvsig.fmap.geom.exception.CreateGeometryException |
|
186 |
* @throws org.gvsig.fmap.dal.exception.DataException |
|
151 | 187 |
*/ |
152 | 188 |
public static Point arcIntersection(Arc arcToBeExtended, |
153 |
String sideToExtend, FeatureSelection boundaryObjects) |
|
154 |
throws GeometryOperationNotSupportedException, |
|
155 |
GeometryOperationException, CreateGeometryException, DataException { |
|
189 |
String sideToExtend, FeatureSelection boundaryObjects)
|
|
190 |
throws GeometryOperationNotSupportedException,
|
|
191 |
GeometryOperationException, CreateGeometryException, DataException {
|
|
156 | 192 |
|
157 | 193 |
GeometryManager geoManager = GeometryLocator.getGeometryManager(); |
158 | 194 |
int subtype = arcToBeExtended.getGeometryType().getSubType(); |
... | ... | |
175 | 211 |
Geometry intersectionGeometry = tmpArc.intersection(geometry); |
176 | 212 |
|
177 | 213 |
if (intersectionGeometry instanceof MultiPoint) { |
178 |
MultiPoint intersectionMultiPoint =
|
|
179 |
(MultiPoint) intersectionGeometry; |
|
214 |
MultiPoint intersectionMultiPoint |
|
215 |
= (MultiPoint) intersectionGeometry;
|
|
180 | 216 |
|
181 | 217 |
for (int i = 0; i < intersectionMultiPoint |
182 |
.getPrimitivesNumber(); i++) { |
|
218 |
.getPrimitivesNumber(); i++) {
|
|
183 | 219 |
Point point = intersectionMultiPoint.getPointAt(i); |
184 | 220 |
double distance = Double.POSITIVE_INFINITY; |
185 | 221 |
|
186 | 222 |
if (sideToExtend.equalsIgnoreCase(START_SIDE)) { |
187 |
distance =
|
|
188 |
point.distance(arcToBeExtended.getInitPoint()); |
|
223 |
distance |
|
224 |
= point.distance(arcToBeExtended.getInitPoint());
|
|
189 | 225 |
} else if (sideToExtend.equalsIgnoreCase(END_SIDE)) { |
190 |
distance =
|
|
191 |
point.distance(arcToBeExtended.getEndPoint()); |
|
226 |
distance |
|
227 |
= point.distance(arcToBeExtended.getEndPoint());
|
|
192 | 228 |
} |
193 | 229 |
|
194 | 230 |
if (distance < minDistance) { |
... | ... | |
201 | 237 |
double distance = Double.POSITIVE_INFINITY; |
202 | 238 |
|
203 | 239 |
if (sideToExtend.equalsIgnoreCase("start")) { |
204 |
distance = |
|
205 |
intersectionPoint.distance(arcToBeExtended |
|
206 |
.getInitPoint()); |
|
240 |
distance |
|
241 |
= intersectionPoint.distance(arcToBeExtended |
|
242 |
.getInitPoint()); |
Also available in: Unified diff