[Gvsig_usuarios] Creación de una capa Shp
Pal Avio
palavio en hotmail.com
Mar Mayo 5 10:11:14 CEST 2009
Buenos días,
tengo un problema, el cual no llego a comprender. ¿De que forma se crea un shape vació?
Yo lo he intentado de dos formas:
1.)
(FLyrVect) LayerFactory.createLayer(strLayerName,
(VectorialFileDriver) drv, newFile, m_mapCtrl.getProjection());
2.)
DriverManager writerManager = LayerFactory.getDM();
Driver pDriverShp = writerManager.getDriver("gvSIG shp driver");
String selectedDriver = pDriverShp.getName();
FieldDescription[] fieldsDesc = new FieldDescription[arrayFields.size()];
for (int i=0; i < arrayFields.size(); i++)
{
fieldsDesc[i] = new FieldDescription();
String strAux = arrayFields.get(i);
int nFind = strAux.indexOf(";");
String strNameColumn = strAux.substring(0, nFind);
int nFindLast = strAux.lastIndexOf(";");
String strType = strAux.substring(nFind+1, nFindLast);
int nFieldLength = Integer.parseInt(strAux.substring(nFindLast+1));
fieldsDesc[i].setFieldName(strNameColumn);
if (strType.equals("String"))
fieldsDesc[i].setFieldType(Types.VARCHAR);
if (strType.equals("Double"))
fieldsDesc[i].setFieldType(Types.DOUBLE);
if (strType.equals("Integer"))
fieldsDesc[i].setFieldType(Types.INTEGER);
if (strType.equals("Boolean"))
fieldsDesc[i].setFieldType(Types.BOOLEAN);
if (strType.equals("Date"))
fieldsDesc[i].setFieldType(Types.DATE);
fieldsDesc[i].setFieldLength(nFieldLength);
if (strType.equals("Double"))
fieldsDesc[i].setFieldDecimalCount(5);
}
Driver drv = LayerFactory.getDM().getDriver(selectedDriver);
File newFile = new File(strPathFile);
SHPLayerDefinition lyrDef = new SHPLayerDefinition();
lyrDef.setFieldsDesc(fieldsDesc);
lyrDef.setFile(newFile);
lyrDef.setName(strLayerName);
lyrDef.setShapeType(nGeometryType);
ShpWriter writer= (ShpWriter)LayerFactory.getWM().getWriter("Shape Writer");
writer.setFile(newFile);
try {
writer.initialize(lyrDef);
writer.preProcess();
writer.postProcess();
} catch (EditionException e) {
e.printStackTrace();
}
En la primera forma, no me crea el fichero físico, por lo que me da un error de que no encuentra el fichero en la ruta dada. Y en la segunda forma me da un error en la línea "ShpWriter writer= (ShpWriter)LayerFactory.getWM().getWriter("Shape Writer");" diciendo lo siguiente:
Exception in thread "AWT-EventQueue-0" com.hardcode.driverManager.DriverLoadException: No se encontró el writer: Shape Writer
at com.hardcode.driverManager.WriterManager.getWriter(Unknown Source)
En otra aplicación que tengo realizada, la segunda opción si funciona, y en ésta, aparentemente está igual, así que no comprendo el porqué.
Un saludo y gracias anticipadamente,
_________________________________________________________________
Recibe toda las noticias de actualidad al instante en tu Messenger
http://especiales.es.msn.com/noticias/msninforma.aspx
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://runas.cap.gva.es/pipermail/gvsig_usuarios/attachments/20090505/442fb1cf/attachment.htm
Más información sobre la lista de distribución gvSIG_usuarios