Pietro Musella ha scritto: > Ho la necessità di creare tanti shape quanti sono i valori di un > determinato campo. Ho provato ad adoperare Sextante in gvSIG 1.9 > utilizzando “Separate entities” nei Tools for vector layers, ma ottengo > degli shape (*VUOTI*) il cui nome è così composto: [...]
Ottima segnalazione! Il tool e' decisamente bacato (analogamente ad altri tool sui layer vettoriali) e ho quindi provveduto a segnalarlo nel bug tracker di Sextante [1]. L'invito a fare altrettanto e' naturalmente esteso a tutti, nel caso individuaste qualche altro problema con Sextante. Un approccio alternativo consiste nell'utilizzare il tool ogr2ogr della libreria GDAL (FWTools [2] su win). Si potrebbe creare un batch script che, iterando sulle feature dello shapefile in ingresso, restituisca tanti shapefile quante sono le entita' geografiche che soddisfano una particolare condizione (da esprimere mediante una clausola where) basata su un determinato attributo. 1) Supponiamo ad es. che il tuo campo di interesse sia il campo ID (intero, associato univocamente ad ogni feature) e che tu voglia estrarre solo le entita' geografiche con ID compreso tra 5 e 100. Basta creare un file batch nella stessa directory dello shapefile in ingresso, ad es. separate_entities.bat, contenente la seguente istruzione: for /L %%i in (5,1,100) do ogr2ogr -where "ID=%%i" %%i.shp input.shp dove input.shp e' il layer in ingresso e i.shp e' l'i-esimo layer in uscita. 2) Se, invece, il campo e' di tipo stringa, bastera' sostituire la sequenza di numeri nel ciclo con la lista dei valori, appoggiandosi preferibilmente ad un file esterno (soprattutto nel caso in cui i valori siano tanti), ad es. lista.txt: for /F %%i in (lista.txt) do ogr2ogr -where "CAMPO=%%i" %%i.shp input.shp 3) Se, infine, volessi estrarre tutte le feature contenute nello shp, invece dell'opzione -where, conviene utilizzare -fid (che sta per feature id) seguito dalla variabile i, da iterare stavolta da 0 a n-1, dove n e' il numero complessivo delle feature. Se, ad es., n=100 for /L %%i in (0,1,99) do ogr2ogr -fid %%i %%i.shp input.shp Analogo e' il discorso in bash. Il primo caso diventa: #!/bin/bash for i in $(seq 5 1 100) do ogr2ogr -where "ID=$i" $i.shp input.shp done ... e cosi' via. ciao Antonio [1] http://forge.osor.eu/tracker/?func=browse&group_id=13&atid=372 [2] http://fwtools.maptools.org/ -- Antonio Falciano http://www.linkedin.com/in/antoniofalciano _______________________________________________ Gvsig_italian mailing list Gvsig_italian@lists.gvsig.org https://gvsig.org/lists/mailman/listinfo/gvsig_italian