Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [udig-devel] Read/Writeable Layers with Mapgraphics ...and a Comment

For 1. here is a modified version:

                IMap map = ApplicationGIS.getActiveMap();
                IGeoResource resource = null;
                try
                {
                    /* code to construct the underlying feature type for a layer */
                    AttributeType geom = AttributeTypeFactory.newAttributeType("the_geom",
    Geometry.class);
                    AttributeType idType = AttributeTypeFactory.newAttributeType("theid",
    Integer.class);
                    AttributeType nameType =
    AttributeTypeFactory.newAttributeType("thename", String.class);
                    AttributeType descriptionType =
    AttributeTypeFactory.newAttributeType("thedescription", String.class);
                    /* add other attribute types here */
                    FeatureType featureType = FeatureTypeBuilder.newFeatureType(new
    AttributeType[] {geom, idType, nameType, descriptionType}, "2D Area Layer");            
                    resource = CatalogPlugin.getDefault().getLocalCatalog()
                    .createTemporaryResource(featureType);
                } catch (FactoryRegistryException e1)
                {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                } catch (IllegalArgumentException e1)
                {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                } catch (SchemaException e1)
                {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                ApplicationGIS.addLayersToMap(map, Collections.singletonList(resource), 0);


for 2:
I'm not totally sure what you mean for this.  You want to create a Map Graphic for drawing on the layer?  I'm assuming you want to draw anything but they are just drawing and won't be added as features.  Correct?  For this you need 2 layers.  One for the Map Graphic and another for the layer with the data.  The reason is that each layer has exactly one renderer for the layer.  It sounds like you want two.  We have a bug report: 


that will allow the layers view to be configured so it doesn't show MapGraphics.  But for now you can do something like:

        TreeViewer viewer = (TreeViewer) LayersView.getViewer();
        IContentProvider provider = viewer.getContentProvider();
        viewer.setContentProvider(new YourCustomFilteringContentProviderDecorator(provider));

where YourCustomFilteringContentProviderDecorator will filter out all the layers that Resolve to MapGraphics.

Jesse


On 14-Jan-07, at 4:10 PM, ukpete wrote:


A couple of questions (and thanks for taking the time to read them!).

(1) How do I create a layer that isnt read-only?  Where I can use all the
standard tools in the UDig menu?

  I have some code that works, but it uses a deprecated geotools method
(FeatureTypeFactory.newFeatureType):

try
{
Map map = ApplicationGISInternal.getActiveMap();
IGeoResource resource = null;
try
{
/* code to construct the underlying feature type for a layer */
AttributeType geom = AttributeTypeFactory.newAttributeType("the_geom",
Geometry.class);
AttributeType idType = AttributeTypeFactory.newAttributeType("theid",
Integer.class);
AttributeType nameType =
AttributeTypeFactory.newAttributeType("thename", String.class);
AttributeType descriptionType =
AttributeTypeFactory.newAttributeType("thedescription", String.class);
/* add other attribute types here */
FeatureType featureType = FeatureTypeFactory.newFeatureType(new
AttributeType[] {geom, idType, nameType, descriptionType}, "2D Area Layer");
resource = CatalogPlugin.getDefault().getLocalCatalog()
.createTemporaryResource(featureType);
} catch (FactoryRegistryException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IllegalArgumentException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (SchemaException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
Layer layer = map.getLayerFactory().createLayer(resource);

...is there a better (i.e. non-deprecated) way to do this?

(2) I'd like to create a layer with two resources - first a writeable layer
as above, that supports all geometries, and also associate a mapgraphic
extension with that layer to draw on said layer - is there a way to add both
of these resources to the same layer?  I can get one or the other to work
but not both.

..and finally my comment.  What a superb piece of work uDig is, just truly
amazing ... I cant begin to thank you for the effort you have expended and
the effort it has saved me!

Kind Regards,

Pete Cornwell

-- 
Sent from the udig-devel mailing list archive at Nabble.com.

_______________________________________________
User-friendly Desktop Internet GIS (uDig)


Back to the top