Difference between revisions of "Beanshell:Create linestring from points with id attribute"

From OpenJUMP Wiki
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;
 
+
map = new TreeMap();
+
// Create new dataset
int i = 0;
+
schema = new FeatureSchema();
for (feature : lyr.featureCollectionWrapper.features) {
+
schema.addAttribute("GEOMETRY",AttributeType.GEOMETRY);
    if (feature.schema.hasAttribute(att)) {
+
dataset = new FeatureDataset(schema);
        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);
 
 
   
 
   
}
+
// 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 08: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);
 
}