package scripts; import java.util.*; import java.io.*; import java.util.regex.*; import org.nuiton.topia.TopiaContext; import fr.ifremer.isisfish.entities.*; import fr.ifremer.isisfish.datastore.RegionStorage; import fr.ifremer.isisfish.IsisFishDAOHelper; import fr.ifremer.isisfish.map.GeoTools; /** * importer les shapefiles depuis un dossier * Pour chaque importation préciser la bonne adresse du shapefile, le nom de cette zone et le bon seuil * * Auteur: PHAN Tuan Anh, 2022 * Modifié par : Laura Weingott, 2026 */ public class ImportShapefile { // mettre ici dossier de shapefile String myShpFolder = "C:/Users/lweingot/isis-fish-4/SIG/eco_met_herbiers_2022_ofb_pol_3857"; /** les objets pour manipuler objets isis */ TopiaContext myTX = RegionStorage.getRegion("WestMed_EWG2511_2024").getStorage().beginTransaction(); FisheryRegion myRegion = IsisFishDAOHelper.getFisheryRegionDAO(myTX).findByName("WestMed_EWG2511_2024"); ZoneDAO myZoneDAO = IsisFishDAOHelper.getZoneDAO(myTX); /** lancer le script dans isis */ public static void main(String[] args) { System.out.println("~~~ Start: " + new Date() + " ~~~" + System.lineSeparator()); ImportShapefile myScript = new ImportShapefile(); myScript.importShp(); System.out.println("~~~ Done: " + new Date() + " ~~~"); } /** cœur de ce script */ private void importShp() { String zoneName = "Herbiers_posidonie" ; Zone res = myZoneDAO.findByName(zoneName); if (res != null) { System.out.println(" > zone existed: " + zoneName); } else { System.out.println(" > zone create: " + zoneName); res = myZoneDAO.create(); res.setComment("AUTO_CMT"); res.setName(zoneName); } List listCells = myRegion.getCell(); // modifié par dessus System.out.println("import les shapefiles"); String fileName = myShpFolder + "/eco_met_herbiers_2022_ofb_pol_3857.shp"; File shpFile = new File(fileName); System.out.println("fileName : " + fileName); if (!shpFile.exists()) { System.out.println("shapefile not found"); } else { System.out.println("found shapefile"); PTAtoolbox.affecterShp(myRegion, listCells, res , shpFile); } // save the changes myTX.commitTransaction(); myTX.closeContext(); } // BONUS méthode pour affecter shape public static void affecterShp(FisheryRegion myRegion, List listCells, Zone myZone, File shpFile) { //Collection cellsFromFile = GeoTools.getCellFromShapefile(myRegion, listCells, shpFile,0.5); // getCellFromShapefile(FisheryRegion fisheryRegion, Collection cells, File mapFile, double intersectionPourcentage) // Dans le dernier argument, tu peux mettre le seuil que tu veux (0.5 pour 50%). Collection cellsFromFile = GeoTools.getCellFromShapefile(myRegion, listCells, shpFile, 0.5); myZone.setCell(new ArrayList<>(cellsFromFile)); //convert Collection to List myZone.update(); } }