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.types.Month; import fr.ifremer.isisfish.datastore.RegionStorage; import fr.ifremer.isisfish.IsisFishDAOHelper; import fr.ifremer.isisfish.map.GeoTools; /** * importer les shapefiles depuis un dossier pour zone métier chalutier * nom fichier doit être le même avec les zones * * N.B. il y a une option pour supprimer les carrés spatiaux ! faire attention ! * * Auteur: PHAN Tuan Anh, 2022 * Modification : Antoine Ricouard, 2023 */ public class ImportZoneMetierShapefile_sup12 { // mettre ici dossier de shapefile String myShpFolder = "C:/Users/aricouar/Documents/MesProjets_local/Calibration_ISIS/ImportsMetiers/FlotillesFRA_sup12/metier_zone_shp_plus12"; /** les objets pour manipuler objets isis */ TopiaContext myTX = RegionStorage.getRegion("MACCO_BoB_MixFish_ZoneShpFRA12sup_04avr23").getStorage().beginTransaction(); FisheryRegion myRegion = IsisFishDAOHelper.getFisheryRegionDAO(myTX).findByName("MACCO_BoB_MixFish_ZoneShpFRA12sup_04avr23"); CellDAO myCellDAO = IsisFishDAOHelper.getCellDAO(myTX); // correspondance table String myMetierListFile_old = "C:/Users/aricouar/Documents/MesProjets_local/Calibration_ISIS/ImportsMetiers/FlotillesFRA_sup12/metier_zone_fleet_isis.csv"; // list of metier_zone_fleet_isis in the old definition process String myMetierListFile_true = "C:/Users/aricouar/Documents/MesProjets_local/Calibration_ISIS/ImportsMetiers/FlotillesFRA_sup12/metier_zone_fleet_isis_import.csv"; // list of metier_zone_fleet_isis after agregation of fleets practising the same metier /** lancer le script dans isis */ public static void main(String[] args) { System.out.println("~~~ Start: " + new Date() + " ~~~" + System.lineSeparator()); ImportZoneMetierShapefile_sup12 myScript = new ImportZoneMetierShapefile_sup12(); myScript.runIfTrueDeleteCells(false); // see definition below System.out.println("~~~ Done: " + new Date() + " ~~~"); } /** vrai lancement du script car main() accepte pas ces fx */ public void runIfTrueDeleteCells(boolean deleteCells) { if (deleteCells) { supprimerCarre33(); System.out.println("done delete cells: " + new Date()); // importShp(); } else { importShp(); } // save the changes myTX.commitTransaction(); myTX.closeContext(); } /** * supprimer certains carrés 3’×3’ pour accélérer * il faut fournir un shapefile des carrés à supprimer */ private void supprimerCarre33() { List listCells = myRegion.getCell(); // System.out.println("supprimer les carrés 3’×3’ sur terre"); System.out.println("supprimer les carrés 3’×3’ sans effort"); File shpFile = new File(PTAtoolbox.DATA_FOLDER + "/list_carre33.shp"); Collection cellsFromFile = GeoTools.getCellFromShapefile(myRegion, listCells, shpFile); myCellDAO.deleteAll(cellsFromFile); System.out.println(System.lineSeparator()); } /** cœur de ce script */ private void importShp() { System.out.println("import des shapefiles"); List zoneList_old = PTAtoolbox.readListTxt(myMetierListFile_old); // metiers avec nom format Anh List zoneList_true = PTAtoolbox.readListTxt(myMetierListFile_true); // metiers avec les noms metier_zone_fleet_isis_import List listCells = myRegion.getCell(); // modifié par dessus int i =0; for (String zName_true : zoneList_true) { String zName_old = zoneList_old.get(i); Zone myZone = IsisFishDAOHelper.getZoneDAO(myTX).findByName("zName_true"); System.out.println(" > zone: " + zName_true); File shpFile = new File(myShpFolder+"/"+zName_old+".shp"); if (!shpFile.exists()) { System.out.println(" shapefile not found"); } else { System.out.println(" found shapefile"); PTAtoolbox.affecterShp(myRegion, listCells, myZone, shpFile); } i++; } System.out.println(System.lineSeparator()); } }