[Gvsig_english] Work with geometry

erwan bocher erwan.bocher at gmail.com
Mon Mar 13 09:52:43 CET 2006


Hi Francisco ,

Sorry I have upload jumpBridge.jar.

"By the way: It will be very easy to implement a FeatureDataSet around a
gvSIG VectorialAdapter. So, you will obtain drivers that don't expend memory
in OpenJump.... (A bridge in two directions :-) )"

Yes, this solution is better than jumpBridge but I discover the gvSIG
application slowly.
Could you see the new jumpbridge ?

Un cordial saludo

R1.


On 3/13/06, Francisco José <fpenarru at iver.es> wrote:
>
> Hello Erwan.
>
> Sorry. Here you are the method:
>
>     /**
>      * Receives a JTS Geometry and returns a fmap IGeometry
>      * @param jtsGeometry jts Geometry
>      * @return IGeometry of FMap
>      * @author azabala
>      */
>     public static IGeometry jts_to_igeometry(Geometry jtsGeometry){
>         FShape shape = FConverter.jts_to_java2d(jtsGeometry);
>         return ShapeFactory.createGeometry(shape);
>     }
>
> By the way: It will be very easy to implement a FeatureDataSet around a
> gvSIG VectorialAdapter. So, you will obtain drivers that don't expend memory
> in OpenJump.... (A bridge in two directions :-) )
>
> See you.
>
> PS: jumpBridge.jar only has .class files, there is not source.
>
> erwan bocher escribió:
>
> Hi, Hi,
>
> I have a problem to use jumpBridge because in my FMap version (gvSIG 0.6)
> the method jts_to_igeometry doesn't exist.
> I put the jumpBridge package with jump feature at this link
> http://projetsigle.free.fr/temp/jumpBridge.jar.
>
> Is it possible to look  it?
>
> Thanks
>
> R1.
>
>
> On 3/13/06, erwan bocher < erwan.bocher at gmail.com> wrote:
> >
> > Hi,
> >
> >  A bridge  with gvSIG and JUMP it's a powerful idea. We'll be able to
> > integrate OpenJUMP plugins in gvSIG. I test your method. I'd like to
> > compile a small document to learn how to develop with gvsig.
> >
> > Happy to receive gvsig team in Rennes.
> >
> > Best regards.
> >
> > R1.
> >
> >
> >
> >
> >
> > On 3/12/06, Fran Peñarrubia < fpenarru at iver.es> wrote:
> > >
> > > Hi Erwan.
> > >
> > > I've been watching your tests. Keep going on, they are good and simple
> > > examples.
> > >
> > > About using OpenJump, there are several ways to do that. And it's a
> > > good
> > > exercise to do a bridge between both projects.
> > >
> > > Anyway, gvSIG will have a good geoprocessing set of tools in one month
> > > or
> > > so, we hope. Until then, here you are how can be done:
> > >
> > > You can do a driver around a FeatureDataSet (wrap it) and operate with
> > > this FeatureDataSet. gvSIG will work with this new layer like the
> > > other
> > > ones (I didn't try it, but with some little modifications, it should
> > > do).
> > >
> > > I attach the JumpDriver class, and this is how you can test it:
> > >
> > >         JumpDriver jumpDriver = new JumpDriver();
> > >         FeatureSchema featureSchema = new FeatureSchema();
> > >         featureSchema.addAttribute("GEOMETRY", AttributeType.GEOMETRY
> > > );
> > >
> > >         FeatureDataset fc = new FeatureDataset(featureSchema);
> > >
> > >         jumpDriver.setFeatureDataSet(fc);
> > >         FLayer lJump = LayerFactory.createLayer("JumpLayer",
> > >                 jumpDriver,ProjectionPool.get("EPSG:23030"));
> > >         mapContext.getLayers ().addLayer(lJump);
> > >
> > > You will need to do some mapping to avoid return the geometry field.
> > >
> > > About SQL language and/or scripting in gvSIG, we can talk in detail in
> > > a
> > > few days :-).
> > >
> > > Have fun, and let me know if you can "connect" Jump and gvSIG.
> > >
> > > PS: I paste the JumpDriver.java here to avoid problems with antivirus
> > > and
> > > so on:
> > >
> > > package jumpBridge;
> > >
> > > import java.awt.geom.Rectangle2D;
> > > import java.io.IOException;
> > > import java.sql.Types;
> > > import java.util.Date;
> > >
> > > import com.hardcode.gdbms.engine.data.DataSourceFactory;
> > > import com.hardcode.gdbms.engine.data.driver.DriverException;
> > > import com.hardcode.gdbms.engine.data.driver.ObjectDriver;
> > > import com.hardcode.gdbms.engine.data.edition.DataWare ;
> > > import com.hardcode.gdbms.engine.values.Value;
> > > import com.hardcode.gdbms.engine.values.ValueFactory;
> > > import com.iver.cit.gvsig.fmap.core.FShape;
> > > import com.iver.cit.gvsig.fmap.core.IGeometry;
> > > import com.iver.cit.gvsig.fmap.core.v02.FConverter ;
> > > import com.iver.cit.gvsig.fmap.drivers.DriverAttributes;
> > > import com.iver.cit.gvsig.fmap.drivers.VectorialDriver;
> > > import com.vividsolutions.jump.feature.AttributeType;
> > > import com.vividsolutions.jump.feature.Feature ;
> > > import com.vividsolutions.jump.feature.FeatureDataset;
> > >
> > > public class JumpDriver implements VectorialDriver, ObjectDriver {
> > >
> > >         private FeatureDataset featDataSet = null;
> > >         public int getShapeType() {
> > >                 return FShape.MULTI;
> > >         }
> > >
> > >         public int getShapeCount() throws IOException {
> > >                 return featDataSet.size();
> > >         }
> > >
> > >         public DriverAttributes getDriverAttributes() {
> > >                 return null;
> > >         }
> > >
> > >         public Rectangle2D getFullExtent() throws IOException {
> > >                 return FConverter.convertEnvelopeToRectangle2D(
> > > featDataSet.getEnvelope());
> > >         }
> > >
> > >         public IGeometry getShape(int index) throws IOException {
> > >                 Feature feat = featDataSet.getFeature(index);
> > >                 return FConverter.jts_to_igeometry(feat.getGeometry
> > > ());
> > >         }
> > >
> > >         public void reLoad() throws IOException {
> > >                 // TODO Auto-generated method stub
> > >
> > >         }
> > >
> > >         public String getName() {
> > >                 return "JUMP Driver to gvSIG";
> > >         }
> > >
> > >         public int[] getPrimaryKeys() throws DriverException {
> > >                 // TODO Auto-generated method stub
> > >                 return null;
> > >         }
> > >
> > >         public void write(DataWare dataWare) throws DriverException {
> > >                 // TODO Auto-generated method stub
> > >
> > >         }
> > >
> > >         public void setDataSourceFactory(DataSourceFactory dsf) {
> > >                 // TODO Auto-generated method stub
> > >
> > >         }
> > >
> > >         public Value getFieldValue(long rowIndex, int fieldId) throws
> > > DriverException {
> > >                 Feature feat = featDataSet.getFeature((int) rowIndex);
> > >                 Object att = feat.getAttribute(fieldId);
> > >                 Value val = ValueFactory.createNullValue();
> > >                 if (att instanceof Integer)
> > >                         val = ValueFactory.createValue
> > > (((Integer)att).intValue());
> > >                 if (att instanceof Double)
> > >                         val = ValueFactory.createValue
> > > (((Double)att).doubleValue());
> > >                 if (att instanceof Date)
> > >                         val = ValueFactory.createValue((Date)att);
> > >                 if (att instanceof String)
> > >                         val = ValueFactory.createValue((String)att);
> > >
> > >                 return val;
> > >         }
> > >
> > >         public int getFieldCount() throws DriverException {
> > >                 return featDataSet.getFeatureSchema().getAttributeCount();
> > >         }
> > >
> > >         public String getFieldName(int fieldId) throws DriverException
> > > {
> > >                 //TODO: Un mapping entre los campos reales y otros
> > > excluyendo el de tipo
> > > Geometry
> > >                 // para que no aparezca en la tabla
> > >                 return featDataSet.getFeatureSchema
> > > ().getAttributeName(fieldId);
> > >         }
> > >
> > >         public long getRowCount() throws DriverException {
> > >                 return featDataSet.size();
> > >         }
> > >
> > >         public int getFieldType(int i) throws DriverException {
> > >                 AttributeType attType = featDataSet.getFeatureSchema
> > > ().getAttributeType(i);
> > >                 if ( attType.toString().equals("INTEGER"))
> > >                         return Types.INTEGER;
> > >                 if (attType.toString().equals("DOUBLE"))
> > >                         return Types.DOUBLE;
> > >                 if ( attType.toString().equals("DATE"))
> > >                         return Types.DATE;
> > >                 if (attType.toString().equals("STRING"))
> > >                         return Types.VARCHAR;
> > >
> > >
> > >                 return 0;
> > >         }
> > >
> > >         public FeatureDataset getFeatureDataSet() {
> > >                 return featDataSet;
> > >         }
> > >
> > >         public void setFeatureDataSet(FeatureDataset featDataSet) {
> > >                 this.featDataSet = featDataSet;
> > >         }
> > >
> > > }
> > >
> > >
> > > -----Original Message-----
> > > From: "erwan bocher" < erwan.bocher at gmail.com>
> > > To: gvsig_internacional at runas.cap.gva.es
> > > Date: Sun, 12 Mar 2006 14:50:50 +0100
> > > Subject: [Gvsig_english] Work with geometry
> > >
> > > >  Hola,
> > > >
> > > > I tried to integrate OpenJUMP -Viatoris- geoprocessing menu in
> > > gvSIG.
> > > > First
> > > > I have create small examples functionalities :
> > > > list layers
> > > > list fields layer
> > > > add shape layer...
> > > >
> > > > Now, I'd like to work with geometry. Based on example send by
> > > Francisco
> > > > José
> > > > Peñarrubia I used JTS library for spatial processing but I don't
> > > know
> > > > how to
> > > > transform my geometries in a Flayer in gvSIG.
> > > > To compare in OpenJUMP. My geometry is stored in a feature storing
> > > in a
> > > > featurecollection.
> > > >
> > > > If I want to convert a polygon layer to a linearRing layer I use
> > > this
> > > > method
> > > > :
> > > >
> > > > FeatureCollection fc = layer.getFeatureCollectionWrapper(); //layer
> > > is
> > > > the
> > > > layer selected in OJ
> > > > FeatureSchema fs = fc.getFeatureSchema(); // Pienso que es el modelo
> > > en
> > > > Fmap
> > > > ?
> > > > FeatureCollection resultfc = new FeatureDataset(fc.getFeatureSchema());
> > > > //The new featureCollection
> > > >
> > > > Feature feat;
> > > >
> > > > for (Iterator it = fc.iterator(); it.hasNext();){
> > > > feat = (Feature)it.next(); //feat of layer selected in OJ
> > > > Geometry geom = feat.getGeometry(); //geometry of feat
> > > >
> > > > for (int i = 0; i < feat.getGeometry().getNumGeometries(); i++) {
> > > //If
> > > > they
> > > > are more than two object in feat
> > > > Feature newFeat = new BasicFeature(fs);//The new feature
> > > > FeatureUtil.copyAttributes(feat, newFeat);//Mapping attributes
> > > > newFeat.setGeometry(geom.getBoundary());//New geometry creation
> > > > resultfc.add(newFeat);// add new feature in the new
> > > featureCollection
> > > >
> > > > }
> > > > }
> > > > context.getLayerManager().addLayer("Convert",layer.getName()
> > > > +"_LinearRing"
> > > > , resultfc);
> > > > // Add the new featureCollection as a layer in OpenJUMP. The name of
> > >
> > > > the new
> > > > layer = source layer name + _LinearRing
> > > >
> > > >
> > > > So my questions is:
> > > >
> > > > Is it possible to present a method to realise identic work with FMap
> > > ?
> > > >
> > > >
> > > > Moreover I'm interested to use GDBMS to create a spatial SQL
> > > language
> > > > as
> > > > existing in PostGIS but using layers load in gvSIG. However gvSIG
> > > works
> > > > with
> > > > GDBMS-0.8-SNAPSHOT. Is it planned to integrate the last  GDBMS
> > > (GDBMS
> > > > 1.0) ?
> > > >
> > > > In attached file you can find my gvSIG examples.
> > > >
> > > > Best regards
> > > >
> > > > R1.
> > > >
> > >
> > >
> > > _______________________________________________
> > > Gvsig_internacional mailing list
> > > Gvsig_internacional at runas.cap.gva.es
> > > http://runas.cap.gva.es/mailman/listinfo/gvsig_internacional
> > >
> >
> >
> ------------------------------
>
> _______________________________________________ Gvsig_internacional
> mailing list Gvsig_internacional at runas.cap.gva.es
> http://runas.cap.gva.es/mailman/listinfo/gvsig_internacional
>
>
> --
> Francisco José Peñarrubia
> Equipo gvSIG
>
> IVER T.I. S.A.
> c/Salamanca 50
> 46005 Valencia
> Spain
>
>
> _______________________________________________
> Gvsig_internacional mailing list
> Gvsig_internacional at runas.cap.gva.es
> http://runas.cap.gva.es/mailman/listinfo/gvsig_internacional
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://runas.cap.gva.es/pipermail/gvsig_internacional/attachments/20060313/9d7cc56c/attachment-0001.htm


More information about the Gvsig_internacional mailing list