Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[udig-devel] Ghost feature on my layer

Hi all,

I would be please if someone could help me to understand what's happening on my layer...

Actually, I created a layer and added a feature on it. I've programmed a visual tool with arrows that let me move my feature on screen. The problem is, as I thought I created only one feature, a clone one has been created too. The cloned layer disappear if I refresh the screen but reappear if I move the othe feature over it...

here are the code extract if that can help:

To create a feature :
Feature[] features = new Feature[1];
        features[0] = feature;
                System.out.println("feature créé : "+ features[0].getID());       
        String featureTypeName = myLayer.getSchema().getTypeName();
        try {
           
            FeatureSource source = myLayer.getResource(FeatureSource.class, ProgressManager.instance().get());
            DataStore dataStore = source.getDataStore();
           
            FeatureStore store = (FeatureStore) dataStore.getFeatureSource(featureTypeName);
            store.setTransaction(transaction);
            store.addFeatures(DataUtilities.collection(features));
            transaction.commit();
           
        } catch (IOException e) {
            transaction.rollback();
            e.printStackTrace();
        } finally {
            transaction.close();
        }

To move the feature :

        DefaultTransaction transaction = new DefaultTransaction("Example1");
       
        try {
        FeatureStore store = (FeatureStore) dataStore.getFeatureSource(featureTypeName);
       
        store.setTransaction( transaction );
       
        FilterFactory ff = FilterFactoryFinder.createFilterFactory();
        //To filter only the selected feature, the featureId has previously been captured
        FidFilter filter2 = ff.createFidFilter();
        filter2.addFid(featureId);
       
        FeatureType featureType = store.getSchema();
       
        AttributeType att = featureType.getDefaultGeometry();
        //geo is the modified Geometry
            store.modifyFeatures(att, geo, filter2);
            transaction.commit();
            System.out.println("Transaction effectué");
        } catch (Exception e) {
            transaction.rollback();
            System.out.println("Rollback effectué");
           
        } finally {
            transaction.close();
        }

The 'cloned' feature ID is like new0 and the created feature ID is like fid-_61883d49_120a475c79a__7ffd
I have the feeling that new0 is not in datastore and has only been created on the graphic layer... but I'm not sure at all...
Any suggestions ?


Back to the top