View Javadoc
1   /*******************************************************************************
2    *   Gisgraphy Project 
3    * 
4    *   This library is free software; you can redistribute it and/or
5    *   modify it under the terms of the GNU Lesser General Public
6    *   License as published by the Free Software Foundation; either
7    *   version 2.1 of the License, or (at your option) any later version.
8    * 
9    *   This library is distributed in the hope that it will be useful,
10   *   but WITHOUT ANY WARRANTY; without even the implied warranty of
11   *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12   *   Lesser General Public License for more details.
13   * 
14   *   You should have received a copy of the GNU Lesser General Public
15   *   License along with this library; if not, write to the Free Software
16   *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
17   * 
18   *  Copyright 2008  Gisgraphy project 
19   *  David Masclet <davidmasclet@gisgraphy.com>
20   *  
21   *  
22   *******************************************************************************/
23  package com.gisgraphy.domain.valueobject;
24  
25  import java.util.HashMap;
26  import java.util.Locale;
27  import java.util.Map;
28  import java.util.MissingResourceException;
29  import java.util.ResourceBundle;
30  
31  import org.slf4j.Logger;
32  import org.slf4j.LoggerFactory;
33  import org.springframework.context.i18n.LocaleContextHolder;
34  
35  import com.gisgraphy.domain.geoloc.entity.*;
36  
37  /**
38   * List of all feature codes with their feature class with a localized
39   * description and an associated java Object.<br>
40   * A {@link FeatureCode} is represented by a stringwith this pattern :
41   * featureclass_featureCode
42   * 
43   * @see <a href="http://download.geonames.org/export/dump/featureCodes.txt">The
44   *      feature code files</a>
45   * @see #getObject().
46   * @author <a href="mailto:david.masclet@gisgraphy.com">David Masclet</a>
47   */
48  public enum FeatureCode {
49      A_ADM1 {
50  	@Override
51  	public GisFeature getObject() {
52  	    return new Adm(1);
53  	}
54      },
55      A_ADM2 {
56  	@Override
57  	public GisFeature getObject() {
58  	    return new Adm(2);
59  	}
60      },
61      A_ADM3 {
62  	@Override
63  	public GisFeature getObject() {
64  	    return new Adm(3);
65  	}
66      },
67      A_ADM4 {
68  	@Override
69  	public GisFeature getObject() {
70  	    return new Adm(4);
71  	}
72      },
73      A_ADMD {
74  	@Override
75  	public GisFeature getObject() {
76  	    return new GisFeature();
77  	}
78      },
79      A_LTER {
80  	@Override
81  	public GisFeature getObject() {
82  	    return new PoliticalEntity();
83  	}
84      },
85      A_PCL {
86  	@Override
87  	public GisFeature getObject() {
88  	    return new Country();
89  	}
90      },
91      A_PCLD {
92  	@Override
93  	public GisFeature getObject() {
94  	    return new PoliticalEntity();
95  	}
96      },
97      A_PCLF {
98  	@Override
99  	public GisFeature getObject() {
100 	    return new PoliticalEntity();
101 	}
102     },
103     A_PCLI {
104 	@Override
105 	public GisFeature getObject() {
106 	    return new Country();
107 	}
108     },
109     A_PCLIX {
110 	@Override
111 	public GisFeature getObject() {
112 	    return new PoliticalEntity();
113 	}
114     },
115     A_PCLS {
116 	@Override
117 	public GisFeature getObject() {
118 	    return new PoliticalEntity();
119 	}
120     },
121     A_PRSH {
122 	@Override
123 	public GisFeature getObject() {
124 	    return new Religious();
125 	}
126     },
127     A_TERR {
128 	@Override
129 	public GisFeature getObject() {
130 	    return new GisFeature();
131 	}
132     },
133     A_ZN {
134 	@Override
135 	public GisFeature getObject() {
136 	    return new GisFeature();
137 	}
138     },
139     A_ZNB {
140 	@Override
141 	public GisFeature getObject() {
142 	    return new GisFeature();
143 	}
144     },
145     H_AIRS {
146 	@Override
147 	public GisFeature getObject() {
148 	    return new GisFeature();
149 	}
150     },
151     H_ANCH {
152 	@Override
153 	public GisFeature getObject() {
154 	    return new WaterBody();
155 	}
156     },
157     H_BAY {
158 	@Override
159 	public GisFeature getObject() {
160 	    return new Bay();
161 	}
162     },
163     H_BAYS {
164 	@Override
165 	public GisFeature getObject() {
166 	    return new Bay();
167 	}
168     },
169     H_BGHT {
170 	@Override
171 	public GisFeature getObject() {
172 	    return new Bay();
173 	}
174     },
175     H_BNK {
176 	@Override
177 	public GisFeature getObject() {
178 	    return new WaterBody();
179 	}
180     },
181     H_BNKR {
182 	@Override
183 	public GisFeature getObject() {
184 	    return new WaterBody();
185 	}
186     },
187     H_BNKX {
188 	@Override
189 	public GisFeature getObject() {
190 	    return new WaterBody();
191 	}
192     },
193     H_BOG {
194 	@Override
195 	public GisFeature getObject() {
196 	    return new WaterBody();
197 	}
198     },
199     H_CAPG {
200 	@Override
201 	public GisFeature getObject() {
202 	    return new Ice();
203 	}
204     },
205     H_CHN {
206 	@Override
207 	public GisFeature getObject() {
208 	    return new Stream();
209 	}
210     },
211     H_CHNL {
212 	@Override
213 	public GisFeature getObject() {
214 	    return new Stream();
215 	}
216     },
217     H_CHNM {
218 	@Override
219 	public GisFeature getObject() {
220 	    return new Stream();
221 	}
222     },
223     H_CHNN {
224 	@Override
225 	public GisFeature getObject() {
226 	    return new Stream();
227 	}
228     },
229     H_CNFL {
230 	@Override
231 	public GisFeature getObject() {
232 	    return new Stream();
233 	}
234     },
235     H_CNL {
236 	@Override
237 	public GisFeature getObject() {
238 	    return new Stream();
239 	}
240     },
241     H_CNLA {
242 	@Override
243 	public GisFeature getObject() {
244 	    return new Aqueduc();
245 	}
246     },
247     H_CNLB {
248 	@Override
249 	public GisFeature getObject() {
250 	    return new Stream();
251 	}
252     },
253     H_CNLD {
254 	@Override
255 	public GisFeature getObject() {
256 	    return new Stream();
257 	}
258     },
259     H_CNLI {
260 	@Override
261 	public GisFeature getObject() {
262 	    return new Stream();
263 	}
264     },
265     H_CNLN {
266 	@Override
267 	public GisFeature getObject() {
268 	    return new Stream();
269 	}
270     },
271     H_CNLQ {
272 	@Override
273 	public GisFeature getObject() {
274 	    return new Stream();
275 	}
276     },
277     H_CNLSB {
278 	@Override
279 	public GisFeature getObject() {
280 	    return new Stream();
281 	}
282     },
283     H_CNLX {
284 	@Override
285 	public GisFeature getObject() {
286 	    return new Stream();
287 	}
288     },
289     H_COVE {
290 	@Override
291 	public GisFeature getObject() {
292 	    return new WaterBody();
293 	}
294     },
295     H_CRKT {
296 	@Override
297 	public GisFeature getObject() {
298 	    return new WaterBody();
299 	}
300     },
301     H_CRNT {
302 	@Override
303 	public GisFeature getObject() {
304 	    return new WaterBody();
305 	}
306     },
307     H_CUTF {
308 	@Override
309 	public GisFeature getObject() {
310 	    return new WaterBody();
311 	}
312     },
313     H_DCK {
314 	@Override
315 	public GisFeature getObject() {
316 	    return new WaterBody();
317 	}
318     },
319     H_DCKB {
320 	@Override
321 	public GisFeature getObject() {
322 	    return new WaterBody();
323 	}
324     },
325     H_DOMG {
326 	@Override
327 	public GisFeature getObject() {
328 	    return new Ice();
329 	}
330     },
331     H_DPRG {
332 	@Override
333 	public GisFeature getObject() {
334 	    return new Ice();
335 	}
336     },
337     H_DTCH {
338 	@Override
339 	public GisFeature getObject() {
340 	    return new WaterBody();
341 	}
342     },
343     H_DTCHD {
344 	@Override
345 	public GisFeature getObject() {
346 	    return new WaterBody();
347 	}
348     },
349     H_DTCHI {
350 	@Override
351 	public GisFeature getObject() {
352 	    return new WaterBody();
353 	}
354     },
355     H_DTCHM {
356 	@Override
357 	public GisFeature getObject() {
358 	    return new WaterBody();
359 	}
360     },
361     H_ESTY {
362 	@Override
363 	public GisFeature getObject() {
364 	    return new Bay();
365 	}
366     },
367     H_FISH {
368 	@Override
369 	public GisFeature getObject() {
370 	    return new FishingArea();
371 	}
372     },
373     H_FJD {
374 	@Override
375 	public GisFeature getObject() {
376 	    return new Fjord();
377 	}
378     },
379     H_FJDS {
380 	@Override
381 	public GisFeature getObject() {
382 	    return new Fjord();
383 	}
384     },
385     H_FLLS {
386 	@Override
387 	public GisFeature getObject() {
388 	    return new Falls();
389 	}
390     },
391     H_FLLSX {
392 	@Override
393 	public GisFeature getObject() {
394 	    return new Falls();
395 	}
396     },
397     H_FLTM {
398 	@Override
399 	public GisFeature getObject() {
400 	    return new WaterBody();
401 	}
402     },
403     H_FLTT {
404 	@Override
405 	public GisFeature getObject() {
406 	    return new WaterBody();
407 	}
408     },
409     H_GLCR {
410 	@Override
411 	public GisFeature getObject() {
412 	    return new Ice();
413 	}
414     },
415     H_GULF {
416 	@Override
417 	public GisFeature getObject() {
418 	    return new Gulf();
419 	}
420     },
421     H_GYSR {
422 	@Override
423 	public GisFeature getObject() {
424 	    return new GisFeature();
425 	}
426     },
427     H_HBR {
428 	@Override
429 	public GisFeature getObject() {
430 	    return new Port();
431 	}
432     },
433     H_HBRX {
434 	@Override
435 	public GisFeature getObject() {
436 	    return new Port();
437 	}
438     },
439     H_INLT {
440 	@Override
441 	public GisFeature getObject() {
442 	    return new WaterBody();
443 	}
444     },
445     H_INLTQ {
446 	@Override
447 	public GisFeature getObject() {
448 	    return new WaterBody();
449 	}
450     },
451     H_LBED {
452 	@Override
453 	public GisFeature getObject() {
454 	    return new Lake();
455 	}
456     },
457     H_LGN {
458 	@Override
459 	public GisFeature getObject() {
460 	    return new WaterBody();
461 	}
462     },
463     H_LGNS {
464 	@Override
465 	public GisFeature getObject() {
466 	    return new WaterBody();
467 	}
468     },
469     H_LGNX {
470 	@Override
471 	public GisFeature getObject() {
472 	    return new WaterBody();
473 	}
474     },
475     H_LK {
476 	@Override
477 	public GisFeature getObject() {
478 	    return new Lake();
479 	}
480     },
481     H_LKC {
482 	@Override
483 	public GisFeature getObject() {
484 	    return new Lake();
485 	}
486     },
487     H_LKI {
488 	@Override
489 	public GisFeature getObject() {
490 	    return new Lake();
491 	}
492     },
493     H_LKN {
494 	@Override
495 	public GisFeature getObject() {
496 	    return new Lake();
497 	}
498     },
499     H_LKNI {
500 	@Override
501 	public GisFeature getObject() {
502 	    return new Lake();
503 	}
504     },
505     H_LKO {
506 	@Override
507 	public GisFeature getObject() {
508 	    return new Lake();
509 	}
510     },
511     H_LKOI {
512 	@Override
513 	public GisFeature getObject() {
514 	    return new Lake();
515 	}
516     },
517     H_LKS {
518 	@Override
519 	public GisFeature getObject() {
520 	    return new Lake();
521 	}
522     },
523     H_LKSB {
524 	@Override
525 	public GisFeature getObject() {
526 	    return new Lake();
527 	}
528     },
529     H_LKSC {
530 	@Override
531 	public GisFeature getObject() {
532 	    return new Lake();
533 	}
534     },
535     H_LKSI {
536 	@Override
537 	public GisFeature getObject() {
538 	    return new Lake();
539 	}
540     },
541     H_LKSN {
542 	@Override
543 	public GisFeature getObject() {
544 	    return new Lake();
545 	}
546     },
547     H_LKSNI {
548 	@Override
549 	public GisFeature getObject() {
550 	    return new Lake();
551 	}
552     },
553     H_LKX {
554 	@Override
555 	public GisFeature getObject() {
556 	    return new Lake();
557 	}
558     },
559     H_MFGN {
560 	@Override
561 	public GisFeature getObject() {
562 	    return new Pond();
563 	}
564     },
565     H_MGV {
566 	@Override
567 	public GisFeature getObject() {
568 	    return new Pond();
569 	}
570     },
571     H_MOOR {
572 	@Override
573 	public GisFeature getObject() {
574 	    return new GisFeature();
575 	}
576     },
577     H_MRSH {
578 	@Override
579 	public GisFeature getObject() {
580 	    return new Pond();
581 	}
582     },
583     H_MRSHN {
584 	@Override
585 	public GisFeature getObject() {
586 	    return new Pond();
587 	}
588     },
589     H_NRWS {
590 	@Override
591 	public GisFeature getObject() {
592 	    return new Pond();
593 	}
594     },
595     H_OCN {
596 	@Override
597 	public GisFeature getObject() {
598 	    return new Ocean();
599 	}
600     },
601     H_OVF {
602 	@Override
603 	public GisFeature getObject() {
604 	    return new WaterBody();
605 	}
606     },
607     H_PND {
608 	@Override
609 	public GisFeature getObject() {
610 	    return new Pond();
611 	}
612     },
613     H_PNDI {
614 	@Override
615 	public GisFeature getObject() {
616 	    return new Pond();
617 	}
618     },
619     H_PNDN {
620 	@Override
621 	public GisFeature getObject() {
622 	    return new Pond();
623 	}
624     },
625     H_PNDNI {
626 	@Override
627 	public GisFeature getObject() {
628 	    return new Pond();
629 	}
630     },
631     H_PNDS {
632 	@Override
633 	public GisFeature getObject() {
634 	    return new Pond();
635 	}
636     },
637     H_PNDSF {
638 	@Override
639 	public GisFeature getObject() {
640 	    return new Pond();
641 	}
642     },
643     H_PNDSI {
644 	@Override
645 	public GisFeature getObject() {
646 	    return new Pond();
647 	}
648     },
649     H_PNDSN {
650 	public GisFeature getObject() {
651 	    return new Pond();
652 	}
653     },
654     H_POOL {
655 	public GisFeature getObject() {
656 	    return new WaterBody();
657 	}
658     },
659     H_POOLI {
660 	public GisFeature getObject() {
661 	    return new WaterBody();
662 	}
663     },
664     H_RCH {
665 	public GisFeature getObject() {
666 	    return new Stream();
667 	}
668     },
669     H_RDGG {
670 	public GisFeature getObject() {
671 	    return new Ice();
672 	}
673     },
674     H_RDST {
675 	public GisFeature getObject() {
676 	    return new GisFeature();
677 	}
678     },
679     H_RF {
680 	public GisFeature getObject() {
681 	    return new Reef();
682 	}
683     },
684     H_RFC {
685 	public GisFeature getObject() {
686 	    return new Reef();
687 	}
688     },
689     H_RFX {
690 	public GisFeature getObject() {
691 	    return new Reef();
692 	}
693     },
694     H_RPDS {
695 	public GisFeature getObject() {
696 	    return new Stream();
697 	}
698     },
699     H_RSV {
700 	public GisFeature getObject() {
701 	    return new WaterBody();
702 	}
703     },
704     H_RSVI {
705 	public GisFeature getObject() {
706 	    return new WaterBody();
707 	}
708     },
709     H_RSVT {
710 	public GisFeature getObject() {
711 	    return new WaterBody();
712 	}
713     },
714     H_RVN {
715 	public GisFeature getObject() {
716 	    return new Ravin();
717 	}
718     },
719     H_SBKH {
720 	public GisFeature getObject() {
721 	    return new GisFeature();
722 	}
723     },
724     H_SD {
725 	public GisFeature getObject() {
726 	    return new WaterBody();
727 	}
728     },
729     H_SEA {
730 	public GisFeature getObject() {
731 	    return new Sea();
732 	}
733     },
734     H_SHOL {
735 	public GisFeature getObject() {
736 	    return new GisFeature();
737 	}
738     },
739     H_SILL {
740 	public GisFeature getObject() {
741 	    return new GisFeature();
742 	}
743     },
744     H_SPNG {
745 	public GisFeature getObject() {
746 	    return new Spring();
747 	}
748     },
749     H_SPNS {
750 	public GisFeature getObject() {
751 	    return new Spring();
752 	}
753     },
754     H_SPNT {
755 	public GisFeature getObject() {
756 	    return new Spring();
757 	}
758     },
759     H_STM {
760 	public GisFeature getObject() {
761 	    return new Stream();
762 	}
763     },
764     H_STMA {
765 	public GisFeature getObject() {
766 	    return new Stream();
767 	}
768     },
769     H_STMB {
770 	public GisFeature getObject() {
771 	    return new Stream();
772 	}
773     },
774     H_STMC {
775 	public GisFeature getObject() {
776 	    return new Stream();
777 	}
778     },
779     H_STMD {
780 	public GisFeature getObject() {
781 	    return new Stream();
782 	}
783     },
784     H_STMH {
785 	public GisFeature getObject() {
786 	    return new Stream();
787 	}
788     },
789     H_STMI {
790 	public GisFeature getObject() {
791 	    return new Stream();
792 	}
793     },
794     H_STMIX {
795 	public GisFeature getObject() {
796 	    return new Stream();
797 	}
798     },
799     H_STMM {
800 	public GisFeature getObject() {
801 	    return new Stream();
802 	}
803     },
804     H_STMQ {
805 	public GisFeature getObject() {
806 	    return new Stream();
807 	}
808     },
809     H_STMS {
810 	public GisFeature getObject() {
811 	    return new Stream();
812 	}
813     },
814     H_STMSB {
815 	public GisFeature getObject() {
816 	    return new Stream();
817 	}
818     },
819     H_STMX {
820 	public GisFeature getObject() {
821 	    return new Stream();
822 	}
823     },
824     H_STRT {
825 	public GisFeature getObject() {
826 	    return new Strait();
827 	}
828     },
829     H_SWMP {
830 	public GisFeature getObject() {
831 	    return new Marsh();
832 	}
833     },
834     H_SYSI {
835 	public GisFeature getObject() {
836 	    return new WaterBody();
837 	}
838     },
839     H_TNLC {
840 	public GisFeature getObject() {
841 	    return new Tunnel();
842 	}
843     },
844     H_WAD {
845 	public GisFeature getObject() {
846 	    return new Stream();
847 	}
848     },
849     H_WADB {
850 	public GisFeature getObject() {
851 	    return new Stream();
852 	}
853     },
854     H_WADJ {
855 	public GisFeature getObject() {
856 	    return new Stream();
857 	}
858     },
859     H_WADM {
860 	public GisFeature getObject() {
861 	    return new Stream();
862 	}
863     },
864     H_WADS {
865 	public GisFeature getObject() {
866 	    return new Stream();
867 	}
868     },
869     H_WADX {
870 	public GisFeature getObject() {
871 	    return new Stream();
872 	}
873     },
874     H_WHRL {
875 	public GisFeature getObject() {
876 	    return new GisFeature();
877 	}
878     },
879     H_WLL {
880 	public GisFeature getObject() {
881 	    return new GisFeature();
882 	}
883     },
884     H_WLLQ {
885 	public GisFeature getObject() {
886 	    return new GisFeature();
887 	}
888     },
889     H_WLLS {
890 	public GisFeature getObject() {
891 	    return new GisFeature();
892 	}
893     },
894     H_WTLD {
895 	public GisFeature getObject() {
896 	    return new GisFeature();
897 	}
898     },
899     H_WTLDI {
900 	public GisFeature getObject() {
901 	    return new GisFeature();
902 	}
903     },
904     H_WTRC {
905 	public GisFeature getObject() {
906 	    return new Stream();
907 	}
908     },
909     H_WTRH {
910 	public GisFeature getObject() {
911 	    return new WaterBody();
912 	}
913     },
914     L_AGRC {
915 	public GisFeature getObject() {
916 	    return new GisFeature();
917 	}
918     },
919     L_AMUS {
920 	public GisFeature getObject() {
921 	    return new AmusePark();
922 	}
923     },
924     L_AREA {
925 	public GisFeature getObject() {
926 	    return new GisFeature();
927 	}
928     },
929     L_BSND {
930 	public GisFeature getObject() {
931 	    return new WaterBody();
932 	}
933     },
934     L_BSNP {
935 	public GisFeature getObject() {
936 	    return new GisFeature();
937 	}
938     },
939     L_BTL {
940 	public GisFeature getObject() {
941 	    return new Military();
942 	}
943     },
944     L_CLG {
945 	public GisFeature getObject() {
946 	    return new GisFeature();
947 	}
948     },
949     L_CMN {
950 	public GisFeature getObject() {
951 	    return new Park();
952 	}
953     },
954     L_CNS {
955 	public GisFeature getObject() {
956 	    return new GisFeature();
957 	}
958     },
959     L_COLF {
960 	public GisFeature getObject() {
961 	    return new GisFeature();
962 	}
963     },
964     L_CONT {
965 	public GisFeature getObject() {
966 	    return new Continent();
967 	}
968     },
969     L_CST {
970 	public GisFeature getObject() {
971 	    return new Coast();
972 	}
973     },
974     L_CTRB {
975 	public GisFeature getObject() {
976 	    return new GisFeature();
977 	}
978     },
979     L_DEVH {
980 	public GisFeature getObject() {
981 	    return new GisFeature();
982 	}
983     },
984     L_FLD {
985 	public GisFeature getObject() {
986 	    return new Field();
987 	}
988     },
989     L_FLDI {
990 	public GisFeature getObject() {
991 	    return new Field();
992 	}
993     },
994     L_GASF {
995 	public GisFeature getObject() {
996 	    return new Field();
997 	}
998     },
999     L_GRAZ {
1000 	public GisFeature getObject() {
1001 	    return new Field();
1002 	}
1003     },
1004     L_GVL {
1005 	public GisFeature getObject() {
1006 	    return new Field();
1007 	}
1008     },
1009     L_INDS {
1010 	public GisFeature getObject() {
1011 	    return new GisFeature();
1012 	}
1013     },
1014     L_LAND {
1015 	public GisFeature getObject() {
1016 	    return new Ice();
1017 	}
1018     },
1019     L_LCTY {
1020 	public GisFeature getObject() {
1021 	    return new City();
1022 	}
1023     },
1024     L_MILB {
1025 	public GisFeature getObject() {
1026 	    return new Military();
1027 	}
1028     },
1029     L_MNA {
1030 	public GisFeature getObject() {
1031 	    return new Mine();
1032 	}
1033     },
1034     L_MVA {
1035 	public GisFeature getObject() {
1036 	    return new Military();
1037 	}
1038     },
1039     L_NVB {
1040 	public GisFeature getObject() {
1041 	    return new Military();
1042 	}
1043     },
1044     L_OAS {
1045 	public GisFeature getObject() {
1046 	    return new Oasis();
1047 	}
1048     },
1049     L_OILF {
1050 	public GisFeature getObject() {
1051 	    return new Field();
1052 	}
1053     },
1054     L_PEAT {
1055 	public GisFeature getObject() {
1056 	    return new GisFeature();
1057 	}
1058     },
1059     L_PRK {
1060 	public GisFeature getObject() {
1061 	    return new Park();
1062 	}
1063     },
1064     L_PRT {
1065 	public GisFeature getObject() {
1066 	    return new Port();
1067 	}
1068     },
1069     L_QCKS {
1070 	public GisFeature getObject() {
1071 	    return new GisFeature();
1072 	}
1073     },
1074     L_REP {
1075 	public GisFeature getObject() {
1076 	    return new GisFeature();
1077 	}
1078     },
1079     L_RES {
1080 	public GisFeature getObject() {
1081 	    return new Reserve();
1082 	}
1083     },
1084     L_RESA {
1085 	public GisFeature getObject() {
1086 	    return new Reserve();
1087 	}
1088     },
1089     L_RESF {
1090 	public GisFeature getObject() {
1091 	    return new Forest();
1092 	}
1093     },
1094     L_RESH {
1095 	public GisFeature getObject() {
1096 	    return new Reserve();
1097 	}
1098     },
1099     L_RESN {
1100 	public GisFeature getObject() {
1101 	    return new Reserve();
1102 	}
1103     },
1104     L_RESP {
1105 	public GisFeature getObject() {
1106 	    return new Reserve();
1107 	}
1108     },
1109     L_RESV {
1110 	public GisFeature getObject() {
1111 	    return new Reserve();
1112 	}
1113     },
1114     L_RESW {
1115 	public GisFeature getObject() {
1116 	    return new Reserve();
1117 	}
1118     },
1119     L_RGN {
1120 	public GisFeature getObject() {
1121 	    return new GisFeature();
1122 	}
1123     },
1124     L_RGNE {
1125 	public GisFeature getObject() {
1126 	    return new GisFeature();
1127 	}
1128     },
1129     L_RGNL {
1130 	public GisFeature getObject() {
1131 	    return new GisFeature();
1132 	}
1133     },
1134     L_RNGA {
1135 	public GisFeature getObject() {
1136 	    return new Military();
1137 	}
1138     },
1139     L_SALT {
1140 	public GisFeature getObject() {
1141 	    return new WaterBody();
1142 	}
1143     },
1144     L_SNOW {
1145 	public GisFeature getObject() {
1146 	    return new Ice();
1147 	}
1148     },
1149     L_TRB {
1150 	public GisFeature getObject() {
1151 	    return new GisFeature();
1152 	}
1153     },
1154     L_ZZZZZ {
1155 	public GisFeature getObject() {
1156 	    return new GisFeature();
1157 	}
1158     },
1159     P_PPL {
1160 	public GisFeature getObject() {
1161 	    return new City();
1162 	}
1163     },
1164     P_PPLA {
1165 	public GisFeature getObject() {
1166 	    return new City();
1167 	}
1168     },
1169     P_PPLA2 {
1170 	public GisFeature getObject() {
1171 	    return new City();
1172 	}
1173     },
1174     P_PPLA3 {
1175 	public GisFeature getObject() {
1176 	    return new City();
1177 	}
1178     },
1179     P_PPLA4 {
1180 	public GisFeature getObject() {
1181 	    return new City();
1182 	}
1183     },
1184     P_PPLC {
1185 	public GisFeature getObject() {
1186 	    return new City();
1187 	}
1188     },
1189     P_PPLG {
1190 	public GisFeature getObject() {
1191 	    return new City();
1192 	}
1193     },
1194     P_PPLL {
1195 	public GisFeature getObject() {
1196 	    return new City();
1197 	}
1198     },
1199     P_PPLQ {
1200 	public GisFeature getObject() {
1201 	    return new City();
1202 	}
1203     },
1204     P_PPLR {
1205 	public GisFeature getObject() {
1206 	    return new City();
1207 	}
1208     },
1209     P_PPLS {
1210 	public GisFeature getObject() {
1211 	    return new City();
1212 	}
1213     },
1214     P_PPLW {
1215 	public GisFeature getObject() {
1216 	    return new City();
1217 	}
1218     },
1219     P_PPLX {
1220 	public GisFeature getObject() {
1221 	    return new CitySubdivision();
1222 	}
1223     },
1224     P_STLMT {
1225 	public GisFeature getObject() {
1226 	    return new City();
1227 	}
1228     },
1229     R_CSWY {
1230 	public GisFeature getObject() {
1231 	    return new GisFeature();
1232 	}
1233     },
1234     R_CSWYQ {
1235 	public GisFeature getObject() {
1236 	    return new GisFeature();
1237 	}
1238     },
1239     R_OILP {
1240 	public GisFeature getObject() {
1241 	    return new GisFeature();
1242 	}
1243     },
1244     R_PRMN {
1245 	public GisFeature getObject() {
1246 	    return new GisFeature();
1247 	}
1248     },
1249     R_PTGE {
1250 	public GisFeature getObject() {
1251 	    return new GisFeature();
1252 	}
1253     },
1254     R_RD {
1255 	public GisFeature getObject() {
1256 	    return new Road();
1257 	}
1258     },
1259     R_RDA {
1260 	public GisFeature getObject() {
1261 	    return new Road();
1262 	}
1263     },
1264     R_RDB {
1265 	public GisFeature getObject() {
1266 	    return new Road();
1267 	}
1268     },
1269     R_RDCUT {
1270 	public GisFeature getObject() {
1271 	    return new Road();
1272 	}
1273     },
1274     R_RDJCT {
1275 	public GisFeature getObject() {
1276 	    return new Road();
1277 	}
1278     },
1279     R_RJCT {
1280 	public GisFeature getObject() {
1281 	    return new Rail();
1282 	}
1283     },
1284     R_RR {
1285 	public GisFeature getObject() {
1286 	    return new Rail();
1287 	}
1288     },
1289     R_RRQ {
1290 	public GisFeature getObject() {
1291 	    return new Rail();
1292 	}
1293     },
1294     R_RTE {
1295 	public GisFeature getObject() {
1296 	    return new Road();
1297 	}
1298     },
1299     R_RYD {
1300 	public GisFeature getObject() {
1301 	    return new Rail();
1302 	}
1303     },
1304     R_ST {
1305 	public GisFeature getObject() {
1306 	    return new Street();
1307 	}
1308     },
1309     R_STKR {
1310 	public GisFeature getObject() {
1311 	    return new GisFeature();
1312 	}
1313     },
1314     R_TNL {
1315 	public GisFeature getObject() {
1316 	    return new Tunnel();
1317 	}
1318     },
1319     R_TNLN {
1320 	public GisFeature getObject() {
1321 	    return new Tunnel();
1322 	}
1323     },
1324     R_TNLRD {
1325 	public GisFeature getObject() {
1326 	    return new Tunnel();
1327 	}
1328     },
1329     R_TNLRR {
1330 	public GisFeature getObject() {
1331 	    return new Tunnel();
1332 	}
1333     },
1334     R_TNLS {
1335 	public GisFeature getObject() {
1336 	    return new Tunnel();
1337 	}
1338     },
1339     R_TRL {
1340 	public GisFeature getObject() {
1341 	    return new Road();
1342 	}
1343     },
1344     S_ADMF {
1345 	public GisFeature getObject() {
1346 	    return new Building();
1347 	}
1348     },
1349     S_AGRF {
1350 	public GisFeature getObject() {
1351 	    return new Building();
1352 	}
1353     },
1354     S_AIRB {
1355 	public GisFeature getObject() {
1356 	    return new Building();
1357 	}
1358     },
1359     S_AIRF {
1360 	public GisFeature getObject() {
1361 	    return new Airport();
1362 	}
1363     },
1364     S_AIRH {
1365 	public GisFeature getObject() {
1366 	    return new Airport();
1367 	}
1368     },
1369     S_AIRP {
1370 	public GisFeature getObject() {
1371 	    return new Airport();
1372 	}
1373     },
1374     S_AIRQ {
1375 	public GisFeature getObject() {
1376 	    return new Airport();
1377 	}
1378     },
1379     S_AMTH {
1380 	public GisFeature getObject() {
1381 	    return new Theater();
1382 	}
1383     },
1384     S_ANS {
1385 	public GisFeature getObject() {
1386 	    return new GisFeature();
1387 	}
1388     },
1389     S_ARCH {
1390 	public GisFeature getObject() {
1391 	    return new GisFeature();
1392 	}
1393     },
1394     S_ASTR {
1395 	public GisFeature getObject() {
1396 	    return new GisFeature();
1397 	}
1398     },
1399     S_ASYL {
1400 	public GisFeature getObject() {
1401 	    return new GisFeature();
1402 	}
1403     },
1404     S_ATHF {
1405 	public GisFeature getObject() {
1406 	    return new Stadium();
1407 	}
1408     },
1409     S_ATM {
1410 	public GisFeature getObject() {
1411 	    return new ATM();
1412 	}
1413     },
1414     S_BANK {
1415 	public GisFeature getObject() {
1416 	    return new Bank();
1417 	}
1418     },
1419     S_BCN {
1420 	public GisFeature getObject() {
1421 	    return new GisFeature();
1422 	}
1423     },
1424     S_BDG {
1425 	public GisFeature getObject() {
1426 	    return new Bridge();
1427 	}
1428     },
1429     S_BDGQ {
1430 	public GisFeature getObject() {
1431 	    return new Bridge();
1432 	}
1433     },
1434     S_BLDG {
1435 	public GisFeature getObject() {
1436 	    return new Pond();
1437 	}
1438     },
1439     S_BP {
1440 	public GisFeature getObject() {
1441 	    return new GisFeature();
1442 	}
1443     },
1444     S_BRKS {
1445 	public GisFeature getObject() {
1446 	    return new Military();
1447 	}
1448     },
1449     S_BRKW {
1450 	public GisFeature getObject() {
1451 	    return new Military();
1452 	}
1453     },
1454     S_BSTN {
1455 	public GisFeature getObject() {
1456 	    return new GisFeature();
1457 	}
1458     },
1459     S_BTYD {
1460 	public GisFeature getObject() {
1461 	    return new GisFeature();
1462 	}
1463     },
1464     S_BUR {
1465 	public GisFeature getObject() {
1466 	    return new Cemetery();
1467 	}
1468     },
1469     S_BUSTN {
1470 	public GisFeature getObject() {
1471 	    return new BusStation();
1472 	}
1473     },
1474     S_BUSTP {
1475 	public GisFeature getObject() {
1476 	    return new BusStation();
1477 	}
1478     },
1479     S_CARN {
1480 	public GisFeature getObject() {
1481 	    return new GisFeature();
1482 	}
1483     },
1484     S_CAVE {
1485 	public GisFeature getObject() {
1486 	    return new Vineyard();
1487 	}
1488     },
1489     S_CH {
1490 	public GisFeature getObject() {
1491 	    return new Religious();
1492 	}
1493     },
1494     S_CMP {
1495 	public GisFeature getObject() {
1496 	    return new Camp();
1497 	}
1498     },
1499     S_CMPL {
1500 	public GisFeature getObject() {
1501 	    return new Camp();
1502 	}
1503     },
1504     S_CMPLA {
1505 	public GisFeature getObject() {
1506 	    return new Camp();
1507 	}
1508     },
1509     S_CMPMN {
1510 	public GisFeature getObject() {
1511 	    return new Mine();
1512 	}
1513     },
1514     S_CMPO {
1515 	public GisFeature getObject() {
1516 	    return new Camp();
1517 	}
1518     },
1519     S_CMPQ {
1520 	public GisFeature getObject() {
1521 	    return new Camp();
1522 	}
1523     },
1524     S_CMPRF {
1525 	public GisFeature getObject() {
1526 	    return new Camp();
1527 	}
1528     },
1529     S_CMTY {
1530 	public GisFeature getObject() {
1531 	    return new Cemetery();
1532 	}
1533     },
1534     S_COMC {
1535 	public GisFeature getObject() {
1536 	    return new GisFeature();
1537 	}
1538     },
1539     S_CRRL {
1540 	public GisFeature getObject() {
1541 	    return new GisFeature();
1542 	}
1543     },
1544     S_CSNO {
1545 	public GisFeature getObject() {
1546 	    return new Casino();
1547 	}
1548     },
1549     S_CSTL {
1550 	public GisFeature getObject() {
1551 	    return new Castle();
1552 	}
1553     },
1554     S_CSTM {
1555 	public GisFeature getObject() {
1556 	    return new CustomsPost();
1557 	}
1558     },
1559     S_CTHSE {
1560 	public GisFeature getObject() {
1561 	    return new CourtHouse();
1562 	}
1563     },
1564     S_CTRA {
1565 	public GisFeature getObject() {
1566 	    return new GisFeature();
1567 	}
1568     },
1569     S_CTRCM {
1570 	public GisFeature getObject() {
1571 	    return new GisFeature();
1572 	}
1573     },
1574     S_CTRF {
1575 	public GisFeature getObject() {
1576 	    return new GisFeature();
1577 	}
1578     },
1579     S_CTRM {
1580 	public GisFeature getObject() {
1581 	    return new Hospital();
1582 	}
1583     },
1584     S_CTRR {
1585 	public GisFeature getObject() {
1586 	    return new Religious();
1587 	}
1588     },
1589     S_CTRS {
1590 	public GisFeature getObject() {
1591 	    return new GisFeature();
1592 	}
1593     },
1594     S_CVNT {
1595 	public GisFeature getObject() {
1596 	    return new Religious();
1597 	}
1598     },
1599     S_DAM {
1600 	public GisFeature getObject() {
1601 	    return new Dam();
1602 	}
1603     },
1604     S_DAMQ {
1605 	public GisFeature getObject() {
1606 	    return new GisFeature();
1607 	}
1608     },
1609     S_DAMSB {
1610 	public GisFeature getObject() {
1611 	    return new GisFeature();
1612 	}
1613     },
1614     S_DARY {
1615 	public GisFeature getObject() {
1616 	    return new GisFeature();
1617 	}
1618     },
1619     S_DCKD {
1620 	public GisFeature getObject() {
1621 	    return new WaterBody();
1622 	}
1623     },
1624     S_DCKY {
1625 	public GisFeature getObject() {
1626 	    return new GisFeature();
1627 	}
1628     },
1629     S_DIKE {
1630 	public GisFeature getObject() {
1631 	    return new GisFeature();
1632 	}
1633     },
1634     S_DPOF {
1635 	public GisFeature getObject() {
1636 	    return new GisFeature();
1637 	}
1638     },
1639     S_EST {
1640 	public GisFeature getObject() {
1641 	    return new GisFeature();
1642 	}
1643     },
1644     S_ESTB {
1645 	public GisFeature getObject() {
1646 	    return new Plantation();
1647 	}
1648     },
1649     S_ESTC {
1650 	public GisFeature getObject() {
1651 	    return new Plantation();
1652 	}
1653     },
1654     S_ESTO {
1655 	public GisFeature getObject() {
1656 	    return new Plantation();
1657 	}
1658     },
1659     S_ESTR {
1660 	public GisFeature getObject() {
1661 	    return new Plantation();
1662 	}
1663     },
1664     S_ESTSG {
1665 	public GisFeature getObject() {
1666 	    return new Plantation();
1667 	}
1668     },
1669     S_ESTSL {
1670 	public GisFeature getObject() {
1671 	    return new Plantation();
1672 	}
1673     },
1674     S_ESTT {
1675 	public GisFeature getObject() {
1676 	    return new Plantation();
1677 	}
1678     },
1679     S_ESTX {
1680 	public GisFeature getObject() {
1681 	    return new Plantation();
1682 	}
1683     },
1684     S_FCL {
1685 	public GisFeature getObject() {
1686 	    return new GisFeature();
1687 	}
1688     },
1689     S_FNDY {
1690 	public GisFeature getObject() {
1691 	    return new GisFeature();
1692 	}
1693     },
1694     S_FRM {
1695 	public GisFeature getObject() {
1696 	    return new Farm();
1697 	}
1698     },
1699     S_FRMQ {
1700 	public GisFeature getObject() {
1701 	    return new Farm();
1702 	}
1703     },
1704     S_FRMS {
1705 	public GisFeature getObject() {
1706 	    return new GisFeature();
1707 	}
1708     },
1709     S_FRMT {
1710 	public GisFeature getObject() {
1711 	    return new Farm();
1712 	}
1713     },
1714     S_FT {
1715 	public GisFeature getObject() {
1716 	    return new GisFeature();
1717 	}
1718     },
1719     S_FY {
1720 	public GisFeature getObject() {
1721 	    return new GisFeature();
1722 	}
1723     },
1724     S_GATE {
1725 	public GisFeature getObject() {
1726 	    return new GisFeature();
1727 	}
1728     },
1729     S_GDN {
1730 	public GisFeature getObject() {
1731 	    return new Garden();
1732 	}
1733     },
1734     S_GHSE {
1735 	public GisFeature getObject() {
1736 	    return new GisFeature();
1737 	}
1738     },
1739     S_GOSP {
1740 	public GisFeature getObject() {
1741 	    return new GisFeature();
1742 	}
1743     },
1744     S_GRVE {
1745 	public GisFeature getObject() {
1746 	    return new Cemetery();
1747 	}
1748     },
1749     S_HERM {
1750 	public GisFeature getObject() {
1751 	    return new GisFeature();
1752 	}
1753     },
1754     S_HLT {
1755 	public GisFeature getObject() {
1756 	    return new GisFeature();
1757 	}
1758     },
1759     S_HSE {
1760 	public GisFeature getObject() {
1761 	    return new House();
1762 	}
1763     },
1764     S_HSEC {
1765 	public GisFeature getObject() {
1766 	    return new House();
1767 	}
1768     },
1769     S_HSP {
1770 	public GisFeature getObject() {
1771 	    return new Hospital();
1772 	}
1773     },
1774     S_HSPC {
1775 	public GisFeature getObject() {
1776 	    return new Hospital();
1777 	}
1778     },
1779     S_HSPD {
1780 	public GisFeature getObject() {
1781 	    return new Religious();
1782 	}
1783     },
1784     S_HSPL {
1785 	public GisFeature getObject() {
1786 	    return new GisFeature();
1787 	}
1788     },
1789     S_HSTS {
1790 	public GisFeature getObject() {
1791 	    return new GisFeature();
1792 	}
1793     },
1794     S_HTL {
1795 	public GisFeature getObject() {
1796 	    return new Hotel();
1797 	}
1798     },
1799     S_HUT {
1800 	public GisFeature getObject() {
1801 	    return new GisFeature();
1802 	}
1803     },
1804     S_HUTS {
1805 	public GisFeature getObject() {
1806 	    return new GisFeature();
1807 	}
1808     },
1809     S_INSM {
1810 	public GisFeature getObject() {
1811 	    return new Military();
1812 	}
1813     },
1814     S_ITTR {
1815 	public GisFeature getObject() {
1816 	    return new GisFeature();
1817 	}
1818     },
1819     S_JTY {
1820 	public GisFeature getObject() {
1821 	    return new WaterBody();
1822 	}
1823     },
1824     S_LDNG {
1825 	public GisFeature getObject() {
1826 	    return new Quay();
1827 	}
1828     },
1829     S_LEPC {
1830 	public GisFeature getObject() {
1831 	    return new GisFeature();
1832 	}
1833     },
1834     S_LIBR {
1835 	public GisFeature getObject() {
1836 	    return new Library();
1837 	}
1838     },
1839     S_LOCK {
1840 	public GisFeature getObject() {
1841 	    return new WaterBody();
1842 	}
1843     },
1844     S_LTHSE {
1845 	public GisFeature getObject() {
1846 	    return new LightHouse();
1847 	}
1848     },
1849     S_MALL {
1850 	public GisFeature getObject() {
1851 	    return new Mall();
1852 	}
1853     },
1854     S_MAR {
1855 	public GisFeature getObject() {
1856 	    return new Port();
1857 	}
1858     },
1859     S_MFG {
1860 	public GisFeature getObject() {
1861 	    return new Factory();
1862 	}
1863     },
1864     S_MFGB {
1865 	public GisFeature getObject() {
1866 	    return new Factory();
1867 	}
1868     },
1869     S_MFGC {
1870 	public GisFeature getObject() {
1871 	    return new Factory();
1872 	}
1873     },
1874     S_MFGCU {
1875 	public GisFeature getObject() {
1876 	    return new Factory();
1877 	}
1878     },
1879     S_MFGLM {
1880 	public GisFeature getObject() {
1881 	    return new Factory();
1882 	}
1883     },
1884     S_MFGM {
1885 	public GisFeature getObject() {
1886 	    return new Factory();
1887 	}
1888     },
1889     S_MFGPH {
1890 	public GisFeature getObject() {
1891 	    return new Factory();
1892 	}
1893     },
1894     S_MFGQ {
1895 	public GisFeature getObject() {
1896 	    return new Factory();
1897 	}
1898     },
1899     S_MFGSG {
1900 	public GisFeature getObject() {
1901 	    return new Factory();
1902 	}
1903     },
1904     S_MKT {
1905 	public GisFeature getObject() {
1906 	    return new GisFeature();
1907 	}
1908     },
1909     S_ML {
1910 	public GisFeature getObject() {
1911 	    return new Mill();
1912 	}
1913     },
1914     S_MLM {
1915 	public GisFeature getObject() {
1916 	    return new Mine();
1917 	}
1918     },
1919     S_MLO {
1920 	public GisFeature getObject() {
1921 	    return new Factory();
1922 	}
1923     },
1924     S_MLSG {
1925 	public GisFeature getObject() {
1926 	    return new Factory();
1927 	}
1928     },
1929     S_MLSGQ {
1930 	public GisFeature getObject() {
1931 	    return new Factory();
1932 	}
1933     },
1934     S_MLSW {
1935 	public GisFeature getObject() {
1936 	    return new Mill();
1937 	}
1938     },
1939     S_MLWND {
1940 	public GisFeature getObject() {
1941 	    return new Mill();
1942 	}
1943     },
1944     S_MLWTR {
1945 	public GisFeature getObject() {
1946 	    return new Mill();
1947 	}
1948     },
1949     S_MN {
1950 	public GisFeature getObject() {
1951 	    return new Mine();
1952 	}
1953     },
1954     S_MNAU {
1955 	public GisFeature getObject() {
1956 	    return new Mine();
1957 	}
1958     },
1959     S_MNC {
1960 	public GisFeature getObject() {
1961 	    return new Mine();
1962 	}
1963     },
1964     S_MNCR {
1965 	public GisFeature getObject() {
1966 	    return new Mine();
1967 	}
1968     },
1969     S_MNCU {
1970 	public GisFeature getObject() {
1971 	    return new Mine();
1972 	}
1973     },
1974     S_MNDT {
1975 	public GisFeature getObject() {
1976 	    return new Mine();
1977 	}
1978     },
1979     S_MNFE {
1980 	public GisFeature getObject() {
1981 	    return new Mine();
1982 	}
1983     },
1984     S_MNMT {
1985 	public GisFeature getObject() {
1986 	    return new Monument();
1987 	}
1988     },
1989     S_MNN {
1990 	public GisFeature getObject() {
1991 	    return new GisFeature();
1992 	}
1993     },
1994     S_MNNI {
1995 	public GisFeature getObject() {
1996 	    return new Mine();
1997 	}
1998     },
1999     S_MNPB {
2000 	public GisFeature getObject() {
2001 	    return new Mine();
2002 	}
2003     },
2004     S_MNPL {
2005 	public GisFeature getObject() {
2006 	    return new Mine();
2007 	}
2008     },
2009     S_MNQ {
2010 	public GisFeature getObject() {
2011 	    return new Mine();
2012 	}
2013     },
2014     S_MNQR {
2015 	public GisFeature getObject() {
2016 	    return new Mole();
2017 	}
2018     },
2019     S_MNSN {
2020 	public GisFeature getObject() {
2021 	    return new Mine();
2022 	}
2023     },
2024     S_MOLE {
2025 	public GisFeature getObject() {
2026 	    return new Mole();
2027 	}
2028     },
2029     S_MSQE {
2030 	public GisFeature getObject() {
2031 	    return new Religious();
2032 	}
2033     },
2034     S_MSSN {
2035 	public GisFeature getObject() {
2036 	    return new Religious();
2037 	}
2038     },
2039     S_MSSNQ {
2040 	public GisFeature getObject() {
2041 	    return new Religious();
2042 	}
2043     },
2044     S_MSTY {
2045 	public GisFeature getObject() {
2046 	    return new Religious();
2047 	}
2048     },
2049     S_MTRO {
2050 	public GisFeature getObject() {
2051 	    return new MetroStation();
2052 	}
2053     },
2054     S_MUS {
2055 	public GisFeature getObject() {
2056 	    return new Museum();
2057 	}
2058     },
2059     S_NOV {
2060 	public GisFeature getObject() {
2061 	    return new Religious();
2062 	}
2063     },
2064     S_NSY {
2065 	public GisFeature getObject() {
2066 	    return new GisFeature();
2067 	}
2068     },
2069     S_OBPT {
2070 	public GisFeature getObject() {
2071 	    return new ObservatoryPoint();
2072 	}
2073     },
2074     S_OBS {
2075 	public GisFeature getObject() {
2076 	    return new GisFeature();
2077 	}
2078     },
2079     S_OBSR {
2080 	public GisFeature getObject() {
2081 	    return new GisFeature();
2082 	}
2083     },
2084     S_OILJ {
2085 	public GisFeature getObject() {
2086 	    return new GisFeature();
2087 	}
2088     },
2089     S_OILQ {
2090 	public GisFeature getObject() {
2091 	    return new GisFeature();
2092 	}
2093     },
2094     S_OILR {
2095 	public GisFeature getObject() {
2096 	    return new GisFeature();
2097 	}
2098     },
2099     S_OILT {
2100 	public GisFeature getObject() {
2101 	    return new GisFeature();
2102 	}
2103     },
2104     S_OILW {
2105 	public GisFeature getObject() {
2106 	    return new GisFeature();
2107 	}
2108     },
2109     S_OPRA {
2110 	public GisFeature getObject() {
2111 	    return new OperaHouse();
2112 	}
2113     },
2114     S_PAL {
2115 	public GisFeature getObject() {
2116 	    return new GisFeature();
2117 	}
2118     },
2119     S_PGDA {
2120 	public GisFeature getObject() {
2121 	    return new GisFeature();
2122 	}
2123     },
2124     S_PIER {
2125 	public GisFeature getObject() {
2126 	    return new GisFeature();
2127 	}
2128     },
2129     S_PKLT {
2130 	public GisFeature getObject() {
2131 	    return new Parking();
2132 	}
2133     },
2134     S_PMPO {
2135 	public GisFeature getObject() {
2136 	    return new GisFeature();
2137 	}
2138     },
2139     S_PMPW {
2140 	public GisFeature getObject() {
2141 	    return new GisFeature();
2142 	}
2143     },
2144     S_PO {
2145 	public GisFeature getObject() {
2146 	    return new PostOffice();
2147 	}
2148     },
2149     S_PP {
2150 	public GisFeature getObject() {
2151 	    return new PolicePost();
2152 	}
2153     },
2154     S_PPQ {
2155 	public GisFeature getObject() {
2156 	    return new PolicePost();
2157 	}
2158     },
2159     S_PRKGT {
2160 	public GisFeature getObject() {
2161 	    return new Parking();
2162 	}
2163     },
2164     S_PRKHQ {
2165 	public GisFeature getObject() {
2166 	    return new Parking();
2167 	}
2168     },
2169     S_PRN {
2170 	public GisFeature getObject() {
2171 	    return new Prison();
2172 	}
2173     },
2174     S_PRNJ {
2175 	public GisFeature getObject() {
2176 	    return new GisFeature();
2177 	}
2178     },
2179     S_PRNQ {
2180 	public GisFeature getObject() {
2181 	    return new Prison();
2182 	}
2183     },
2184     S_PS {
2185 	public GisFeature getObject() {
2186 	    return new Factory();
2187 	}
2188     },
2189     S_PSH {
2190 	public GisFeature getObject() {
2191 	    return new Factory();
2192 	}
2193     },
2194     S_PSTB {
2195 	public GisFeature getObject() {
2196 	    return new CustomsPost();
2197 	}
2198     },
2199     S_PSTC {
2200 	public GisFeature getObject() {
2201 	    return new CustomsPost();
2202 	}
2203     },
2204     S_PSTP {
2205 	public GisFeature getObject() {
2206 	    return new GisFeature();
2207 	}
2208     },
2209     S_PYR {
2210 	public GisFeature getObject() {
2211 	    return new Pyramid();
2212 	}
2213     },
2214     S_PYRS {
2215 	public GisFeature getObject() {
2216 	    return new Pyramid();
2217 	}
2218     },
2219     S_QUAY {
2220 	public GisFeature getObject() {
2221 	    return new GisFeature();
2222 	}
2223     },
2224     S_RECG {
2225 	public GisFeature getObject() {
2226 	    return new Golf();
2227 	}
2228     },
2229     S_RECR {
2230 	public GisFeature getObject() {
2231 	    return new GisFeature();
2232 	}
2233     },
2234     S_REST {
2235 	public GisFeature getObject() {
2236 	    return new Restaurant();
2237 	}
2238     },
2239     S_RHSE {
2240 	public GisFeature getObject() {
2241 	    return new GisFeature();
2242 	}
2243     },
2244     S_RKRY {
2245 	public GisFeature getObject() {
2246 	    return new GisFeature();
2247 	}
2248     },
2249     S_RLG {
2250 	public GisFeature getObject() {
2251 	    return new Religious();
2252 	}
2253     },
2254     S_RLGR {
2255 	public GisFeature getObject() {
2256 	    return new Religious();
2257 	}
2258     },
2259     S_RNCH {
2260 	public GisFeature getObject() {
2261 	    return new Ranch();
2262 	}
2263     },
2264     S_RSD {
2265 	public GisFeature getObject() {
2266 	    return new Rail();
2267 	}
2268     },
2269     S_RSGNL {
2270 	public GisFeature getObject() {
2271 	    return new Rail();
2272 	}
2273     },
2274     S_RSRT {
2275 	public GisFeature getObject() {
2276 	    return new GisFeature();
2277 	}
2278     },
2279     S_RSTN {
2280 	public GisFeature getObject() {
2281 	    return new RailRoadStation();
2282 	}
2283     },
2284     S_RSTNQ {
2285 	public GisFeature getObject() {
2286 	    return new RailRoadStation();
2287 	}
2288     },
2289     S_RSTP {
2290 	public GisFeature getObject() {
2291 	    return new Rail();
2292 	}
2293     },
2294     S_RSTPQ {
2295 	public GisFeature getObject() {
2296 	    return new Rail();
2297 	}
2298     },
2299     S_RUIN {
2300 	public GisFeature getObject() {
2301 	    return new GisFeature();
2302 	}
2303     },
2304     S_SCH {
2305 	public GisFeature getObject() {
2306 	    return new School();
2307 	}
2308     },
2309     S_SCHA {
2310 	public GisFeature getObject() {
2311 	    return new School();
2312 	}
2313     },
2314     S_SCHC {
2315 	public GisFeature getObject() {
2316 	    return new School();
2317 	}
2318     },
2319     S_SCHM {
2320 	public GisFeature getObject() {
2321 	    return new Military();
2322 	}
2323     },
2324     S_SCHN {
2325 	public GisFeature getObject() {
2326 	    return new School();
2327 	}
2328     },
2329     S_SHPF {
2330 	public GisFeature getObject() {
2331 	    return new GisFeature();
2332 	}
2333     },
2334     S_SHRN {
2335 	public GisFeature getObject() {
2336 	    return new Religious();
2337 	}
2338     },
2339     S_SHSE {
2340 	public GisFeature getObject() {
2341 	    return new GisFeature();
2342 	}
2343     },
2344     S_SLCE {
2345 	public GisFeature getObject() {
2346 	    return new GisFeature();
2347 	}
2348     },
2349     S_SNTR {
2350 	public GisFeature getObject() {
2351 	    return new GisFeature();
2352 	}
2353     },
2354     S_SPA {
2355 	public GisFeature getObject() {
2356 	    return new GisFeature();
2357 	}
2358     },
2359     S_SPLY {
2360 	public GisFeature getObject() {
2361 	    return new GisFeature();
2362 	}
2363     },
2364     S_SQR {
2365 	public GisFeature getObject() {
2366 	    return new GisFeature();
2367 	}
2368     },
2369     S_STBL {
2370 	public GisFeature getObject() {
2371 	    return new GisFeature();
2372 	}
2373     },
2374     S_STDM {
2375 	public GisFeature getObject() {
2376 	    return new Stadium();
2377 	}
2378     },
2379     S_STNB {
2380 	public GisFeature getObject() {
2381 	    return new GisFeature();
2382 	}
2383     },
2384     S_STNC {
2385 	public GisFeature getObject() {
2386 	    return new GisFeature();
2387 	}
2388     },
2389     S_STNE {
2390 	public GisFeature getObject() {
2391 	    return new GisFeature();
2392 	}
2393     },
2394     S_STNF {
2395 	public GisFeature getObject() {
2396 	    return new Forest();
2397 	}
2398     },
2399     S_STNI {
2400 	public GisFeature getObject() {
2401 	    return new GisFeature();
2402 	}
2403     },
2404     S_STNM {
2405 	public GisFeature getObject() {
2406 	    return new GisFeature();
2407 	}
2408     },
2409     S_STNR {
2410 	public GisFeature getObject() {
2411 	    return new GisFeature();
2412 	}
2413     },
2414     S_STNS {
2415 	public GisFeature getObject() {
2416 	    return new GisFeature();
2417 	}
2418     },
2419     S_STNW {
2420 	public GisFeature getObject() {
2421 	    return new GisFeature();
2422 	}
2423     },
2424     S_STPS {
2425 	public GisFeature getObject() {
2426 	    return new GisFeature();
2427 	}
2428     },
2429     S_THTR {
2430 	public GisFeature getObject() {
2431 	    return new Theater();
2432 	}
2433     },
2434     S_TMB {
2435 	public GisFeature getObject() {
2436 	    return new Cemetery();
2437 	}
2438     },
2439     S_TMPL {
2440 	public GisFeature getObject() {
2441 	    return new Religious();
2442 	}
2443     },
2444     S_TNKD {
2445 	public GisFeature getObject() {
2446 	    return new WaterBody();
2447 	}
2448     },
2449     S_TOWR {
2450 	public GisFeature getObject() {
2451 	    return new Tower();
2452 	}
2453     },
2454     S_TRIG {
2455 	public GisFeature getObject() {
2456 	    return new GisFeature();
2457 	}
2458     },
2459     S_TRMO {
2460 	public GisFeature getObject() {
2461 	    return new GisFeature();
2462 	}
2463     },
2464     S_UNIV {
2465 	public GisFeature getObject() {
2466 	    return new School();
2467 	}
2468     },
2469     S_USGE {
2470 	public GisFeature getObject() {
2471 	    return new Building();
2472 	}
2473     },
2474     S_VETF {
2475 	public GisFeature getObject() {
2476 	    return new GisFeature();
2477 	}
2478     },
2479     S_WALL {
2480 	public GisFeature getObject() {
2481 	    return new GisFeature();
2482 	}
2483     },
2484     S_WALLA {
2485 	public GisFeature getObject() {
2486 	    return new GisFeature();
2487 	}
2488     },
2489     S_WEIR {
2490 	public GisFeature getObject() {
2491 	    return new GisFeature();
2492 	}
2493     },
2494     S_WHRF {
2495 	public GisFeature getObject() {
2496 	    return new Quay();
2497 	}
2498     },
2499     S_WRCK {
2500 	public GisFeature getObject() {
2501 	    return new GisFeature();
2502 	}
2503     },
2504     S_WTRW {
2505 	public GisFeature getObject() {
2506 	    return new GisFeature();
2507 	}
2508     },
2509     S_ZNF {
2510 	public GisFeature getObject() {
2511 	    return new GisFeature();
2512 	}
2513     },
2514     S_ZOO {
2515 	public GisFeature getObject() {
2516 	    return new Zoo();
2517 	}
2518     },
2519     T_ASPH {
2520 	public GisFeature getObject() {
2521 	    return new Lake();
2522 	}
2523     },
2524     T_ATOL {
2525 	public GisFeature getObject() {
2526 	    return new GisFeature();
2527 	}
2528     },
2529     T_BAR {
2530 	public GisFeature getObject() {
2531 	    return new Bar();
2532 	}
2533     },
2534     T_BCH {
2535 	public GisFeature getObject() {
2536 	    return new Beach();
2537 	}
2538     },
2539     T_BCHS {
2540 	public GisFeature getObject() {
2541 	    return new Beach();
2542 	}
2543     },
2544     T_BDLD {
2545 	public GisFeature getObject() {
2546 	    return new GisFeature();
2547 	}
2548     },
2549     T_BLDR {
2550 	public GisFeature getObject() {
2551 	    return new GisFeature();
2552 	}
2553     },
2554     T_BLHL {
2555 	public GisFeature getObject() {
2556 	    return new GisFeature();
2557 	}
2558     },
2559     T_BLOW {
2560 	public GisFeature getObject() {
2561 	    return new GisFeature();
2562 	}
2563     },
2564     T_BNCH {
2565 	public GisFeature getObject() {
2566 	    return new GisFeature();
2567 	}
2568     },
2569     T_BUTE {
2570 	public GisFeature getObject() {
2571 	    return new GisFeature();
2572 	}
2573     },
2574     T_CAPE {
2575 	public GisFeature getObject() {
2576 	    return new GisFeature();
2577 	}
2578     },
2579     T_CFT {
2580 	public GisFeature getObject() {
2581 	    return new GisFeature();
2582 	}
2583     },
2584     T_CLDA {
2585 	public GisFeature getObject() {
2586 	    return new GisFeature();
2587 	}
2588     },
2589     T_CLF {
2590 	public GisFeature getObject() {
2591 	    return new Cliff();
2592 	}
2593     },
2594     T_CNYN {
2595 	public GisFeature getObject() {
2596 	    return new Canyon();
2597 	}
2598     },
2599     T_CONE {
2600 	public GisFeature getObject() {
2601 	    return new GisFeature();
2602 	}
2603     },
2604     T_CRDR {
2605 	public GisFeature getObject() {
2606 	    return new GisFeature();
2607 	}
2608     },
2609     T_CRQ {
2610 	public GisFeature getObject() {
2611 	    return new Cirque();
2612 	}
2613     },
2614     T_CRQS {
2615 	public GisFeature getObject() {
2616 	    return new Cirque();
2617 	}
2618     },
2619     T_CRTR {
2620 	public GisFeature getObject() {
2621 	    return new GisFeature();
2622 	}
2623     },
2624     T_CUET {
2625 	public GisFeature getObject() {
2626 	    return new GisFeature();
2627 	}
2628     },
2629     T_DLTA {
2630 	public GisFeature getObject() {
2631 	    return new GisFeature();
2632 	}
2633     },
2634     T_DPR {
2635 	public GisFeature getObject() {
2636 	    return new GisFeature();
2637 	}
2638     },
2639     T_DSRT {
2640 	public GisFeature getObject() {
2641 	    return new Desert();
2642 	}
2643     },
2644     T_DUNE {
2645 	public GisFeature getObject() {
2646 	    return new GisFeature();
2647 	}
2648     },
2649     T_DVD {
2650 	public GisFeature getObject() {
2651 	    return new GisFeature();
2652 	}
2653     },
2654     T_ERG {
2655 	public GisFeature getObject() {
2656 	    return new Desert();
2657 	}
2658     },
2659     T_FAN {
2660 	public GisFeature getObject() {
2661 	    return new GisFeature();
2662 	}
2663     },
2664     T_FORD {
2665 	public GisFeature getObject() {
2666 	    return new GisFeature();
2667 	}
2668     },
2669     T_FSR {
2670 	public GisFeature getObject() {
2671 	    return new GisFeature();
2672 	}
2673     },
2674     T_GAP {
2675 	public GisFeature getObject() {
2676 	    return new GisFeature();
2677 	}
2678     },
2679     T_GRGE {
2680 	public GisFeature getObject() {
2681 	    return new Gorge();
2682 	}
2683     },
2684     T_HDLD {
2685 	public GisFeature getObject() {
2686 	    return new Bay();
2687 	}
2688     },
2689     T_HLL {
2690 	public GisFeature getObject() {
2691 	    return new Hill();
2692 	}
2693     },
2694     T_HLLS {
2695 	public GisFeature getObject() {
2696 	    return new Hill();
2697 	}
2698     },
2699     T_HMCK {
2700 	public GisFeature getObject() {
2701 	    return new GisFeature();
2702 	}
2703     },
2704     T_HMDA {
2705 	public GisFeature getObject() {
2706 	    return new GisFeature();
2707 	}
2708     },
2709     T_INTF {
2710 	public GisFeature getObject() {
2711 	    return new GisFeature();
2712 	}
2713     },
2714     T_ISL {
2715 	public GisFeature getObject() {
2716 	    return new Island();
2717 	}
2718     },
2719     T_ISLF {
2720 	public GisFeature getObject() {
2721 	    return new Island();
2722 	}
2723     },
2724     T_ISLM {
2725 	public GisFeature getObject() {
2726 	    return new GisFeature();
2727 	}
2728     },
2729     T_ISLS {
2730 	public GisFeature getObject() {
2731 	    return new Island();
2732 	}
2733     },
2734     T_ISLT {
2735 	public GisFeature getObject() {
2736 	    return new Island();
2737 	}
2738     },
2739     T_ISLX {
2740 	public GisFeature getObject() {
2741 	    return new Island();
2742 	}
2743     },
2744     T_ISTH {
2745 	public GisFeature getObject() {
2746 	    return new Island();
2747 	}
2748     },
2749     T_KRST {
2750 	public GisFeature getObject() {
2751 	    return new GisFeature();
2752 	}
2753     },
2754     T_LAVA {
2755 	public GisFeature getObject() {
2756 	    return new GisFeature();
2757 	}
2758     },
2759     T_LEV {
2760 	public GisFeature getObject() {
2761 	    return new GisFeature();
2762 	}
2763     },
2764     T_MESA {
2765 	public GisFeature getObject() {
2766 	    return new GisFeature();
2767 	}
2768     },
2769     T_MND {
2770 	public GisFeature getObject() {
2771 	    return new Mound();
2772 	}
2773     },
2774     T_MRN {
2775 	public GisFeature getObject() {
2776 	    return new GisFeature();
2777 	}
2778     },
2779     T_MT {
2780 	public GisFeature getObject() {
2781 	    return new Mountain();
2782 	}
2783     },
2784     T_MTS {
2785 	public GisFeature getObject() {
2786 	    return new Mountain();
2787 	}
2788     },
2789     T_NKM {
2790 	public GisFeature getObject() {
2791 	    return new GisFeature();
2792 	}
2793     },
2794     T_NTK {
2795 	public GisFeature getObject() {
2796 	    return new GisFeature();
2797 	}
2798     },
2799     T_NTKS {
2800 	public GisFeature getObject() {
2801 	    return new GisFeature();
2802 	}
2803     },
2804     T_PAN {
2805 	public GisFeature getObject() {
2806 	    return new GisFeature();
2807 	}
2808     },
2809     T_PANS {
2810 	public GisFeature getObject() {
2811 	    return new GisFeature();
2812 	}
2813     },
2814     T_PASS {
2815 	public GisFeature getObject() {
2816 	    return new GisFeature();
2817 	}
2818     },
2819     T_PEN {
2820 	public GisFeature getObject() {
2821 	    return new GisFeature();
2822 	}
2823     },
2824     T_PENX {
2825 	public GisFeature getObject() {
2826 	    return new GisFeature();
2827 	}
2828     },
2829     T_PK {
2830 	public GisFeature getObject() {
2831 	    return new GisFeature();
2832 	}
2833     },
2834     T_PKS {
2835 	public GisFeature getObject() {
2836 	    return new GisFeature();
2837 	}
2838     },
2839     T_PLAT {
2840 	public GisFeature getObject() {
2841 	    return new GisFeature();
2842 	}
2843     },
2844     T_PLATX {
2845 	public GisFeature getObject() {
2846 	    return new GisFeature();
2847 	}
2848     },
2849     T_PLDR {
2850 	public GisFeature getObject() {
2851 	    return new GisFeature();
2852 	}
2853     },
2854     T_PLN {
2855 	public GisFeature getObject() {
2856 	    return new GisFeature();
2857 	}
2858     },
2859     T_PLNX {
2860 	public GisFeature getObject() {
2861 	    return new GisFeature();
2862 	}
2863     },
2864     T_PROM {
2865 	public GisFeature getObject() {
2866 	    return new GisFeature();
2867 	}
2868     },
2869     T_PT {
2870 	public GisFeature getObject() {
2871 	    return new GisFeature();
2872 	}
2873     },
2874     T_PTS {
2875 	public GisFeature getObject() {
2876 	    return new GisFeature();
2877 	}
2878     },
2879     T_RDGB {
2880 	public GisFeature getObject() {
2881 	    return new Beach();
2882 	}
2883     },
2884     T_RDGE {
2885 	public GisFeature getObject() {
2886 	    return new GisFeature();
2887 	}
2888     },
2889     T_REG {
2890 	public GisFeature getObject() {
2891 	    return new GisFeature();
2892 	}
2893     },
2894     T_RK {
2895 	public GisFeature getObject() {
2896 	    return new GisFeature();
2897 	}
2898     },
2899     T_RKFL {
2900 	public GisFeature getObject() {
2901 	    return new GisFeature();
2902 	}
2903     },
2904     T_RKS {
2905 	public GisFeature getObject() {
2906 	    return new GisFeature();
2907 	}
2908     },
2909     T_SAND {
2910 	public GisFeature getObject() {
2911 	    return new GisFeature();
2912 	}
2913     },
2914     T_SBED {
2915 	public GisFeature getObject() {
2916 	    return new GisFeature();
2917 	}
2918     },
2919     T_SCRP {
2920 	public GisFeature getObject() {
2921 	    return new GisFeature();
2922 	}
2923     },
2924     T_SDL {
2925 	public GisFeature getObject() {
2926 	    return new GisFeature();
2927 	}
2928     },
2929     T_SHOR {
2930 	public GisFeature getObject() {
2931 	    return new GisFeature();
2932 	}
2933     },
2934     T_SINK {
2935 	public GisFeature getObject() {
2936 	    return new GisFeature();
2937 	}
2938     },
2939     T_SLID {
2940 	public GisFeature getObject() {
2941 	    return new GisFeature();
2942 	}
2943     },
2944     T_SLP {
2945 	public GisFeature getObject() {
2946 	    return new GisFeature();
2947 	}
2948     },
2949     T_SPIT {
2950 	public GisFeature getObject() {
2951 	    return new GisFeature();
2952 	}
2953     },
2954     T_SPUR {
2955 	public GisFeature getObject() {
2956 	    return new GisFeature();
2957 	}
2958     },
2959     T_TAL {
2960 	public GisFeature getObject() {
2961 	    return new GisFeature();
2962 	}
2963     },
2964     T_TRGD {
2965 	public GisFeature getObject() {
2966 	    return new GisFeature();
2967 	}
2968     },
2969     T_TRR {
2970 	public GisFeature getObject() {
2971 	    return new GisFeature();
2972 	}
2973     },
2974     T_UPLD {
2975 	public GisFeature getObject() {
2976 	    return new GisFeature();
2977 	}
2978     },
2979     T_VAL {
2980 	public GisFeature getObject() {
2981 	    return new GisFeature();
2982 	}
2983     },
2984     T_VALG {
2985 	public GisFeature getObject() {
2986 	    return new GisFeature();
2987 	}
2988     },
2989     T_VALS {
2990 	public GisFeature getObject() {
2991 	    return new GisFeature();
2992 	}
2993     },
2994     T_VALX {
2995 	public GisFeature getObject() {
2996 	    return new GisFeature();
2997 	}
2998     },
2999     T_VLC {
3000 	public GisFeature getObject() {
3001 	    return new Volcano();
3002 	}
3003     },
3004     U_APNU {
3005 	public GisFeature getObject() {
3006 	    return new UnderSea();
3007 	}
3008     },
3009     U_ARCU {
3010 	public GisFeature getObject() {
3011 	    return new UnderSea();
3012 	}
3013     },
3014     U_ARRU {
3015 	public GisFeature getObject() {
3016 	    return new UnderSea();
3017 	}
3018     },
3019     U_BDLU {
3020 	public GisFeature getObject() {
3021 	    return new UnderSea();
3022 	}
3023     },
3024     U_BKSU {
3025 	public GisFeature getObject() {
3026 	    return new UnderSea();
3027 	}
3028     },
3029     U_BNCU {
3030 	public GisFeature getObject() {
3031 	    return new UnderSea();
3032 	}
3033     },
3034     U_BNKU {
3035 	public GisFeature getObject() {
3036 	    return new UnderSea();
3037 	}
3038     },
3039     U_BSNU {
3040 	public GisFeature getObject() {
3041 	    return new UnderSea();
3042 	}
3043     },
3044     U_CDAU {
3045 	public GisFeature getObject() {
3046 	    return new UnderSea();
3047 	}
3048     },
3049     U_CNSU {
3050 	public GisFeature getObject() {
3051 	    return new UnderSea();
3052 	}
3053     },
3054     U_CNYU {
3055 	public GisFeature getObject() {
3056 	    return new UnderSea();
3057 	}
3058     },
3059     U_CRSU {
3060 	public GisFeature getObject() {
3061 	    return new UnderSea();
3062 	}
3063     },
3064     U_DEPU {
3065 	public GisFeature getObject() {
3066 	    return new UnderSea();
3067 	}
3068     },
3069     U_EDGU {
3070 	public GisFeature getObject() {
3071 	    return new UnderSea();
3072 	}
3073     },
3074     U_ESCU {
3075 	public GisFeature getObject() {
3076 	    return new UnderSea();
3077 	}
3078     },
3079     U_FANU {
3080 	public GisFeature getObject() {
3081 	    return new UnderSea();
3082 	}
3083     },
3084     U_FLTU {
3085 	public GisFeature getObject() {
3086 	    return new UnderSea();
3087 	}
3088     },
3089     U_FRKU {
3090 	public GisFeature getObject() {
3091 	    return new UnderSea();
3092 	}
3093     },
3094     U_FRSU {
3095 	public GisFeature getObject() {
3096 	    return new UnderSea();
3097 	}
3098     },
3099     U_FRZU {
3100 	public GisFeature getObject() {
3101 	    return new UnderSea();
3102 	}
3103     },
3104     U_FURU {
3105 	public GisFeature getObject() {
3106 	    return new UnderSea();
3107 	}
3108     },
3109     U_GAPU {
3110 	public GisFeature getObject() {
3111 	    return new UnderSea();
3112 	}
3113     },
3114     U_GLYU {
3115 	public GisFeature getObject() {
3116 	    return new UnderSea();
3117 	}
3118     },
3119     U_HLLU {
3120 	public GisFeature getObject() {
3121 	    return new UnderSea();
3122 	}
3123     },
3124     U_HLSU {
3125 	public GisFeature getObject() {
3126 	    return new UnderSea();
3127 	}
3128     },
3129     U_HOLU {
3130 	public GisFeature getObject() {
3131 	    return new UnderSea();
3132 	}
3133     },
3134     U_KNLU {
3135 	public GisFeature getObject() {
3136 	    return new UnderSea();
3137 	}
3138     },
3139     U_KNSU {
3140 	public GisFeature getObject() {
3141 	    return new UnderSea();
3142 	}
3143     },
3144     U_LDGU {
3145 	public GisFeature getObject() {
3146 	    return new UnderSea();
3147 	}
3148     },
3149     U_LEVU {
3150 	public GisFeature getObject() {
3151 	    return new UnderSea();
3152 	}
3153     },
3154     U_MDVU {
3155 	public GisFeature getObject() {
3156 	    return new UnderSea();
3157 	}
3158     },
3159     U_MESU {
3160 	public GisFeature getObject() {
3161 	    return new UnderSea();
3162 	}
3163     },
3164     U_MNDU {
3165 	public GisFeature getObject() {
3166 	    return new UnderSea();
3167 	}
3168     },
3169     U_MOTU {
3170 	public GisFeature getObject() {
3171 	    return new UnderSea();
3172 	}
3173     },
3174     U_MTSU {
3175 	public GisFeature getObject() {
3176 	    return new UnderSea();
3177 	}
3178     },
3179     U_MTU {
3180 	public GisFeature getObject() {
3181 	    return new UnderSea();
3182 	}
3183     },
3184     U_PKSU {
3185 	public GisFeature getObject() {
3186 	    return new UnderSea();
3187 	}
3188     },
3189     U_PKU {
3190 	public GisFeature getObject() {
3191 	    return new UnderSea();
3192 	}
3193     },
3194     U_PLFU {
3195 	public GisFeature getObject() {
3196 	    return new UnderSea();
3197 	}
3198     },
3199     U_PLNU {
3200 	public GisFeature getObject() {
3201 	    return new UnderSea();
3202 	}
3203     },
3204     U_PLTU {
3205 	public GisFeature getObject() {
3206 	    return new UnderSea();
3207 	}
3208     },
3209     U_PNLU {
3210 	public GisFeature getObject() {
3211 	    return new UnderSea();
3212 	}
3213     },
3214     U_PRVU {
3215 	public GisFeature getObject() {
3216 	    return new UnderSea();
3217 	}
3218     },
3219     U_RAVU {
3220 	public GisFeature getObject() {
3221 	    return new UnderSea();
3222 	}
3223     },
3224     U_RDGU {
3225 	public GisFeature getObject() {
3226 	    return new UnderSea();
3227 	}
3228     },
3229     U_RDSU {
3230 	public GisFeature getObject() {
3231 	    return new UnderSea();
3232 	}
3233     },
3234     U_RFSU {
3235 	public GisFeature getObject() {
3236 	    return new UnderSea();
3237 	}
3238     },
3239     U_RFU {
3240 	public GisFeature getObject() {
3241 	    return new UnderSea();
3242 	}
3243     },
3244     U_RISU {
3245 	public GisFeature getObject() {
3246 	    return new UnderSea();
3247 	}
3248     },
3249     U_RMPU {
3250 	public GisFeature getObject() {
3251 	    return new UnderSea();
3252 	}
3253     },
3254     U_RNGU {
3255 	public GisFeature getObject() {
3256 	    return new UnderSea();
3257 	}
3258     },
3259     U_SCNU {
3260 	public GisFeature getObject() {
3261 	    return new UnderSea();
3262 	}
3263     },
3264     U_SCSU {
3265 	public GisFeature getObject() {
3266 	    return new UnderSea();
3267 	}
3268     },
3269     U_SDLU {
3270 	public GisFeature getObject() {
3271 	    return new UnderSea();
3272 	}
3273     },
3274     U_SHFU {
3275 	public GisFeature getObject() {
3276 	    return new UnderSea();
3277 	}
3278     },
3279     U_SHLU {
3280 	public GisFeature getObject() {
3281 	    return new UnderSea();
3282 	}
3283     },
3284     U_SHSU {
3285 	public GisFeature getObject() {
3286 	    return new UnderSea();
3287 	}
3288     },
3289     U_SHVU {
3290 	public GisFeature getObject() {
3291 	    return new UnderSea();
3292 	}
3293     },
3294     U_SILU {
3295 	public GisFeature getObject() {
3296 	    return new UnderSea();
3297 	}
3298     },
3299     U_SLPU {
3300 	public GisFeature getObject() {
3301 	    return new UnderSea();
3302 	}
3303     },
3304     U_SMSU {
3305 	public GisFeature getObject() {
3306 	    return new UnderSea();
3307 	}
3308     },
3309     U_SMU {
3310 	public GisFeature getObject() {
3311 	    return new UnderSea();
3312 	}
3313     },
3314     U_SPRU {
3315 	public GisFeature getObject() {
3316 	    return new UnderSea();
3317 	}
3318     },
3319     U_TERU {
3320 	public GisFeature getObject() {
3321 	    return new UnderSea();
3322 	}
3323     },
3324     U_TMSU {
3325 	public GisFeature getObject() {
3326 	    return new UnderSea();
3327 	}
3328     },
3329     U_TMTU {
3330 	public GisFeature getObject() {
3331 	    return new UnderSea();
3332 	}
3333     },
3334     U_TNGU {
3335 	public GisFeature getObject() {
3336 	    return new UnderSea();
3337 	}
3338     },
3339     U_TRGU {
3340 	public GisFeature getObject() {
3341 	    return new UnderSea();
3342 	}
3343     },
3344     U_TRNU {
3345 	public GisFeature getObject() {
3346 	    return new UnderSea();
3347 	}
3348     },
3349     U_VALU {
3350 	public GisFeature getObject() {
3351 	    return new UnderSea();
3352 	}
3353     },
3354     U_VLSU {
3355 	public GisFeature getObject() {
3356 	    return new UnderSea();
3357 	}
3358     },
3359     V_BUSH {
3360 	public GisFeature getObject() {
3361 	    return new GisFeature();
3362 	}
3363     },
3364     V_CULT {
3365 	public GisFeature getObject() {
3366 	    return new GisFeature();
3367 	}
3368     },
3369     V_FRST {
3370 	public GisFeature getObject() {
3371 	    return new Forest();
3372 	}
3373     },
3374     V_FRSTF {
3375 	public GisFeature getObject() {
3376 	    return new Forest();
3377 	}
3378     },
3379     V_GRSLD {
3380 	public GisFeature getObject() {
3381 	    return new GrassLand();
3382 	}
3383     },
3384     V_GRVC {
3385 	public GisFeature getObject() {
3386 	    return new GisFeature();
3387 	}
3388     },
3389     V_GRVO {
3390 	public GisFeature getObject() {
3391 	    return new GisFeature();
3392 	}
3393     },
3394     V_GRVP {
3395 	public GisFeature getObject() {
3396 	    return new GisFeature();
3397 	}
3398     },
3399     V_GRVPN {
3400 	public GisFeature getObject() {
3401 	    return new GisFeature();
3402 	}
3403     },
3404     V_HTH {
3405 	public GisFeature getObject() {
3406 	    return new GisFeature();
3407 	}
3408     },
3409     V_MDW {
3410 	public GisFeature getObject() {
3411 	    return new GisFeature();
3412 	}
3413     },
3414     V_OCH {
3415 	public GisFeature getObject() {
3416 	    return new GisFeature();
3417 	}
3418     },
3419     V_SCRB {
3420 	public GisFeature getObject() {
3421 	    return new GisFeature();
3422 	}
3423     },
3424     V_TREE {
3425 	public GisFeature getObject() {
3426 	    return new Tree();
3427 	}
3428     },
3429     V_TUND {
3430 	public GisFeature getObject() {
3431 	    return new GisFeature();
3432 	}
3433     },
3434     V_VIN {
3435 	public GisFeature getObject() {
3436 	    return new Vineyard();
3437 	}
3438     },
3439     V_VINS {
3440 	public GisFeature getObject() {
3441 	    return new Vineyard();
3442 	}
3443     },
3444     UNK_UNK {
3445 	public GisFeature getObject() {
3446 	    return new GisFeature();
3447 	}},
3448 	OSM_ADMBUILDING{
3449 	public GisFeature getObject() {
3450 	    return new AdmBuilding();
3451 	}},
3452 	OSM_BENCH{
3453 	public GisFeature getObject() {
3454 	    return new Bench();
3455 	}},
3456 	OSM_CINEMA{
3457 	public GisFeature getObject() {
3458 	    return new Cinema();
3459 	}},
3460 	OSM_DENTIST{
3461 	public GisFeature getObject() {
3462 	    return new Dentist();
3463 	}},
3464 	OSM_DOCTOR{
3465 	public GisFeature getObject() {
3466 	    return new Doctor();
3467 	}},
3468 	OSM_EMERGENCYPHONE{
3469 	public GisFeature getObject() {
3470 	    return new EmergencyPhone();
3471 	}},
3472 	OSM_FERRYTERMINAL{
3473 	public GisFeature getObject() {
3474 	    return new FerryTerminal();
3475 	}},
3476 	OSM_FIRESTATION{
3477 	public GisFeature getObject() {
3478 	    return new FireStation();
3479 	}},
3480 	OSM_FOUNTAIN{
3481 	public GisFeature getObject() {
3482 	    return new Fountain();
3483 	}},
3484 	OSM_FUEL{
3485 	public GisFeature getObject() {
3486 	    return new Fuel();
3487 	}},
3488 	OSM_NIGHTCLUB{
3489 	public GisFeature getObject() {
3490 	    return new NightClub();
3491 	}},
3492 	OSM_PHARMACY{
3493 	public GisFeature getObject() {
3494 	    return new Pharmacy();
3495 	}},
3496 	OSM_RENTAL{
3497 	public GisFeature getObject() {
3498 	    return new Rental();
3499 	}},
3500 	OSM_SHOP{
3501 	public GisFeature getObject() {
3502 	    return new Shop();
3503 	}},
3504 	OSM_SWIMMINGPOOL{
3505 	public GisFeature getObject() {
3506 	    return new SwimmingPool();
3507 	}},
3508 	OSM_TAXI{
3509 	public GisFeature getObject() {
3510 	    return new Taxi();
3511 	}},
3512 	OSM_TELEPHONE{
3513 	public GisFeature getObject() {
3514 	    return new Telephone();
3515 	}},
3516 	OSM_TOILET{
3517 	public GisFeature getObject() {
3518 	    return new Toilet();
3519 	}},
3520 	OSM_VENDINGMACHINE{
3521 	public GisFeature getObject() {
3522 	    return new VendingMachine();
3523 	}},
3524 	OSM_VETERINARY{
3525 	public GisFeature getObject() {
3526 	    return new Veterinary();
3527 	}},
3528 	UNKNOW {
3529 		public GisFeature getObject() {
3530 		    return new GisFeature();
3531 		}
3532     };
3533 
3534     /**
3535      * Returns the java Object that the feature class and feature code are
3536      * associated to. The goal is to defined java Object that regroup several
3537      * feature code. <u>note</u> : Having several object improve performance
3538      * for polymorphic request.<br/> because we restrict the search to the
3539      * specified type and we don't search in the whole {@link GisFeature}
3540      * 
3541      * @return The java Object the featureclass and feature code are associated
3542      *         to
3543      */
3544     public abstract GisFeature getObject();
3545 
3546     /**
3547      * The specified locale is used : <br/> If null the
3548      * {@link LocaleContextHolder} one is used (in a web context, it should be
3549      * the user locale).<br/> If no bundle exists for the
3550      * {@link LocaleContextHolder} : the {@link Locale#getDefault()} is used.<br/>
3551      * If no bundle for {@link Locale#getDefault()} exists : the
3552      * {@link #DEFAULT_FALLBACK_LOCALE} is used. <br/> <br/> If no translation
3553      * is found {@link #DEFAULT_TRANSLATION} is return
3554      * 
3555      * @param locale
3556      *                The Locale
3557      * @return The localized description
3558      */
3559     public String getLocalizedDescription(Locale locale) {
3560 	if (locale == null) {
3561 	    locale = LocaleContextHolder.getLocale();
3562 	}
3563 	String description = DEFAULT_TRANSLATION;
3564 	try {
3565 	    ResourceBundle bundle = ResourceBundle.getBundle(
3566 		    Constants.FEATURECODE_BUNDLE_KEY, locale);
3567 	    if (bundle.getLocale().getLanguage()!= locale.getLanguage()){
3568 	    	 bundle = ResourceBundle.getBundle(
3569 	    		    Constants.FEATURECODE_BUNDLE_KEY, LocaleContextHolder.getLocale());
3570 	    }
3571 		description = bundle.getString(
3572 		    this.toString());
3573 	} catch (MissingResourceException mse) {
3574 	    logger.warn(this.toString() + " is not localized for : " + locale);
3575 	    try {
3576 		description = ResourceBundle.getBundle(
3577 			Constants.FEATURECODE_BUNDLE_KEY,
3578 			DEFAULT_FALLBACK_LOCALE).getString(this.toString());
3579 	    } catch (RuntimeException e) {
3580 		logger
3581 			.warn(this.toString()
3582 				+ " is not localized for the default fallback translation: "
3583 				+ locale);
3584 		return description;
3585 	    }
3586 	} catch (RuntimeException rte) {
3587 	    logger.warn("Can not retrieve localized description for "
3588 		    + this.toString() + " for locale " + locale + " : "
3589 		    + rte.getMessage());
3590 	}
3591 	return description;
3592     }
3593 
3594     /**
3595      * The default Locale, If the thread one does not esxists
3596      */
3597     public static final Locale DEFAULT_FALLBACK_LOCALE = Locale.ENGLISH;
3598 
3599     /**
3600      * The default Translation. It is used when no translation is found for the
3601      * locale
3602      */
3603     public static final String DEFAULT_TRANSLATION = "Toponym";
3604 
3605     /**
3606      * A map that associate a string to a class
3607      */
3608     public final static Map<String, Class<? extends GisFeature>> entityClass = new HashMap<String, Class<? extends GisFeature>>();
3609 
3610     protected static final Logger logger = LoggerFactory
3611 	    .getLogger(FeatureCode.class);
3612 
3613     static {
3614 	Class<? extends GisFeature> clazz = null;
3615 	for (FeatureCode featurecode : FeatureCode.values()) {
3616 	    clazz = (Class<? extends GisFeature>) featurecode.getObject()
3617 		    .getClass();
3618 	    entityClass.put(clazz.getSimpleName().toLowerCase(), clazz);
3619 	}
3620 	logger.info("There is  " + entityClass.size() + " different entities");
3621 	if (logger.isInfoEnabled()) {
3622 	    for (String key : entityClass.keySet()) {
3623 		logger.info("entityclass contains " + key + "="
3624 			+ entityClass.get(key));
3625 	    }
3626 	}
3627     }
3628     // TODO v2 test that all feature code are localized
3629 }