Difference between revisions of "Beanshell:Create linestring from points with id attribute"
Jump to navigation
Jump to search
Line 2: | Line 2: | ||
containing the order of points | containing the order of points | ||
− | |||
− | import com.vividsolutions.jump.workbench.ui.*; | + | { |
− | + | ||
− | dialog = new MultiInputDialog(wc.workbench.frame, "Input box", true); | + | import com.vividsolutions.jump.workbench.ui.*; |
− | dialog.addLayerComboBox("LAYER", wc.createPlugInContext().getCandidateLayer(0), "", wc.layerManager); | + | |
− | dialog.addAttributeComboBox("SEQUENCE", "LAYER", AttributeTypeFilter.NUMSTRING_FILTER, "Select the attribute containing the sequence"); | + | // User interface |
− | GUIUtil.centreOnWindow(dialog); | + | dialog = new MultiInputDialog(wc.workbench.frame, "Input box", true); |
− | dialog.setVisible(true); | + | dialog.addLayerComboBox("LAYER", wc.createPlugInContext().getCandidateLayer(0), "", wc.layerManager); |
− | if (!dialog.wasOKPressed()) {return;} | + | dialog.addAttributeComboBox("SEQUENCE", "LAYER", AttributeTypeFilter.NUMSTRING_FILTER, "Select the attribute containing the sequence"); |
− | + | GUIUtil.centreOnWindow(dialog); | |
− | lyr = dialog.getLayer("LAYER"); | + | dialog.setVisible(true); |
− | att = dialog.getComboBox("SEQUENCE").selectedItem; | + | if (!dialog.wasOKPressed()) {return;} |
− | + | ||
− | schema = new FeatureSchema(); | + | // get parameters |
− | schema.addAttribute("GEOMETRY",AttributeType.GEOMETRY); | + | lyr = dialog.getLayer("LAYER"); |
− | dataset = new FeatureDataset(schema | + | att = dialog.getComboBox("SEQUENCE").selectedItem; |
− | + | ||
− | + | // Create new dataset | |
− | + | schema = new FeatureSchema(); | |
− | + | schema.addAttribute("GEOMETRY",AttributeType.GEOMETRY); | |
− | + | dataset = new FeatureDataset(schema); | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | } | + | // Processing input data |
+ | map = new TreeMap(); | ||
+ | int i = 0; | ||
+ | for (feature : lyr.featureCollectionWrapper.features) { | ||
+ | if (feature.schema.hasAttribute(att)) { | ||
+ | map.put(feature.getAttribute(att), feature.geometry.coordinate); | ||
+ | } | ||
+ | else map.put(i++, feature.geometry.coordinate); | ||
+ | } | ||
+ | geometry = new GeometryFactory().createLineString(map.values().toArray(new Coordinate[map.size()])); | ||
+ | f = new BasicFeature(schema); | ||
+ | f.setGeometry(geometry); | ||
+ | dataset.add(f); | ||
+ | wc.layerManager.addLayer("Result",lyr.name+"-line",dataset); | ||
+ | |||
+ | } |
Latest revision as of 07:20, 14 September 2016
BeanTools with user interface to create a LineString from points with an attribute containing the order of points
{ import com.vividsolutions.jump.workbench.ui.*; // User interface dialog = new MultiInputDialog(wc.workbench.frame, "Input box", true); dialog.addLayerComboBox("LAYER", wc.createPlugInContext().getCandidateLayer(0), "", wc.layerManager); dialog.addAttributeComboBox("SEQUENCE", "LAYER", AttributeTypeFilter.NUMSTRING_FILTER, "Select the attribute containing the sequence"); GUIUtil.centreOnWindow(dialog); dialog.setVisible(true); if (!dialog.wasOKPressed()) {return;} // get parameters lyr = dialog.getLayer("LAYER"); att = dialog.getComboBox("SEQUENCE").selectedItem; // Create new dataset schema = new FeatureSchema(); schema.addAttribute("GEOMETRY",AttributeType.GEOMETRY); dataset = new FeatureDataset(schema); // Processing input data map = new TreeMap(); int i = 0; for (feature : lyr.featureCollectionWrapper.features) { if (feature.schema.hasAttribute(att)) { map.put(feature.getAttribute(att), feature.geometry.coordinate); } else map.put(i++, feature.geometry.coordinate); } geometry = new GeometryFactory().createLineString(map.values().toArray(new Coordinate[map.size()])); f = new BasicFeature(schema); f.setGeometry(geometry); dataset.add(f); wc.layerManager.addLayer("Result",lyr.name+"-line",dataset); }