<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
--></style>
</head>
<body class='hmmessage'>
Hola,<br><br>Te pongo el codigo que utilizo para crear el shape y el que he probado para cambiar el registro de la tabla pero que no me funciona, creo que es por el tipo de driver que no es de escritura pero no se como cambiar esto.<br><br>Creo capa :<br><br>
ArrayList XY = new ArrayList();<br><br> XY.add("0"); 'ID<br>
XY.add("200"); 'X<br> XY.add("200"); 'Y<br>
XY.add("Valencia"); 'CIUDAD<br><br> XY.add("1");<br>
XY.add("300"); <br>
XY.add("300"); <br>
XY.add("Madrid");<br><br> XY.add("2");<br>
XY.add("400"); <br>
XY.add("400"); <br>
XY.add("Leon");<br><br> XY.add("3");<br>
XY.add("500"); <br>
XY.add("500"); <br>
XY.add("Murcia");<br><br><br> // DRIVER
DEFINITION (SHAPE TYPE AND FIELDS)<br>
ConcreteMemoryDriver driver = new ConcreteMemoryDriver();<br>
driver.setShapeType(FShape.POINT);<br> <br>
ArrayList arrayFields = new ArrayList();<br><br>
arrayFields.add("ID");<br> arrayFields.add("CIUDAD");<br>
<br> Value[] auxRow = new Value[2];<br> <br>
driver.getTableModel().setColumnIdentifiers(arrayFields.toArray());<br>
<br> View v = (View)
PluginServices.getMDIManager().getActiveWindow();<br>
MapControl mapCtrl = v.getMapControl();<br> <br>
Double x;<br> Double y;<br> <br>
FShape shp1 = null;<br> FShape shpT = null;<br>
<br> <br> for (int j =
0;j<XY.size(); j+=4){<br><br> // ATRIBUTES<br>
auxRow[0] =
ValueFactory.createValue(XY.get(j).toString());<br>
auxRow[1] = ValueFactory.createValue(XY.get(j+3).toString());<br>
<br> // GEOMETRY DEFINITION<br>
<br> x =
Double.parseDouble(XY.get(j+1).toString());<br> y =
Double.parseDouble(XY.get(j+2).toString());<br><br>
shp1 = new FPoint2D(x,y);<br><br>
driver.addShape(shp1, auxRow);<br><br> } <br>
<br> // CREATE AND ADD LAYER<br>
FLayer lyr;<br> String layerName = "Ciudades";<br>
<br> lyr =
LayerFactory.createLayer(layerName,driver, mapCtrl.getProjection()); <br><br>Modificar registro :<br><br> MapControl mapControl = null;<br> <br> IWindow view = PluginServices.getMDIManager().getActiveWindow();<br> if (!(view instanceof View))<br> return;<br> <br> View vista=(View)view;<br> <br> IProjectView model = vista.getModel();<br> MapContext mapa = model.getMapContext();<br> mapControl = vista.getMapControl();<br> <br> double tol = mapControl.getViewPort().toMapDistance(10);<br> <br> FLayers lyrs = mapControl.getMapContext().getLayers();<br> FLyrVect lyrCiudades = (FLyrVect)lyrs.getLayer("Ciudades");<br> <br> Double x;<br> Double y;<br> <br> x = Double.parseDouble("200");<br> y = Double.parseDouble("200");<br> <br> Point2D mapPoint = mapControl.getViewPort().toMapPoint(0,0);<br> <br> mapPoint.setLocation(x, y);<br> <br> FBitSet fb = lyrCiudades.queryByPoint(mapPoint, tol);<br> <br> if (!fb.isEmpty()){<br> <br> EditableAdapter vea = new EditableAdapter();<br> vea.setOriginalDataSource(lyrCiudades.getRecordset());<br> vea.setSelection(fb);<br><br> FBitSet fbs = vea.getSelection();<br> <br> int ix = fbs.nextSetBit(0);<br> IRowEdited row = vea.getRow(ix);<br> Value[] values = row.getAttributes();<br> <br> values[0] = ValueFactory.createValue("0");<br> values[1] = ValueFactory.createValue("Bilbao");<br> <br> <br> IRow newRow = null;<br> if (row.getLinkedRow() instanceof IFeature) {<br> IGeometry geometry = ((DefaultFeature)row.getLinkedRow()).getGeometry();<br> newRow = new DefaultFeature(geometry, values,row.getID());<br> } else {<br> newRow = new DefaultRow(values, row.getID());<br> }<br> <br> if (vea instanceof IWriteable){<br> <br> IWriteable w = (IWriteable) vea;<br> IWriter writer = w.getWriter();<br> <br> if (writer == null){<br> }else{<br> vea.startEdition(EditionEvent.ALPHANUMERIC);<br> vea.modifyRow(ix, newRow, "Editar valor", EditionEvent.ALPHANUMERIC);<br> vea.stopEdition(writer,EditionEvent.ALPHANUMERIC);<br> }<br> }<br> }<br><br> vista.repaintMap();<br> <br>No se si lo estoy haciendo bien, no se si hay otra manera de crear la capa para poder modificar los registros.<br><br>Muchas gracias de antemano.<br><br>Un saludo.<br><br>Virginia<br><br><br><br><br><br>> Date: Tue, 25 May 2010 14:35:51 -0700<br>> From: agirrearri@hotmail.com<br>> To: gvsig_desarrolladores@listserv.gva.es<br>> Subject: Re: [Gvsig_desarrolladores] Editar tabla de un shape<br>> <br>> <br>> Hola, como es el codigo? Porque yo hace poco he creado un shape desde código<br>> y si creas el featureStore ya lo tienes, tienes que crear un nuevo feature.<br>> Para meter un nuevo registro.<br>> Si puedes poner el codigo te puedo orientar donde editar la tabla. <br>> <br>> Atentamente, Eñaut<br>> -- <br>> View this message in context: http://osgeo-org.1803224.n2.nabble.com/Editar-tabla-de-un-shape-tp5097908p5100585.html<br>> Sent from the gvSIG desarrolladores mailing list archive at Nabble.com.<br>> _______________________________________________<br>> gvSIG_desarrolladores mailing list<br>> gvSIG_desarrolladores@listserv.gva.es<br>> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores<br>                                            <br /><hr />¿Sabes que La Gente de Hoy tiene <a href='http://www.vivelive.com/hotmail-la-gente-de-hoy/index.html?spam' target='_new'>GUARDAESPALDAS contra el Spam?</a></body>
</html>