a.schaefer-esri-de-esridist

How to make this switch statement faster? ;-)

Discussion created by a.schaefer-esri-de-esridist on Jul 26, 2010
Latest reply on Jul 26, 2010 by a.schaefer-esri-de-esridist
This is a funny question. How to make this switch statement faster? I have the UTM hemisphere (N for North and S for South) and the UTM zone (1-60) and need to get the WKID to know from where to project my coordinates. Well, this switch statement is huge. ;-)

Diggin' deeper down: I could go another way and parse the zone to the 10s number, then the 1s number, then the hemisphere. Otherwise I could use a dojox dictionary. I decided not to use a dictionary because I thought that another object in memory would be too much. Don't know the best way to handle something like this with JavaScript.

Otherwise: Writing this code was easy, copy and paste the lines directly from the JS-API documentation and change it with find/replace of regular expressions/line feeds/beginning of line/tabs.

Best regards and have a nice day.


function getUTMZone(hemi, zone) {
    if (hemi == "N") {
        switch (zone) {
            case 1:
                return 32601; // WGS_1984_UTM_Zone_1N
                break;
            case 2:
                return 32602; // WGS_1984_UTM_Zone_2N
                break;
            case 3:
                return 32603; // WGS_1984_UTM_Zone_3N
                break;
            case 4:
                return 32604; // WGS_1984_UTM_Zone_4N
                break;
            case 5:
                return 32605; // WGS_1984_UTM_Zone_5N
                break;
            case 6:
                return 32606; // WGS_1984_UTM_Zone_6N
                break;
            case 7:
                return 32607; // WGS_1984_UTM_Zone_7N
                break;
            case 8:
                return 32608; // WGS_1984_UTM_Zone_8N
                break;
            case 9:
                return 32609; // WGS_1984_UTM_Zone_9N
                break;
            case 10:
                return 32610; // WGS_1984_UTM_Zone_10N
                break;
[...]
        }
    } else if (hemi == "S") {
        switch (zone) {
            case 1:
                return 32701; // WGS_1984_UTM_Zone_1S
                break;
            case 2:
                return 32702; // WGS_1984_UTM_Zone_2S
                break;
            case 3:
                return 32703; // WGS_1984_UTM_Zone_3S
                break;
            case 4:
                return 32704; // WGS_1984_UTM_Zone_4S
                break;
            case 5:
                return 32705; // WGS_1984_UTM_Zone_5S
                break;
            case 6:
                return 32706; // WGS_1984_UTM_Zone_6S
                break;
            case 7:
                return 32707; // WGS_1984_UTM_Zone_7S
                break;
            case 8:
                return 32708; // WGS_1984_UTM_Zone_8S
                break;
            case 9:
                return 32709; // WGS_1984_UTM_Zone_9S
                break;
            case 10:
                return 32710; // WGS_1984_UTM_Zone_10S
                break;
      [...]
        }
    }
}

Outcomes