Ignore:
Timestamp:
2009-11-21T00:18:50+01:00 (15 years ago)
Author:
pieren
Message:

Add subprojection handling

Location:
applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr
Files:
3 added
5 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/CacheControl.java

    r18544 r18720  
    2222import org.openstreetmap.josm.Main;
    2323import org.openstreetmap.josm.data.projection.LambertCC9Zones;
     24import org.openstreetmap.josm.data.projection.UTM_20N_France_DOM;
    2425
    2526public class CacheControl implements Runnable {
    2627   
    2728    public static final String cLambertCC9Z = "CC";
     29
     30    public static final String cUTM20N = "UTM";
    2831
    2932    public class ObjectOutputStreamAppend extends ObjectOutputStream {
     
    8790            if (Main.proj instanceof LambertCC9Zones)
    8891                extension = cLambertCC9Z + extension;
     92            else if (Main.proj instanceof UTM_20N_France_DOM)
     93                extension = cUTM20N + extension;
    8994            File file = new File(CadastrePlugin.cacheDir + wmsLayer.getName() + "." + extension);
    9095            if (file.exists()) {
     
    167172                if (Main.proj instanceof LambertCC9Zones)
    168173                    extension = cLambertCC9Z + extension;
     174                else if (Main.proj instanceof UTM_20N_France_DOM)
     175                    extension = cUTM20N + extension;
    169176                File file = new File(CadastrePlugin.cacheDir + wmsLayer.getName() + "." + extension);
    170177                try {
  • applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/CadastrePlugin.java

    r18547 r18720  
    2525import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
    2626import org.openstreetmap.josm.plugins.Plugin;
     27import org.openstreetmap.josm.data.coor.EastNorth;
     28import org.openstreetmap.josm.data.coor.LatLon;
    2729import org.openstreetmap.josm.data.projection.*;
    2830
     
    129131
    130132        UploadAction.registerUploadHook(new CheckSourceUploadHook());
     133       
     134        Lambert proj = new Lambert();
     135        LatLon ll = new LatLon(48.559902360278954, 7.75309953770033);
     136        EastNorth ea = proj.latlon2eastNorth(ll);
     137        System.out.println(ea);
    131138    }
    132139
     
    154161
    155162            JMenuItem menuResetCookie = new JMenuItem(new MenuActionResetCookie());
    156             JMenuItem menuLambertZone = new JMenuItem(new MenuActionLambertZone());
     163            //JMenuItem menuLambertZone = new JMenuItem(new MenuActionLambertZone());
    157164            JMenuItem menuLoadFromCache = new JMenuItem(new MenuActionLoadFromCache());
     165            // temporary disabled:
    158166            //JMenuItem menuActionBoundaries = new JMenuItem(new MenuActionBoundaries());
    159167            //JMenuItem menuActionBuildings = new JMenuItem(new MenuActionBuildings());
     
    164172            cadastreJMenu.add(menuSource);
    165173            cadastreJMenu.add(menuResetCookie);
    166             cadastreJMenu.add(menuLambertZone);
     174            //cadastreJMenu.add(menuLambertZone);
    167175            cadastreJMenu.add(menuLoadFromCache);
    168176            // all SVG features disabled until official WMS is released
     
    229237                    item.getText().equals(MenuActionBuildings.name)*/) {
    230238                    item.setEnabled(isEnabled);
    231                 } else if (item.getText().equals(MenuActionLambertZone.name)) {
    232                     item.setEnabled(!isEnabled);
    233239                }
    234240        }
     
    244250            } else if (oldFrame != null && newFrame == null) {
    245251                setEnabledAll(false);
    246                 Lambert.layoutZone = -1;
    247                 LambertCC9Zones.layoutZone = -1;
     252                //Lambert.layoutZone = -1;
     253                //LambertCC9Zones.layoutZone = -1;
    248254            }
    249255        }
     
    251257   
    252258    public static boolean isCadastreProjection() {
    253             return Main.proj.toString().equals(new Lambert().toString())
    254             || Main.proj.toString().equals(new UTM_20N_Guadeloupe_Fort_Marigot().toString())
    255             || Main.proj.toString().equals(new UTM_20N_Guadeloupe_Ste_Anne().toString())
    256             || Main.proj.toString().equals(new UTM_20N_Martinique_Fort_Desaix().toString())
     259        return Main.proj.toString().equals(new Lambert().toString())
     260            || Main.proj.toString().equals(new UTM_20N_France_DOM().toString())
    257261            || Main.proj.toString().equals(new GaussLaborde_Reunion().toString())
    258262            || Main.proj.toString().equals(new LambertCC9Zones().toString());
  • applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/MenuActionLoadFromCache.java

    r18544 r18720  
    1313import org.openstreetmap.josm.data.projection.Lambert;
    1414import org.openstreetmap.josm.data.projection.LambertCC9Zones;
     15import org.openstreetmap.josm.data.projection.UTM_20N_France_DOM;
    1516import org.openstreetmap.josm.gui.layer.Layer;
    1617
     
    3031
    3132        File[] files = fc.getSelectedFiles();
     33        int layoutZone = getCurrentProjZone();
    3234        nextFile:
    3335        for (File file : files) {
     
    3537                String filename = file.getName();
    3638                String ext = (filename.lastIndexOf(".")==-1)?"":filename.substring(filename.lastIndexOf(".")+1,filename.length());
    37                 if ((ext.length() > 2 && ext.substring(0, CacheControl.cLambertCC9Z.length()).equals(CacheControl.cLambertCC9Z) &&
     39                if ((ext.length() == 3 && ext.substring(0, CacheControl.cLambertCC9Z.length()).equals(CacheControl.cLambertCC9Z) &&
    3840                    !(Main.proj instanceof LambertCC9Zones))
     41                    || (ext.length() == 4 && ext.substring(0, CacheControl.cUTM20N.length()).equals(CacheControl.cUTM20N) &&
     42                            !(Main.proj instanceof UTM_20N_France_DOM))
    3943                    || (ext.length() == 1) && !(Main.proj instanceof Lambert)) {
    4044                        JOptionPane.showMessageDialog(Main.parent, tr("{0} not allowed with the current projection", filename), tr("Error"), JOptionPane.ERROR_MESSAGE);
     
    4246                } else {
    4347                    String location = filename.substring(0, filename.lastIndexOf("."));
    44                     if (ext.length() > 2 && ext.substring(0, CacheControl.cLambertCC9Z.length()).equals(CacheControl.cLambertCC9Z))
     48                    if (ext.length() == 3 && ext.substring(0, CacheControl.cLambertCC9Z.length()).equals(CacheControl.cLambertCC9Z))
    4549                        ext = ext.substring(2);
    46                     // check the extension and its Lambert zone consistency
     50                    else if (ext.length() == 4 && ext.substring(0, CacheControl.cUTM20N.length()).equals(CacheControl.cUTM20N))
     51                        ext = ext.substring(3);
     52                    // check the extension and its compatibility with current projection
    4753                    try {
    4854                        int cacheZone = Integer.parseInt(ext) - 1;
    49                         if (cacheZone >=0 && cacheZone <= 3) {
    50                             if (Lambert.layoutZone == -1) {
    51                                 Lambert.layoutZone = cacheZone;
    52                                 System.out.println("Load cache \"" + filename + "\" in Lambert Zone " + (Lambert.layoutZone+1));
    53                             } else if (cacheZone != Lambert.layoutZone) {
    54                                 System.out.println("Cannot load cache \"" + filename + "\" which is not in current Lambert Zone "
    55                                         + Lambert.layoutZone);
     55                        if (cacheZone >=0 && cacheZone <= 9) {
     56                            if (cacheZone != layoutZone) {
     57                                JOptionPane.showMessageDialog(Main.parent, tr("Cannot load cache {0} which is not compatible with current projection zone", filename), tr("Error"), JOptionPane.ERROR_MESSAGE);
    5658                                continue nextFile;
    5759                            } else
     
    5961                        }
    6062                    } catch (NumberFormatException ex) {
    61                         System.out.println("Selected file \"" + filename + "\" is not a WMS cache file (invalid extension)");
    62                         continue;
     63                        JOptionPane.showMessageDialog(Main.parent, tr("Selected file {0} is not a cache file from this plugin (invalid extension)", filename), tr("Error"), JOptionPane.ERROR_MESSAGE);
     64                        continue nextFile;
    6365                    }
    6466                    // check if the selected cache is not already displayed
     
    6668                        for (Layer l : Main.map.mapView.getAllLayers()) {
    6769                            if (l instanceof WMSLayer && l.getName().equals(location)) {
    68                                 System.out.println("The location " + filename + " is already on screen. Cache not loaded.");
     70                                JOptionPane.showMessageDialog(Main.parent, tr("The location {0} is already on screen. Cache not loaded.", filename), tr("Error"), JOptionPane.ERROR_MESSAGE);
    6971                                continue nextFile;
    7072                            }
     
    7375                    // create layer and load cache
    7476                    WMSLayer wmsLayer = new WMSLayer("", "", Integer.parseInt(ext)-1);
    75                     if (wmsLayer.getCacheControl().loadCache(file, Lambert.layoutZone))
     77                    if (wmsLayer.getCacheControl().loadCache(file, layoutZone))
    7678                        Main.main.addLayer(wmsLayer);
    7779                   
     
    8587        JFileChooser fc = new JFileChooser(new File(CadastrePlugin.cacheDir));
    8688        fc.setMultiSelectionEnabled(true);
    87         if (Lambert.layoutZone != -1)
    88             fc.addChoosableFileFilter(CacheFileFilter.filters[Lambert.layoutZone]);
     89        int layoutZone = new MenuActionLoadFromCache().getCurrentProjZone();
     90        if (layoutZone != -1) {
     91            if (Main.proj instanceof Lambert)
     92                fc.addChoosableFileFilter(CacheFileLambert4ZoneFilter.filters[layoutZone]);
     93            else if (Main.proj instanceof LambertCC9Zones)
     94                fc.addChoosableFileFilter(CacheFileLambert9ZoneFilter.filters[layoutZone]);
     95            else if (Main.proj instanceof UTM_20N_France_DOM)
     96                fc.addChoosableFileFilter(CacheFileUTM20NFilter.filters[layoutZone]);
     97        }
    8998        fc.setAcceptAllFileFilterUsed(false);
    9099
     
    96105    }
    97106
     107    private int getCurrentProjZone() {
     108        int zone = -1;
     109        if (Main.proj instanceof LambertCC9Zones)
     110            zone = ((LambertCC9Zones)Main.proj).getLayoutZone();
     111        else if (Main.proj instanceof Lambert)
     112            zone = ((Lambert)Main.proj).getLayoutZone();
     113        else if (Main.proj instanceof UTM_20N_France_DOM)
     114            zone = ((UTM_20N_France_DOM)Main.proj).getCurrentGeodesic();
     115        return zone;
     116    }
    98117}
  • applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/MenuActionNewLocation.java

    r18544 r18720  
    1717import org.openstreetmap.josm.data.projection.Lambert;
    1818import org.openstreetmap.josm.data.projection.LambertCC9Zones;
     19import org.openstreetmap.josm.data.projection.UTM_20N_France_DOM;
    1920import org.openstreetmap.josm.gui.layer.Layer;
    2021import org.openstreetmap.josm.tools.GBC;
     
    8182                }
    8283                // add the layer if it doesn't exist
     84                int zone = -1;
    8385                if (Main.proj instanceof LambertCC9Zones)
    84                     wmsLayer = new WMSLayer(location, codeCommune, LambertCC9Zones.layoutZone);
    85                 else
    86                     wmsLayer = new WMSLayer(location, codeCommune, Lambert.layoutZone);
     86                    zone = ((LambertCC9Zones)Main.proj).getLayoutZone();
     87                else if (Main.proj instanceof Lambert)
     88                    zone = ((Lambert)Main.proj).getLayoutZone();
     89                else if (Main.proj instanceof UTM_20N_France_DOM)
     90                    zone = ((UTM_20N_France_DOM)Main.proj).getCurrentGeodesic();
     91                wmsLayer = new WMSLayer(location, codeCommune, zone);
    8792                Main.main.addLayer(wmsLayer);
    8893                System.out.println("Add new layer with Location:" + inputTown.getText());
  • applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/WMSLayer.java

    r18595 r18720  
    2929import org.openstreetmap.josm.data.coor.EastNorth;
    3030import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
    31 import org.openstreetmap.josm.data.projection.LambertCC9Zones;
    3231import org.openstreetmap.josm.gui.MapView;
    3332import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
     
    517516    public void setCommuneBBox(EastNorthBound entireCommune) {
    518517        this.communeBBox = entireCommune;
    519         if (Main.proj instanceof LambertCC9Zones)
    520             setLambertCC9Zone(communeBBox.min.north());
     518//        if (Main.proj instanceof LambertCC9Zones)
     519//            setLambertCC9Zone(communeBBox.min.north());
    521520    }
    522521
     
    532531    }
    533532
    534     public void setLambertCC9Zone(double north) {
    535         int lambertZone = LambertCC9Zones.north2ZoneNumber(north);
    536         this.lambertZone = lambertZone;
    537         if (LambertCC9Zones.layoutZone != lambertZone) {
    538             String currentZone = MenuActionLambertZone.lambert9zones[LambertCC9Zones.layoutZone+1];
    539             String destZone = MenuActionLambertZone.lambert9zones[lambertZone+1];
    540             if (Main.map.mapView.getAllLayers().size() == 1) {
    541                 /* Enable this code below when JOSM will have a proper support of dynamic projection change
    542                  *
    543                 System.out.println("close all layers and change current Lambert zone from "+LambertCC9Zones.layoutZone+" to "+lambertZone);
    544                 Bounds b = null;
    545                 if (Main.map != null && Main.map.mapView != null)
    546                     b = Main.map.mapView.getRealBounds();
    547                 LambertCC9Zones.layoutZone = lambertZone;
    548                 Main.map.mapView.zoomTo(b);
    549                 */
    550             } else {
    551                 JOptionPane.showMessageDialog(Main.parent, tr("Current layer is in Lambert CC9 Zone \"{0}\"\n"+
    552                         "where the commune is in Lambert CC9 Zone \"{1}\".\n"+
    553                         "Upload your changes, close all layers and change\n"+
    554                         "manually the Lambert zone from the Cadastre menu"
    555                         , currentZone, destZone));
    556             }
    557         }
    558     }
     533//    public void setLambertCC9Zone(double north) {
     534//        int lambertZone = LambertCC9Zones.north2ZoneNumber(north);
     535//        this.lambertZone = lambertZone;
     536//        if (((LambertCC9Zones)Main.proj).getLayoutZone() != lambertZone) {
     537//            String currentZone = MenuActionLambertZone.lambert9zones[((LambertCC9Zones)Main.proj).getLayoutZone()+1];
     538//            String destZone = MenuActionLambertZone.lambert9zones[lambertZone+1];
     539//            if (Main.map.mapView.getAllLayers().size() == 1) {
     540//                /* Enable this code below when JOSM will have a proper support of dynamic projection change
     541//                 *
     542//                System.out.println("close all layers and change current Lambert zone from "+LambertCC9Zones.layoutZone+" to "+lambertZone);
     543//                Bounds b = null;
     544//                if (Main.map != null && Main.map.mapView != null)
     545//                    b = Main.map.mapView.getRealBounds();
     546//                LambertCC9Zones.layoutZone = lambertZone;
     547//                Main.map.mapView.zoomTo(b);
     548//                */
     549//            } else {
     550//                JOptionPane.showMessageDialog(Main.parent, tr("Current layer is in Lambert CC9 Zone \"{0}\"\n"+
     551//                        "where the commune is in Lambert CC9 Zone \"{1}\".\n"+
     552//                        "Upload your changes, close all layers and change\n"+
     553//                        "manually the Lambert zone from the Cadastre menu"
     554//                        , currentZone, destZone));
     555//            }
     556//        }
     557//    }
    559558
    560559    public EastNorth getRasterCenter() {
Note: See TracChangeset for help on using the changeset viewer.