So. I'm describing my sequence of steps.
First of all, the Layer contains IGeoResource that is coming from, let's take ShpServiceImpl (and ShapefileDataStore behind service). I get FeatureReader from the FeatureStore of the underlying Layer. Then I read all features one by one, extract a geometry from each feature and change it as I want. The open issue is where to store changed features. In my case I just writes them into the new ShapefileDataStore that I create in the beginning of the process. Actually it means I just create new shapefile. The feature type of this new ShapefileDataStore is the same as a feature type of the ShapefileDataStore from source layer, but the type of geometry is changes (it was a linear - became polygonal). So I read feature from source layer and just create new feature copying necessary attributes from old feature and set new geometry (that is being buffered by JTS stuff). new feature goes to the new ShapefileDataStore. That's it. When the process is done I just create manually ShpServiceImpl or using IServiceFactory - so I have a IService instance with IGeoResource members which I can use to create new layer using any of existing approaches (send command, whatever). Here the new shapefile is created. If you want to use MemoryDataStore (whatever), don't see a problem - just create a MemoryDataStore instead of ShapefileDataStore. The sense is that not the Layer is a recipient of features, but the DataStore. Layer works with IGeoResource's which are from IService that is in its own order a wrapper over DataStore (at least in case of shapefiles). FeatureStore comes from DataStore and you can use it for adding/modifying/removing features. Also FeatureStore/FeatureSource is usually cached inside of Layer and accessible through Layer.getResource(FeatureStore.class,..); DataStore is a primary thing, not the Layer. Regards, Vitali. > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:udig-devel- > [EMAIL PROTECTED] On Behalf Of Adrian Custer > Sent: Tuesday, February 28, 2006 1:10 AM > To: User-friendly Desktop Internet GIS > Subject: RE: [udig-devel] adding a feature to the current map > > Hello, > > Yes, your type of buffer is exactly what I'm trying to do. > > While I would love, eventually, to talk about the details/robustness of > the design, for now I simply want to get *any* result. > > I grab a point layer, extract the features, use their geometries to > buffer and union (JTS operations) then build a feature. Now I need to > make this feature into a "layer". I gather once I have a "layer" I can > create an AddLayerCommand and use IMap.sendCommand(A)Sync() to add the > layer to the map. > > How do we go from having a Geotools Feature to having a uDig Layer? > > thanks, > adrian > > On Mon, 2006-02-27 at 18:59 +0200, Vitali Diatchkov wrote: > > Hello, Adrian! > > What do you mean "buffer operation" ? > > > > I implemented the functionality (for my customers) of buffering the > whole > > layer with linear type of geometry (let's say - roads, represented > > as features with linear type of geometry and the width as a feature > > attribute). In this case the attribute value is used as a width for the > > buffering (linear geometry goes to the polygonal geometry). Buffering > > operation is performed using JTS stuff that is stable and good enough. > > > > Do you mean "buffering" in this sense? > > > > Or is the architectural problem with converting features from one layer > > while the new features should go to another layer? > > > > Could you describe the problem with more details... Probably I will give > > some hints... > > > > Vitali. > > > > > _______________________________________________ > User-friendly Desktop Internet GIS (uDig) > http://udig.refractions.net > http://lists.refractions.net/mailman/listinfo/udig-devel _______________________________________________ User-friendly Desktop Internet GIS (uDig) http://udig.refractions.net http://lists.refractions.net/mailman/listinfo/udig-devel
